java - 如何在 Android 中使用 Smack 4.1?

标签 java android eclipse xmpp smack

我在看这个答案 Using your own XMPP server for android chat app (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 中是否也会保持不变。

最佳答案

How do I include Smack 4.1 in my Android project in Eclipse?

就像您在 Eclipse Android 项目中包含任何其他 Java 库一样。通过将 .jar 文件放在 libs/ 目录中,Eclipse 的 Android 插件 Android Ant 构建系统将使它们可供项目类路径并将它们包含在生成的 .apk 中。

Smack 4.1 的特点是高度模块化。如果你想在 Android 上使用全功能的 Smack,你需要大约 11 个 .jar 文件。现在,您可以使用 gradle 来使用 Android Studio,这种方式包括 Smack,就像添加一样简单

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 自述文件告诉您使用 MavenToAndroidAnt Python3脚本,它将自动下载 Artifact 并在更新时删除旧的。如果你将它挂接到你的构建过程中,它几乎和使用 gradle 一样好而且还支持源附件

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

Will the code stay the same for Android?

是的,从 Smack 4.1 开始,Smack 就是 Smack。因此,无论您是否使用 Android,您都可以引用相同的 javadoc。请注意,aSmack 也是如此,因为它只是 Smack 到 Android 的一个端口。

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

关于java - 如何在 Android 中使用 Smack 4.1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26965506/

相关文章:

java - 从接口(interface)方法返回比较对象

java - Borderlayout gui 添加到边框

java - 错误: Failed to resolve: androidx.支持:support-v7:28. 0.0 Android Studio

android - OneSignal:推送通知不起作用

eclipse - 如何在 PyDev 的交互式控制台中换行?

java - 骰子模拟 - ImageView

Java 数组列表 : check if an id is in the list

java - 如何避免第三方库加载二进制资源的混合代码警告?

java - 从 Java 到 Python webapp2 的 HTTPPost 多部分(上传文件)

java - Web 应用程序上的 Eclipse tomcat 启动 java.lang.ClassNotFoundException : org. mockito.Mockito