如何在Android中使用Smack 4.1?

2022-09-01 19:14:08

我正在研究这个答案 使用您自己的XMPP服务器用于Android聊天应用程序(Smack API)来了解可用的XMPP API。Smack似乎是一个不错的选择。

在Smack 4.1之前,人们不得不依靠aSmack。从4.1开始,Smack将在Android上原生运行。我有几个“入门”问题。

问题 1:
如何在 Eclipse 的 Android 项目中包含 Smack 4.1?
此处的说明 https://github.com/igniterealtime/Smack/wiki/Smack-4.1-Readme-and-Upgrade-Guide 似乎是针对Android Studio的。

问题2:
Android的代码会保持不变吗?
我在这里指的是他们的官方文档:https://www.igniterealtime.org/builds/smack/docs/latest/documentation/index.html 我想知道
的是,API的使用是否也会在Android中保持不变。


答案 1

如何将 Smack 4.1 包含在 Eclipse 的 Android 项目中?

就像你会在Eclipse Android项目中包含任何其他Java库一样。通过将文件放在目录中,Eclipse的Android插件Android Ant构建系统将使它们可用于项目类路径,并将它们包含在结果中。.jarlibs/.apk

Smack 4.1的问题在于,它是高度模块化的。如果你想要一个功能齐全的Smack在Android上,你需要大约11个文件。现在,您可以使用Gradle使用Android Studio,这样包括Smack,就像添加一样简单.jar

dependencies {
  compile "org.igniterealtime.smack:smack-android:4.1.0-rc1"
  compile "org.igniterealtime.smack:smack-tcp:4.1.0-rc1"
  // optional features
  compile "org.igniterealtime.smack:smack-android-extensions:4.1.0-rc1"
}

和 gradle 将负责解决传递依赖关系。

但是,Android Studio或确切地说是Android gradle插件,不支持使用源附件1进行下载和调试。这是您在使用开源库时显然想要的。

例如,这就是我自己不使用gradle插件的原因之一。我当时无法开发Smack(我也喜欢Eclipse,但那是另一回事了)。

因此,我们又回到了与Eclipse/Ant合作的Android项目中。Smack 4.1 README告诉您使用MavenToAndroidAnt Python3脚本,该脚本将自动下载工件并在更新时删除旧工件。如果您将其挂接到构建过程中,它几乎与使用gradle一样好,但也支持源附件

当然,您也可以手动添加11个文件,但是谁愿意这样做并在其源存储库中拥有二进制文件呢?.jar

对于Android,代码会保持不变吗?

是的,从Smack 4.1开始,Smack就是Smack。因此,无论您是否使用Android,都可以参考相同的javadoc。请注意,对于aSmack来说也是如此,因为它只是Smack到Android的移植。

1:如果我错了,请纠正我,但上次我尝试是不可能的。与此同时,情况可能会好转。


答案 2

推荐