Android Studio2.1上搭建ndk环境 Android NDK: Aborting... . Stop.a

新手上路,请多包涵

我在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"

请问有有没有解决方法?

阅读 6k
3 个回答

可以先分析一下 apk 中是否有对应的 so。NDK 开发我觉得还是推荐使用 Android.mk 进行配置(或者 Cmake 的方式)。
只要在项目的 build.gradle 的 android 节点下添加

externalNativeBuild {
        ndkBuild {
            path 'src/main/jni/Android.mk'
        }
    }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进