如何在Android中使用Smack 4.1?

25
我正在查看这个答案 《为 Android 聊天应用使用自己的 XMPP 服务器(Smack API)》,以了解可用的 XMPP API。Smack 似乎是一个不错的选择。
在 Smack 4.1 之前,人们必须依赖于 aSmack。从 4.1 开始,Smack 将在 Android 上本地运行。我有几个“入门”问题。 问题1:
如何在 Eclipse 中将 Smack 4.1 包含在我的 Android 项目中?
这里的说明 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
我想知道的是,在 Android 中是否仍然可以使用该 API。

1
请查看 https://github.com/fangzhen/androidxmppclient - Naveen Tamrakar
@NaveenTamrakar 我不明白那与我的问题有什么关系。 - An SO User
http://im-a-developer-too.blogspot.ca/2014/04/creating-android-xmpp-client-using.html - Naveen Tamrakar
@NaveenTamrakar 这些是不同的库,如果我没记错的话。 - An SO User
它们都使用旧的过时的(a)Smack库。其中一个甚至来自2008年(已经6年了!)。 - Flow
1个回答

28
如何在Eclipse中将Smack 4.1包含到我的Android项目中? 像在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 README告诉您使用MavenToAndroidAnt Python3脚本,它将自动下载构件并在更新时删除旧构件。如果将其钩入构建过程中,则几乎可以像使用gradle一样好,同时还支持源码附件

当然,您也可以手动添加11个.jar文件,但是谁想这样做并在其源代码仓库中具有二进制文件呢?

代码是否对Android保持不变?

是的,从Smack 4.1开始,Smack就是Smack。因此,无论您是否在Android上,都可以引用相同的javadoc。请注意,这对于aSmack也是正确的,因为它只是将Smack移植到Android。

1:如果我错了,请纠正我,但上次我尝试时是不可能的。情况可能在此期间有所改善。


下载和使用源代码附件进行调试。那是什么? :) - An SO User
基本上:当调试器能够在通过库时展示它的源代码。 - Flow
@Flow 我成功在我的安卓设备上运行了它。构建器需要很长时间(约3秒),但之后速度很快。 - Ganesh Krishnan
@Flow 你好,我按照gradle文件中的方式添加了三个依赖项,但是同步后,所有三个依赖项都出现了“无法解析”的错误。该怎么办? - Thamilan S
嗨,我在使用smack 4.1时遇到了问题,请看一下https://dev59.com/HYrda4cB1Zd3GeqPSON0 - harveyslash
我们如何在 Smack 中进行 Bosch 连接?有什么想法请帮忙!! - Vishal Patoliya ツ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接