2016-03-20 16 views
1

私は、リポジトリのテレグラムメッセンジャーのカスタムバージョンで作業しています:https://github.com/DrKLO/Telegram。 Gradleのモジュールファイルでレルムライブラリーを追加すると、テレグラムメッセンジャークライアントは機能しません。

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

のGradleファイルで

:私はこのようなオンラインリポジトリでレルムを追加するとき、私はそれにMPAndroidChartとレルムを使用したいが、

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

このようなjarファイルを追加してコンパイルして実行しても、コンパイル済みのc/C++依存関係を追加していないときに私が以前に遭遇したエラーが発生します。

を手動で追加する: を私は「realm_libs」フォルダレルムライブラリつま先に関連するJARファイルとポンポンファイルを追加し、依存関係をGradleのために以下の行を追加しました。

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

私が遭遇したエラー:

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 

プロジェクトが成功裏にきれいにし、私は、レルムライブラリの輸入には問題がないが、私は、デバイス上でそれを実行すると、エラーがoccures。

+0

、Gradleの設定が変更されました。 https://realm.io/docs/java/latest/#installationを参照してください。あなたは 'compile 'io.realm:realm-android:0.88.2''を必要としませんが、' apply plugin:' realm-android''をあなたのアプリケーションのgradleに入れます。 – beeender

+0

私は答えを見つけた、私はここに投稿するつもりです。問題は、テレグラムは32ビットマシンしかサポートしていないため、レルムは32ビットモードでコンパイルする必要があるということです。私は、ここで指示されたようにビルドを分割することでそれを世話しました:http://realm.io/news/reducing-apk-size-native-libraries/ –

答えて

0

テレグラムは32ビットマシンのみをサポートし、レルムは32ビットモードでコンパイルする必要があります。

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

あなたはこのlinkからダウンロードセクションと4つのフォルダからjarファイルを取得する必要があります。これは、レルムの古いバージョン(https://static.realm.io/downloads/java/realm-java-0.87.4.zip)を使用して、ここで指示されたとおりのビルドを分割することによって行うことができます異なるアーキテクチャを示すディレクトリは、src/main/jniLibsディレクトリに追加する必要があります。

そして次は、モジュールのbuild.gradleファイルに追加する必要があります。レルム0.88.0ので

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') 
} 
関連する問題