1、先在src/main/目录下新建jni目录
2、这里偷个懒,直接从其他工程中拷贝Android.mk,Application.mk,demo.cpp到jni目录下
在Application.mk文件中,配置如下:
APP_ABI := armeabi armeabi-v7a arm64-v8a x86 x86_64 mips mips64
APP_PLATFORM := android-7
3、在local.properties文件中配置:ndk.dir=D\:\\android\\Androidstudio\\ndk\\android-ndk-r10e
4、在build.gradle文件中Android节点中的defaultConfig节点中下配置如下:
android { compileSdkVersion 22 buildToolsVersion "22.0.1" defaultConfig { applicationId "com.ycy.ndkdemo" minSdkVersion 14 targetSdkVersion 22 versionCode 1 versionName "1.0" ndk { moduleName "demo" ldLibs "log", "z", "m" abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86", "x86_64", "mips", "mips64" } }}
5、通过以上配置基本OK,然后可以在Java中调用了。
ps:这种通过c++源码方式调用native的,最终编译后生成的.so文件在app\build\intermediates\ndk\debug\lib
=================================================================================================
接下来介绍第二种调用c++的方式
1、这种方式是在so库已有的基础上的,直接将各个cpu平台上的so库文件放在src/main/jniLibs目录下(新建jniLibs目录)
2、在build.gradle文件中的Android节点中配置:
sourceSets { main { java.srcDirs = ['src/main/java', 'src/main/jniLibs'] } }
通过以上配置基本OK,然后可以尽情调用了。
最后补一句,这两种方式只能选择一种,不能两种一起用,否则会冲突的。
版权声明:本文为博主原创文章,未经博主允许不得转载。