4

ここの指示に従って、crashlytics ndk を構成しようとしています: https://fabric.io/downloads/gradle/ndk

ndk 部分を build.gradle に追加した後、具体的には次の行:

// NDK Kit
compile('com.crashlytics.sdk.android:crashlytics-ndk:1.1.2@aar') {
    transitive = true
}

私のアプリは、次のスタック トレースでクラッシュします。

11-11 18:48:36.779  28757-28757/com.example.myProj E/MyApp﹕ CustomExceptionHandler.uncaughtException: FATAL
    java.lang.UnsatisfiedLinkError: Couldn't load stlport_shared from loader dalvik.system.PathClassLoader[dexPath=/data/app/com.example.myProj-1.apk,libraryPath=/data/app-lib/com.example.myProj-1]: findLibrary returned null
            at java.lang.Runtime.loadLibrary(Runtime.java:365)
            at java.lang.System.loadLibrary(System.java:535)
            at net.sqlcipher.database.SQLiteDatabase.loadLibs(SQLiteDatabase.java:118)
            at net.sqlcipher.database.SQLiteDatabase.loadLibs(SQLiteDatabase.java:113)
            at com.example.myProj.Controller.AppWrapper.onCreate(AppWrapper.java:102)
            at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1000)
            at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4510)
            at android.app.ActivityThread.access$1300(ActivityThread.java:146)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1300)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5171)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:564)
            at dalvik.system.NativeStart.main(Native Method)
11-11 18:48:36.779  28757-28757/com.example.myProj E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.UnsatisfiedLinkError: Couldn't load stlport_shared from loader dalvik.system.PathClassLoader[dexPath=/data/app/com.example.myProj-1.apk,libraryPath=/data/app-lib/com.example.myProj-1]: findLibrary returned null
            at java.lang.Runtime.loadLibrary(Runtime.java:365)
            at java.lang.System.loadLibrary(System.java:535)
            at net.sqlcipher.database.SQLiteDatabase.loadLibs(SQLiteDatabase.java:118)
            at net.sqlcipher.database.SQLiteDatabase.loadLibs(SQLiteDatabase.java:113)
            at com.example.myProj.Controller.AppWrapper.onCreate(AppWrapper.java:102)
            at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1000)
            at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4510)
            at android.app.ActivityThread.access$1300(ActivityThread.java:146)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1300)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5171)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:564)
            at dalvik.system.NativeStart.main(Native Method)

crashlytics がクラスローダーのパスを変更しているようです。

何か案は?

4

1 に答える 1

7

私の問題は、他のアーキテクチャを削除することで解決されました。

参照: https://docs.fabric.io/android/crashlytics/ndk.html#universal-aar

参照先: http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits#TOC-ABIs-Splits

この特定の部分を build.gradle に追加すると、問題が解決しました:

splits {
        abi {
            enable true
            reset()
            include 'armeabi'
            universalApk true
        }
    }
于 2015-11-12T17:03:14.207 に答える