apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "25.0.1"
defaultConfig {
applicationId "com.qualcomm.svrapitest"
minSdkVersion 19
targetSdkVersion 22
versionCode 1
versionName "1.0.0"
ndk {
abiFilters "armeabi-v7a"//编译支持的平台
}
}
sourceSets {
main {
jni.srcDirs=[]
jniLibs.srcDirs 'src/main/libs' //指定lib的目录,编译时链接用
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
dependencies {
compile project(':lib')
}
这样编译出来的代码有个问题,就是不能够跟踪,ctrl+左键没有作用。应该是LLDB没有作用。
//ndk-build,已有Android.mk加入以上代码后,gradle才会真正的去编译ndk部分,之后C代码就可以跟踪了,可能编译一次通过之后,LLDB就启动了。编译器会自动包含同目录下的Application.mk文件。另外如果这样写是会有问题的,代码如下,尝试了很多次,这样写一直是编译不过的。
externalNativeBuild {
ndkBuild {
path file('src/main/jni/Android.mk')
}
}
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "25.0.1"
defaultConfig {
applicationId "com.qualcomm.svrapitest"
minSdkVersion 19
targetSdkVersion 22
versionCode 1
versionName "1.0.0"
externalNdkBuild{
ndkBuild{
abiFilters "armeabi-v7a"//编译 支持的平台
}
}
}
sourceSets {
main {
jni.srcDirs=[]
jniLibs.srcDirs 'src/main/libs' //指定lib的目录,编译时链接用
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
dependencies {
compile project(':lib')
}
gradle中加入以上代码后,代码就可以跟踪了,这部分脚本与buildTypes{}同级。这个功能在Android studio 2.2中才有,在第四篇中我们还会讲到。 另一个写法比较古老,比较复杂,有兴趣的可以自行研究。
ps:ndk其他的语法
ndk {经过测试,ndk{}里面的部分abiFilters有用,其他测试没什么效果。
moduleName "mtptest"
abiFilters "armeabi-v7a"//编译支持的平台
cFlags '-std=c++11 -fexceptions -fpermissive'
stl 'stlport_static'
}
以前一直找不到ABI_PLATFORM在哪里设置,今天发现ABI_PLATFORM = minSdkVersion 本篇采用了最常规的ndk的配置来编译ndk,下篇尝试用最新的cmake来编译。
http://blog.csdn.net/jasonwang18/article/details/55504906