2015-07-07 30 views
19

Sto cercando di implementare una chat con server ejabberd e libreria smack, ma ho difficoltà a integrare tutti i barattoli e le dipendenze di Smack. Sto usando Android Studio.Integrazione di Smack con il progetto Android Studio per l'applicazione di chat

mio build.gradle (modulo):

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' 

    } 

In primo luogo mi è stato sempre l'errore XMLpullparser poi ho aggiunto xpp3. Ma dopo ho aggiunto xpp3 sto ottenendo

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 (progetto):

// 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() 
    } 

} 

Domande:

come rimuovere l'errore o che cosa può essere la causa di errore. Potrei perdere qualche dipendenza?

L'uso di smock aumenta la dimensione dell'app. Posso acheive IM senza utilizzare alcuna libreria e scrittura codice lato server invece. Come usare la libreria ejabberd per node-js e l'app per android che parla con nodejs invece di ejabberd?

E sì che cosa:

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"); 

    } 


} 

sto ottenendo l'errore quando sto facendo funzionare la classe XMPPClient

risposta

0

Se uno fa ciò che è fatto per la questione lui/lei sarà in grado di integrare la biblioteca.

Stavo solo eseguendo il file non l'intero progetto, questo potrebbe sembrare un errore stupido ma dopo aver realizzato il progetto tutto ha funzionato bene.

1

Sembra è necessario aggiungere il supporto multidex. Aggiungere il supporto multidex nel file di build.gradle della tua applicazione

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' 
} 
0

cercare di cambiare le dipendenze e costruire con gradles

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'