2016-03-20 7 views
1

Ich arbeite an einer benutzerdefinierten Version des Telegram Messenger im Repository: https://github.com/DrKLO/Telegram. Ich möchte es MPAndroidChart und Reich verwenden, aber wenn ich fügen Sie den Bereich von Online-Repositories wie folgt aus:Telegram Messenger-Client funktioniert nicht, wenn ich Realm-Bibliothek hinzufügen

In der gradle Datei:

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath "io.realm:realm-gradle-plugin:0.88.2" 
    } 
} 

Im gradle Modul-Datei:

dependencies { 
    compile 'io.realm:realm-android:0.88.2' 
} 

repositories { 
    maven { url "https://jitpack.io" } 
    maven { // this is for realm-db 
     url 'http://oss.jfrog.org/artifactory/oss-snapshot-local' 
    } 
} 

Und selbst wenn ich die JAR-Datei wie folgt hinzufügen und kompilieren und ausführen, stoße ich auf den Fehler, den ich gemacht habe, als ich die kompilierten C/C++ - Abhängigkeiten nicht hinzugefügt habe.

Manuelles Hinzufügen: Ich habe das Glas und pom-Datei im Zusammenhang mit Reich Bibliothek toe die ‚realm_libs‘ -Ordner und hinzugefügt, um die folgenden Zeilen Abhängigkeiten hinzugefügt Gradle.

compile files('realm_libs/realm-android-0.80.2.jar') 

Der Fehler Ich begegne:

E/art: dlopen("/data/data/org.telegram.messenger.beta/files/lib/libtmessages.17loc.so", RTLD_LAZY) failed: dlopen failed: "/data/data/org.telegram.messenger.beta/files/lib/libtmessages.17loc.so" is 32-bit instead of 64-bit 
E/art: dlopen("/data/data/org.telegram.messenger.beta/files/lib/libtmessages.17loc.so", RTLD_LAZY) failed: dlopen failed: "/data/data/org.telegram.messenger.beta/files/lib/libtmessages.17loc.so" is 32-bit instead of 64-bit 
E/art: No implementation found for void org.telegram.tgnet.ConnectionsManager.native_setJava(boolean) (tried Java_org_telegram_tgnet_ConnectionsManager_native_1setJava and Java_org_telegram_tgnet_ConnectionsManager_native_1setJava__Z) 
E/AndroidRuntime: FATAL EXCEPTION: main 
        Process: org.telegram.messenger.beta, PID: 13900 
        java.lang.UnsatisfiedLinkError: No implementation found for void org.telegram.tgnet.ConnectionsManager.native_setJava(boolean) (tried Java_org_telegram_tgnet_ConnectionsManager_native_1setJava and Java_org_telegram_tgnet_ConnectionsManager_native_1setJava__Z) 
         at org.telegram.tgnet.ConnectionsManager.native_setJava(Native Method) 
         at org.telegram.messenger.ApplicationLoader.onCreate(ApplicationLoader.java:268) 
         at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1017) 
         at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4938) 
         at android.app.ActivityThread.access$1500(ActivityThread.java:182) 
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1576) 
         at android.os.Handler.dispatchMessage(Handler.java:111) 
         at android.os.Looper.loop(Looper.java:194) 
         at android.app.ActivityThread.main(ActivityThread.java:5717) 
         at java.lang.reflect.Method.invoke(Native Method) 
         at java.lang.reflect.Method.invoke(Method.java:372) 
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959) 
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754) 
I/Process: Sending signal. PID: 13900 SIG: 9 

Das Projekt reinigt erfolgreich und ich habe kein Problem mit dem Bereich Bibliothek Importe aber wenn ich es auf einem Gerät laufen die Fehler occures.

+0

Seit Realm 0.88.0, änderte sich die Einstellung gradle. Siehe https://realm.io/docs/java/latest/#installation. Sie brauchen nicht 'kompilieren' io.realm: realm-android: 0.88.2'', sondern 'apply plugin: 'realm-android' in der App-Größe. – beeender

+0

Ich habe die Antwort gefunden, ich werde es hier posten. Das Problem ist, dass Realm im 32-Bit-Modus kompiliert werden sollte, da Telegram nur 32-Bit-Maschinen unterstützt. Ich habe mich darum gekümmert, indem ich die Builds wie hier beschrieben aufgeteilt habe: http://realm.io/news/reducing-apk-size-native-libraries/ –

Antwort

0

Das Problem ist, dass Telegram nur 32-Bit-Maschinen unterstützt und Realm sollte im 32-Bit-Modus kompiliert werden. Dies kann durch Verwendung einer älteren Version (https://static.realm.io/downloads/java/realm-java-0.87.4.zip) des Bereichs durchgeführt werden und spalten die Builds wie hier angewiesen:

realm.io/news/reducing-apk-size-native-libraries

Sie haben die JAR-Dateien aus dem Download-Bereich bekommen von diesem link und die 4 Ordner aus dem Eclipse-Verzeichnis, die unterschiedliche Architekturen angeben, sollten dem Verzeichnis src/main/jniLibs hinzugefügt werden.

und die folgenden sollte der Modul build.gradle-Datei hinzugefügt werden:

android { 
    // Some other configuration here... 

    splits { 
     abi { 
      enable true 
      reset() 
      include 'x86', 'armeabi', 'armeabi-v7a', 'mips' 
      universalApk false 
     } 
    } 
} 

dependencies { 
    compile files('libs/realm-android-0.87.4.jar') 
} 
Verwandte Themen