我在Android Studio上集成ndk环境,直接用内置SDK tools下载的ndk,demo可以通过编译,但是一运行还没进入代码
就报这个错误:
build中是这样写的:
sourceSets.main {
res.srcDirs = ['src/main/res']
jniLibs.srcDirs = ['src/main/jniLibs']
jni.srcDirs = ['src/main/jni/']
}
buildTypes {
debug {
jniDebuggable = true
ndk {
moduleName "CipherUtils" //生成的so名字
abiFilters "armeabi", "armeabi-v7a", "x86" //输出指定三种abi体系结构下的so库。
}
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
ndk {
moduleName "CipherUtils" //生成的so名字
abiFilters "armeabi", "armeabi-v7a", "x86" //输出指定三种abi体系结构下的so库。
}
}
网上找了一些方法也都没效果:
试过换ndk没用
也试过修改成这样:
sourceSets.main{
jni.srcDirs=[]//据说这样写是防止自动生成,android.mk
}
这样是可以进入代码了,但是在System.loadLibrary("CipherUtils");的时候回崩溃,报找不到so的错误:
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/upyp.jnitest-2/base.apk"],nativeLibraryDirectories=[/data/app/upyp.jnitest-2/lib/arm64, /vendor/lib64, /system/lib64]]] couldn't find "libCipherUtils.so"
请问有有没有解决方法?
可以先分析一下 apk 中是否有对应的 so。NDK 开发我觉得还是推荐使用 Android.mk 进行配置(或者 Cmake 的方式)。
只要在项目的 build.gradle 的 android 节点下添加