在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版本
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++,实现:
 
就这么简单方便。
 
实现的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原生“运行/调试配置默认值:
使用你的debug调试你的NDK,默认设置debugable标志totrue.
 
 
  • 转译至http://ph0b.com/new-android-studio-ndk-support/
 
 
 
 

AndroidStudio支持新的NDK的操作使用的更多相关文章

  1. 如何给不支持新特性的浏览器打补丁(让老版本IE兼容新特性)

    一个非常棒的 JavaScript 框架叫做 Modernizr(http://www.modernizr. com),用于向缺少 HTML5/CSS3特性支持的浏览器打补丁.由 Alexander ...

  2. 是否以某字符串结尾 是否以某字符串开始 是否是整数 裁减字符串空格 是否是浮点数 是否所有字符为数字类型 是否为空 是否是EMAIL 是否是电话号码 身份证号码验证-支持新的带x身份证 日期验证

    /* 1.是否以某字符串结尾 endsWith(theStr,endStr) @param theStr:要判断的字符串 @param endStr:以此字符串结尾 @return boolean; ...

  3. 让Delphi的TRichEdit支持新标准

    先说明, 不是直接让TRichedit支持, 而是派生出一个类支持 原理就是, IDE自带的richedit使用的是2.0版本(RICHEDIT20A/RICHEDIT20W), 这个版本虽然支持图片 ...

  4. QAtomicInt支持四种类型的操作,Relaxed、Acquired、Release、Ordered

    Memory Ordering   Background 很久很久很久以前,CPU忠厚老实,一条一条指令的执行我们给它的程序,规规矩矩的进行计算和内存的存取. 很久很久以前, CPU学会了Out-Of ...

  5. JDK新特性关于流操作部分

    // array 工具类 可以用来快捷的将数组转化为list List<String> strings = Arrays.asList("zhongguo", &quo ...

  6. Java8 新特性之集合操作Stream

    Java8 新特性之集合操作Stream Stream简介 Java 8引入了全新的Stream API.这里的Stream和I/O流不同,它更像具有Iterable的集合类,但行为和集合类又有所不同 ...

  7. AndroidStudio 1.4配置NDK

    AndroidStudio(AS) 1.3之后已经支持NDK,这为NDK开发提供了极大的便利,不在需要配置各种头疼的MK文件,简单的九步就可完成配置.要说明的是,第一次配置AS一定要有耐心. 0,下载 ...

  8. ndk文件操作问题及小结

    最近在做文件传输,发现在android下用f系列的C库函数去读取文件文件大小会受到2G大小的约束,查阅了很久,最后只能去看google的libc源码,发现了以下几个问题: 1.bionic的libc是 ...

  9. 创建支持CRUD(增删改查)操作的Web API(二)

    一:准备工作 你可以直接下载源码查看 Download the completed project.     下载完整的项目 CRUD是指“创建(C).读取(R).更新(U)和删除(D)”,它们是四个 ...

随机推荐

  1. valgrind 内存检测与调用图生成

    http://blog.csdn.net/destina/article/details/6198443  感谢作者的分享! 一  valgrind是什么? Valgrind是一套Linux下,开放源 ...

  2. lucene合并测试的总结

    1 查询的总时间等于每个segment查询时间的总和 2 合并的步骤     (1)做flush操作的先生成一个新的segment     (2)检查在新segment之前已经存在的segment的数 ...

  3. spring事务的传播特性

    所谓事务传播行为就是多个事务方法相互调用时,事务如何在这些方法间传播.Spring 支持 7 种事务传播行为: PROPAGATION_REQUIRED 如果当前没有事务,就新建一个事务,如果已经存在 ...

  4. 经典排序算法总结与实现 ---python

    原文:http://wuchong.me/blog/2014/02/09/algorithm-sort-summary/ 经典排序算法在面试中占有很大的比重,也是基础,为了未雨绸缪,在寒假里整理并用P ...

  5. zookeeper的异常处理(Disconnected, SyncConnected, Expired)

    最近系统中使用zookeeper支持三个功能:全量/增量索引的消息通知:搜索活跃节点检查:分布式锁做索引切换同步. 线上服务对稳定性要求较高,包括各种异常情况,如网络中断导致连接断开,系统load过高 ...

  6. redis源码学习

    上帝禁区  http://blog.csdn.net/a600423444/article/details/8944601

  7. 使用post方式提交数据

    post提交代码 public class MainActivity extends Activity { @Override protected void onCreate(Bundle saved ...

  8. Oracle基础 物理备份 冷备份和热备份(转)

    一.冷备份介绍:    冷备份数据库是将数据库关闭之后备份所有的关键性文件包括数据文件.控制文件.联机REDO LOG文件,将其拷贝到另外的位置.此外冷备份也可以包含对参数文件和口令文件的备份,但是这 ...

  9. localStorage的跨与实现方案

    实现原理: HTML5 的 postMessage 为解决跨域页面通信提供了一套可控的机制, 而 localStorage 则提供了易用简洁的本地存储方案? 这两者结合起来,能否实现跨域的本地存储呢 ...

  10. oracle中的instr()

    INSTR (源字符串, 目标字符串, 起始位置, 匹配序号) 在Oracle/PLSQL中,instr函数返回要截取的字符串在源字符串中的位置.只检索一次,就是说从字符的开始 到字符的结尾就结束. ...