注:1.Android Studio 版本>=1.4.1(支持 debug ndk)
2.有时android studio的工程目录结构中看不到生成的so文件,这种情况并不是绝对没生成成功,此时so可能位于 工程目录\app\build\intermediates\binaries\debug\lib中
1、打开android studio创建一个空项目 包名自定义。
2、创建一个andorid native接口类,在类中声明native接口,(例如:public static native String getStringFromC())
3、打开终端android studio的Terminal,默认会进入到当前工程的根目录下
4 、进入java目录执行命令:
javah -d ../jni
com.example.NativeClass是native函数的所在的包名和类名,中间使用“.”号分开。执行成功后会在src目录下生成jni目录,并且jni的.h已经在里面了。
5、打开local.properties文件配置上ndk目录
ndk.dir=D\:\\software\\android-ndk-r11-windows-x86_64\\android-ndk-r11(这是我的ndk目录,根据自己的目录自定义))
6、打开build.gradle文件将
dependencies { classpath 'com.android.tools.build:gradle:1.3.0'
}
中的classpath改为 classpath 'com.android.tools.build:gradle-experimental:0.4.0'
7、打开gradle-wrapper.properties文件将
distributionUrl
=
https
\:
//services.gradle.org/distributions/gradle-2.4-all.zip
改为
distributionUrl=https\://services.gradle.org/distributions/
gradle
-2.8-all
.zip
8、将与src目录同级下的build.gradle文件改为
apply plugin: 'com.android.model.application'
model {
android {
compileSdkVersion = 23
buildToolsVersion = "23.0.1"
defaultConfig.with {
applicationId = "com.google.sample.helloandroidjni"
minSdkVersion.apiLevel = 22
targetSdkVersion.apiLevel = 23
versionCode = 1
versionName = "1.0"
}
}
android.buildTypes {
release {
minifyEnabled = false
proguardFiles.add(file('proguard-android.txt'))
}
}
}
9、配置ndk目录打开“File” > “Project Structure” > “SDK Location>“Android NDK Location”配置你的目录地址到sdk location中
10、将与src目录同级下的build.gradle文件加入ndk modulename
apply plugin: 'com.android.model.application' model { android { compileSdkVersion = 23 buildToolsVersion = "20.0.0" defaultConfig.with { applicationId = "com.google.sample.helloandroidjni" minSdkVersion.apiLevel = 18 targetSdkVersion.apiLevel = 23 versionCode = 1 versionName = "1.0" } } android.buildTypes { release { minifyEnabled = false proguardFiles.add(file('proguard-android.txt')) } } // New code android.ndk { moduleName = "hello_jni" } }11、点击 Run/Debug Configuration, 选择.
12、在c代码中加入断点
13、debug程序,没问题的话断点就打到了c代码中