Интеграция Smack с проектом Android Studio для чата

Я пытаюсь реализовать чат-мессенджер, используя ejabberd-сервер и smack-библиотеку, но с трудом интегрировать все банки и зависимости smack. Я использую android Studio.

Мой build.gradle (модуль):

apply plugin: 'com.android.application' android { compileSdkVersion 22 buildToolsVersion "22.0.1" defaultConfig { applicationId "com.example.nit.xmppclient" minSdkVersion 18 targetSdkVersion 22 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:22.2.0' compile "org.igniterealtime.smack:smack-android:4.1.0" compile "org.igniterealtime.smack:smack-tcp:4.1.0" compile "org.igniterealtime.smack:smack-android-extensions:4.1.0" compile 'org.ogce:xpp3:1.1.6' } 

Во-первых, я получал ошибку XMLpullparser, после чего добавил xpp3. Но после добавления xpp3 я получаю

 Error:Gradle: Execution failed for task ':app:preDexDebug'. > com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/usr/lib/jvm/java-7-openjdk-amd64/bin/java'' finished with non-zero exit value 1 

build.gradle (проект):

 // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.2.2' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { jcenter() maven { url 'https://oss.sonatype.org/content/repositories/snapshots' } mavenCentral() } } 

Вопросов:

Как удалить ошибку или что может быть причиной ошибки. Возможно, мне не хватает некоторой зависимости?

Использование smock увеличит размер приложения. Я могу получить IM без использования какой-либо библиотеки и написания кода на стороне сервера. Как использовать библиотеку ejabberd для node-js и приложение для Android, обращаясь к nodejs вместо ejabberd?

И да, я еще кое-что:

 public class XMPPClient { private static int port = 5222; private static String host = "my-ip"; private static String service = "my.com"; static XMPPTCPConnectionConfiguration conf = XMPPTCPConnectionConfiguration.builder() .setServiceName(service) .setPort(port) .setHost(host) .setCompressionEnabled(false).build(); static XMPPTCPConnection connection = new XMPPTCPConnection(conf); public static void register(String username, String password) throws SmackException.NotConnectedException, XMPPException.XMPPErrorException, SmackException.NoResponseException { AccountManager accountManager = AccountManager.getInstance(connection); accountManager.createAccount(username,password); } public static void main (String args[]) throws SmackException.NotConnectedException, XMPPException.XMPPErrorException, SmackException.NoResponseException { register("user", "password"); } } 

Я получаю сообщение об ошибке, когда я запускаю класс XMPPClient

Solutions Collecting From Web of "Интеграция Smack с проектом Android Studio для чата"

Кажется, вам нужно добавить поддержку multidex. Добавьте поддержку multidex в файл build.gradle вашего приложения

  android { compileSdkVersion 21 buildToolsVersion "21.1.0" defaultConfig { ... minSdkVersion 14 targetSdkVersion 21 ... // Enabling multidex support. multiDexEnabled true } ... } dependencies { compile 'com.android.support:multidex:1.0.0' } 

Если кто-то делает то, что сделано в вопросе, он сможет интегрировать библиотеку.

Я просто запускал файл не весь проект, это может показаться глупой ошибкой, но после создания проекта все отлично работало.

Попробуйте изменить свои зависимости и построить с помощью градиентов

 compile 'org.igniterealtime.smack:smack-android:4.1.6' compile 'org.igniterealtime.smack:smack-tcp:4.1.6' compile 'org.igniterealtime.smack:smack-im:4.1.6' compile 'org.igniterealtime.smack:smack-extensions:4.1.6'