Android Studio + NDK来实现JNI.
一、 Android Studo 环境配置如下:
(1).Android Studio下载LLDB+NDK并安装。
(2)配置安装好的NDK路径。
(3)配置一些快捷方式。
javah 用于生成头文件
Program:$JDKPath$/bin/javah
Parameters:-classpath . -jni -d $ModuleFileDir$/src/main/jni $FileClass$
Working directory:$ModuleFileDir$/src/main/Java
ndk-build 用于构建so包
注意:MAC/Linux用ndk-build,没有.cmd后缀
Program:C:\Develop\Android\sdk\ndk-bundle\ndk-build.cmd
Parameters:什么都不用填
Working directory:
$ProjectFileDir$/app/src/main
ndk-build clean 清除so包
注意:MAC/Linux用ndk-build,没有.cmd后缀
Program:C:\Develop\Android\sdk\ndk-bundle\ndk-build.cmd
Parameters:clean
Working directory:
$ProjectFileDir$/app/src/main
(4)配置调试工具
![](https://img-blog.csdn.net/20170613185440021?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzIwMTQyMTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
选择Defaults。
![](https://img-blog.csdn.net/20170613185502041?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzIwMTQyMTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20170613185848199?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzIwMTQyMTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
上面那个系统默认的是调试Java代码的。
下面那个是调试c/c++代码的。
二、配置项目
(1)gradle-experimental与gradle-wrapper相对应的版本
在build.gradle中
dependencies {
classpath "com.android.tools.build:gradle-experimental:0.7.0"
// classpath 'com.android.tools.build:gradle:2.1.0-alpha1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
在gradle-wrapper.properties中
#Mon Dec 28 10:00:20 PST 2015 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
gradle-experimental与gradle-wrapper相对应的版本号如下图
![版本号对比](https://github.com/freekite/Android-JNITest/raw/master/resources/8.png)
(2)修改app->build.gradle
//apply plugin: 'com.android.application' apply plugin: 'com.android.model.application'//使用新的 model { android { compileSdkVersion 24 buildToolsVersion "24.0.2" defaultConfig{ applicationId "com.silabs.blood_pressure_demo" versionCode 1 versionName "1.0" minSdkVersion.apiLevel 17 targetSdkVersion.apiLevel 24 } buildTypes { release { minifyEnabled false proguardFiles.add(file("proguard-rules.pro")) } } ndk { moduleName "ppgecgs" //<=====>LOCAL_MODULE := ppgecgs ldLibs.addAll(["android","log"]) // <==加载log stl "gnustl_static" //<===用C++静态库 } productFlavors { //加载app/src/main/libs // create("arm") { // ndk.abiFilters.add("armeabi") // } // create("arm7") { // ndk.abiFilters.add("armeabi-v7a") // } // create("arm8") { // ndk.abiFilters.add("arm64-v8a") // } create("all") //全部 } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:24.2.1' compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha1' testCompile 'junit:junit:4.12' androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2' androidTestCompile 'com.android.support.test:runner:0.5' androidTestCompile 'com.android.support:support-annotations:24.2.1' compile 'com.google.android.gms:play-services-appindexing:8.4.0' }
三、略jni知识,网上一大把资料。
使用配置好android studo javah工具。
使用配置好android studo ndk-build / ndk-build clean工具。