2015-07-07 26 views
19

Próbuję zaimplementować komunikator czatu za pomocą serwera ejabberd i biblioteki smack, ale trudno jest zintegrować wszystkie słoiki i zależności od smack. Korzystam z Android Studio.Integracja Smack z projektem Android Studio dla aplikacji czatu

Moja build.gradle (moduł):

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' 

    } 

Po pierwsze byłem coraz błędu XMLpullparser potem dodałem xpp3. Ale po dodaniu xpp3 jestem coraz

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

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

} 

Pytania:

Jak usunąć błąd lub co może być przyczyną błędu. Być może brakuje mi pewnej zależności?

Używanie funkcji Smock zwiększy rozmiar aplikacji. czy mogę korzystać z komunikatora bez używania biblioteki i pisania kodu po stronie serwera. Podobnie jak przy użyciu biblioteki ejabberd dla node-js i aplikacji na Androida rozmawiającej z nodejs zamiast ejabberd?

I tak I jeszcze jedno:

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

    } 


} 

otrzymuję błąd, gdy używam klasy XMPPClient

Odpowiedz

0

Jeśli ktoś robi to, co się robi w pytaniu on/ona będzie w stanie zintegrować biblioteka.

Po prostu tworzyłem plik, a nie cały projekt, może to zabrzmieć głupio, ale po zbudowaniu projektu wszystko działało dobrze.

1

Wydaje trzeba dodać multidex wsparcie. Dodaj multidex wsparcie w pliku build.gradle swojej aplikacji

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

spróbować zmienić swoje zależności i zbudować z 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'