java - ¿Cómo usar Smack 4.1 en Android?
eclipse xmpp (1)
Estaba buscando esta respuesta. Usando su propio servidor XMPP para la aplicación de chat de Android (Smack API) para conocer las API de XMPP disponibles. Smack parece una buena elección.
Antes de Smack 4.1 uno tenía que confiar en aSmack. A partir de 4.1, Smack se ejecutará de forma nativa en Android. Tengo un par de preguntas "para empezar".
Pregunta 1:
¿Cómo incluyo Smack 4.1 en mi proyecto de Android en Eclipse?
Las instrucciones aquí https://github.com/igniterealtime/Smack/wiki/Smack-4.1-Readme-and-Upgrade-Guide parecen ser para Android Studio
Pregunta 2:
¿El código seguirá siendo el mismo para Android?
Me refiero a su documentación oficial aquí: https://www.igniterealtime.org/builds/smack/docs/latest/documentation/index.html
Lo que me gustaría saber es si el uso de la API seguirá siendo el mismo en Android, también.
¿Cómo incluyo Smack 4.1 en mi proyecto de Android en Eclipse?
Como si incluyera cualquier otra biblioteca de Java en el proyecto Eclipse de Android. Al colocar los archivos .jar
en el directorio libs/
, el complemento de Android de Eclipse y el sistema de compilación Ant de Android los pondrá a disposición de la ruta de clase de los proyectos y los incluirá en el .apk
resultante.
Lo que pasa con Smack 4.1 es que está fuertemente modularizado. Si quieres un Smack con todas las funciones en Android, necesitas algo como 11 archivos .jar
. Ahora, puedes usar Android Studio usando gradle, de esta manera, incluyendo Smack es tan simple como agregar
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"
}
y Gradle se encargará de resolver las dependencias transitivas.
Pero , para ser preciso, Android Studio o el complemento gradle de Android no admiten la descarga ni la depuración con archivos adjuntos de origen 1 . Y esto es algo que claramente desea al trabajar con bibliotecas de código abierto.
Esa es, por ejemplo, una de las razones por las que no uso el plugin gradle. Entonces no podía desarrollar Smack (también me gusta Eclipse, pero esa es una historia diferente).
Así que volvemos a trabajar con Eclipse / Ant para nuestro proyecto de Android. Smack 4.1 README le indica que use el script MavenToAndroidAnt Python3 , que descargará automáticamente los artefactos y eliminará los antiguos en una actualización. Si lo conectas a tu proceso de construcción, es casi tan bueno como usar gradle, pero también es compatible con archivos adjuntos de origen .
Por supuesto, también puede agregar los 11 archivos .jar
manualmente, pero ¿quién quiere hacer eso y tener archivos binarios en su repositorio de origen?
¿El código seguirá siendo el mismo para Android?
Sí, comenzando con Smack 4.1, Smack es Smack. Así que puedes referirte al mismo javadoc, sin importar si estás en Android o no. Tenga en cuenta que esto también fue cierto para aSmack, ya que es solo un puerto de Smack to Android.
1: Corríjame si me equivoco, pero la última vez que lo intenté no fue posible. La situación puede mejorar mientras tanto.