Android 安卓sqlcipher+;jni

Android 安卓sqlcipher+;jni,android,android-studio,gradle,java-native-interface,sqlcipher-android,Android,Android Studio,Gradle,Java Native Interface,Sqlcipher Android,我正在我的应用程序中使用sqlcipher和一些本机代码。几乎所有的设备都能正常工作。问题只存在于Android 6.0.1的Nexus 5X上。 我得到一个错误: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/sqlite.sql3312test-1/base.apk"],nativeLibraryDirectories=[/data/app/sqli

我正在我的应用程序中使用sqlcipher和一些本机代码。几乎所有的设备都能正常工作。问题只存在于Android 6.0.1的Nexus 5X上。 我得到一个错误:

java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/sqlite.sql3312test-1/base.apk"],nativeLibraryDirectories=[/data/app/sqlite.sql3312test-1/lib/arm64, /data/app/sqlite.sql3312test-1/base.apk!/lib/arm64-v8a, /vendor/lib64, /system/lib64]]] couldn't find "libstlport_shared.so"
                                                                                 at java.lang.Runtime.loadLibrary(Runtime.java:367)
我使用gradle,我有依赖性:

dependencies {
    //..
    compile 'net.zetetic:android-database-sqlcipher:3.3.1-2@aar'
}
“我的主要活动”中的代码:

protected void onCreate(Bundle savedInstanceState) {
    //...
    SQLiteDatabase.loadLibs(this);
}
在local.properties中,我指定了ndk的路径:

ndk.dir=/Users/me/Desktop/ndk/android-ndk-r10e
我的gradle.properties:

android.useDeprecatedNdk=true


如果我删除jni目录,sqlcipher工作得很好。但是我需要这个目录。。。有人能帮我吗?

您自己的NDK代码支持哪些ABI?通常,这将位于
jni/
目录中的
Application.mk
中。如果您使用的是Gradle的NDK支持,那将出现在模块的
build.Gradle
文件中
NDK
defaultConfig
闭包中的
abiFilter
闭包中。谢谢@CommonWare,我添加了abiFilters“armeabi-v7a”、“armeabi”,现在它工作得很好!但是你能给我解释一下这种情况吗?为什么它只在Nexus上不起作用?好吧,既然我不知道你是从什么开始的,我真的无法回答这个问题。目前,Android的SQLCipher不适用于64位库,仅适用于32位库。而且,Android希望为所有NDK代码加载相同的CPU体系结构库。当应用程序自己的NDK代码(或其他库)想要使用64位库时,这会导致一些问题。不过,我不能肯定这就是你的问题所在。