web-dev-qa-db-fra.com

Comment utiliser Smack 4.1 dans Android?

Je regardais cette réponse tiliser votre propre serveur XMPP pour Android (API Smack) pour en savoir plus sur les API XMPP disponibles. Smack semble être un bon choix.

Avant Smack 4.1, il fallait compter sur aSmack. À partir de la version 4.1, Smack s'exécutera nativement sur Android. J'ai quelques questions "pour commencer".

Question 1:
Comment puis-je inclure Smack 4.1 dans mon Android dans Eclipse?
Les instructions ici https://github.com/igniterealtime/Smack/wiki/Smack-4.1-Readme-and-Upgrade-Guide semblent être pour Android Studio

Question 2:
Le code restera-t-il le même pour Android?
Je fais référence à leur documentation officielle ici: https://www.igniterealtime.org/builds/smack/docs/latest/documentation/index.html
Ce que j'aimerais savoir, c'est si l'utilisation de l'API restera la même dans Android également.

25
Little Child

Comment puis-je inclure Smack 4.1 dans mon projet Android dans Eclipse?

Comme si vous incluiez toute autre bibliothèque Java dans Eclipse Android. En mettant le .jar fichiers dans le libs/ répertoire, le Android plugin d'Eclipse et le Android Ant build le système les mettra à la disposition du chemin de classe du projet et les inclura dans le .apk.

Le problème avec Smack 4.1 est qu'il est fortement modulaire. Si vous voulez un Smack complet sur Android vous avez besoin d'environ 11 .jar des dossiers. Maintenant, vous pouvez utiliser Android Studio en utilisant gradle, de cette façon, y compris Smack, c'est aussi simple que d'ajouter

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"
}

et gradle se chargera de résoudre les dépendances transitives.

Mais , Android Studio, ou le Android plugin gradle pour être précis, ne prend pas en charge le téléchargement et le débogage avec les pièces jointes source1. Et c'est quelque chose que vous voulez clairement lorsque vous travaillez avec des bibliothèques open source.

C'est par exemple l'une des raisons pour lesquelles je n'utilise pas moi-même le plugin gradle. Je n'ai pas pu développer Smack à l'époque (j'aime aussi Eclipse, mais c'est une autre histoire).

Nous sommes donc de retour à travailler avec Eclipse/Ant pour notre Android. Le Smack 4.1 README vous dit d'utiliser le MavenToAndroidAnt Python = script, qui téléchargera automatiquement les artefacts et supprimera les anciens lors d'une mise à jour. Si vous le connectez à votre processus de construction, c'est presque aussi bien que d'utiliser gradle mais prend également en charge les pièces jointes source .

Bien sûr, vous pouvez également ajouter les 11 .jar fichiers manuellement, mais qui veut le faire et avoir des binaires dans son référentiel source?

Le code restera-t-il le même pour Android?

Oui, à partir de Smack 4.1, Smack est Smack. Vous pouvez donc vous référer au même javadoc, peu importe si vous êtes sur Android ou non. Notez que cela était également vrai pour aSmack, car il s'agit simplement d'un port de Smack pour Android.

1: Corrigez-moi si je me trompe, mais la dernière fois que j'ai essayé, ce n'était pas possible. Entre-temps, la situation s'est peut-être améliorée.

28
Flow