首页 > 技术文章 > AndroidStudio支持新的NDK的操作使用

zhuyuliang 2015-11-30 14:12 原文


在2015的Google I / O大会,5月底,谷歌宣布了一项新的支持由Android NDK Studio 1.3,Jetbrains CLion集成功能,Android gradle插件。这种支持只在7月已经发布,虽然很有前途,还是在沉重的发展。

新的工具包支持需要使用Android Studio 1.3 RC1 +和Android gradle-experimental插件。

gradle-experimental插件需要使用gradle - 2.6或更高版本。
1.应用设置gradle版本
gradle-2-5
2.文本设置gradle版本
gradle/wrapper/gradle-wrapper.properties:
distributionUrl=https\://services.gradle.org/distributions/gradle-2.6-all.zip
然后,改变对android的引用gradle新gradle-experimental插件,插件。/ build.gradle:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
 
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle-experimental:0.3.0-alpha5'
}
}
你需要修改build.gradle文件来使用这些新的插件。这是相同的配置的一个例子,老的DSL(顶部)和新(底部):
old DSL
apply plugin: 'com.android.application'
 
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
 
defaultConfig {
applicationId "com.ph0b.example"
minSdkVersion 15
targetSdkVersion 23
versionCode 4
versionName "1.0.1"
 
ndk {
moduleName "mymodule"
ldLibs "log"
stl "gnustl_static"
cFlags "-std=c++11 -fexceptions"
}
}
 
signingConfigs {
release {
storeFile file(STORE_FILE)
storePassword STORE_PASSWORD
keyAlias KEY_ALIAS
keyPassword KEY_PASSWORD
}
}
 
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.txt'
signingConfig signingConfigs.release
}
debug {
jniDebuggable true
}
}
}
 
dependencies {
compile 'com.android.support:support-v4:23.0.1'
compile fileTree(dir: 'libs', include: ['*.jar'])
}

 

new DSL
apply plugin: 'com.android.model.application'
 
model {
android {
compileSdkVersion = rootProject.ext.compileSdkVersion
buildToolsVersion = rootProject.ext.buildToolsVersion
 
defaultConfig.with {
applicationId = "com.ph0b.example"
minSdkVersion.apiLevel = 15
targetSdkVersion.apiLevel = 23
versionCode = 4
versionName = "1.0.1"
}
}
 
android.ndk {
moduleName = "mymodule"
ldLibs += ['log']
cppFlags += "-std=c++11"
cppFlags += "-fexceptions"
stl = 'gnustl_shared'
}
 
android.signingConfigs {
create("release") {
keyAlias = KEY_ALIAS
keyPassword = STORE_PASSWORD
storeFile = file(STORE_FILE)
storePassword = KEY_PASSWORD
}
}
 
android.buildTypes {
release {
minifyEnabled = true
shrinkResources = true
proguardFiles += file('proguard-rules.txt')
// signingConfig = signingConfigs.release //not activated yet because of https://code.google.com/p/android/issues/detail?id=182249
}
}
}
 
dependencies {
compile 'com.android.support:support-v4:23.0.1'
compile fileTree(dir: 'libs', include: ['*.jar'])
}

 

总的改变在所有android的声明在modle{}内,各个变量的赋值使用显示的"=",数组不能被复写(用+=),变量和其他新配置必须使用声明''创建()'比如xxxSdkVersion改为xxxSdkVersion.apiLevel属性。
你可以在DSL进行配置NDK,默认就可以不使用Android.mk老配置了.
 
开始新的c++ / NDK支持AndroidStudio
1.首先在build.gradle配置NDK模块的声明来激活c++ / NDK支持
model {
//...
android.ndk {
moduleName = "mymodule"
}
}
2.完成这步你就可以在Java文件下创建一个方法带Native关键字,并且按ALT+Enter来生成C++,实现:
AS-ndk-demo
 
就这么简单方便。
 
实现的cpp文件将被添加在jni文件夹中。
 
为了使用NDK模块,这里google提供了github的例子https://github.com/googlesamples/android-ndk
 
下面是你配置ndk需要的所有配置:
android.ndk {
moduleName = "mymodule"
ldLibs += ['log']
ldFlags += ""
toolchain = "clang"
toolchainVersion = "3.9"
abiFilters += "x86"
CFlags += ""
cppFlags += ""
debuggable = false
renderscriptNdkMode = false
stl = "system"
platformVersion = 15
}

 

NDK项目的调试
 
Android Studio 1.3 +支持LLDB和GDB后端的调试功能,创建和使用一个新的从Android原生“运行/调试配置默认值:
native-debug-config
使用你的debug调试你的NDK,默认设置debugable标志totrue.
 
 
  • 转译至http://ph0b.com/new-android-studio-ndk-support/
 
 
 
 

推荐阅读