1. gradle-ex
2. ndk开发包
3. 项目目录结构
4. lldb调试器

1. 一般来说gradle不是必需的,gradle也是可以进行ndk编译的,然而你需要在编译时使用更多(多于一个)c++编译选项时,以及让IDE可以使用lldb进行调试,或者是针对ndk开发和编译有更好的支持时,gradle-ex就是你所需要的。
gradle-ex的ex不是扩展而是experimental实验非正式。它对ndk相关的配置进行了增强,同时又语法不兼容gradle,并且在ndk相关以外的配置沿着的是gradle的语法。也就是gradle-ex并非完全全新,只对ndk相关进行改动,并且改动的地方与原来语法不兼容。gradle默认是废用ndk扩展的,需要手动修改开启支持。gradle对ndk的编译选项认为是cFlags,并且只能使用一个编译选项,而gradle-ex不再有cFlags,取代之的是cppFlags。gradle和gradle-ex对于ndk的配置的属性路径编排不一致,也就是gradle-ex对部分属性路径进行了重新的编排。gradle-ex中字符串和数组的赋值使用了新的语法。gradle和gradle-ex不对你的gradle脚本进行严格的语法检查,只会在gradle作业可错时报怨,你就自己慢慢去想到底哪里有问题吧。
使用gradle-ex,需要在Top-level build.gradle的buildscript.dependencies.classpath修改成com.andraoid.tools.build:gradle-experimental:0.7.0-alphal。

2. ndk开发包,包含了必要的交叉编译工具和平台导出的头文件和最小运行链接文件等。可以通过IDE配置选用Tools->System Settings->Android SDK->SDK Tools->NDK,让IDE自行更新下载。或者将离线压缩包解压到你的${ANDROID_SDK}目录下ndk-bundle子目录。
如果IDE未能正确识别NDK路径,可以利用任一个项目,对其local.properties文件进行NDK_PATH的配置,并且同步让IDE去执行配置适配。

3. gradle进行编译时依赖严格的目录结构。
使用ndk-build命令进行编译时,ndk-build需要搜索jni目录,如果没有jni目录,ndk-build就会以为没有需要编译的项目。
同样使用gradle或gradle-ex,它们也固定的搜索目录路径。
一般地在src目录下:

app/build/intermediates/binaries/debug/${HOST_ARCH}/lib        jni项目需要生成的库文件。
app/build/intermediates/jniLibs/${HOST_ARCH}/debug           源代码jniLibs目录下的全部内容将会被复制到这里,第三方链接库。
app/build/intermediates/objectFiles                     源代码base目录下的全部内容将会被复制到这里,本项目源代码生成的中间文件。
app/build/intermediates/transforms/mergeJniLibs/${HOST_ARCH}/.../lib   将jni项目生成的库文件,以及放在jniLibs备用并被需要链接上的库文件,合并目录。
                                      也就是模拟器加载jni链接库的目录。
app/libs              导入jar包的目录
app/src/main/java          java代码

app/src/main/java/jni         native方法生成的c头文件
app/src/main/jni           所有c/c++源代码,以及第三方库的开发头文件
app/src/main/jniLibs        所有jni目录下代码所链接到的第三方库链接文件

4. lldb调用器,可以可以通过IDE配置选用Tools->System Settings->Android SDK->SDK Tools->lldb,让IDE自行更新下载。或者将离线压缩包解压到你的${ANDROID_SDK}目录下ndk-bundle子目录。
gradle-ex自动会建立起lldbserver远程调试连接,所以虽然使用了lldb调试器,但却是远程调试,使用的时候也有许多支持不好,比栈帧选用命令不起效,线程选用命令也不起效等。

使用Android Studio进行ndk开发的准备的更多相关文章

  1. 使用Android Studio进行NDK开发

    Step1:创建native方法 很easy,仅仅须要给定义好的方法加上native关键词就可以 注意:由于该方法的详细实现是在c++中详细实现的.所以相似于接口方法不须要加{}. Step2:生成c ...

  2. Android Studio C/C++开发环境配置

    Android Studio C/C++开发环境配置  我的开发环境 : Win 10 + android studio 1.5   一, 安装NDK 开发环境: 1.  Settings -> ...

  3. 【Android Studio安装部署系列】二十五、Android studio使用NDK生成so文件和arr文件

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 Android Studio使用ndk的简单步骤. NDK环境搭建 下载NDK 下载链接:https://developer.and ...

  4. Android studio 使用NDK工具实现JNI编程

    前言: Android开发中常常会使用到第三方的.so库.在使用.so库的时候就要用到JNI编程.JNI是Java Native Interface的缩写.它提供了若干的API实现了Java和其它语言 ...

  5. Android Studio 之 NDK篇

    由于工作内容的关系,对于NDK的工作涉及比较广(保密性,安全性),所以本章内容讲述一下NDK的基本使用过程. 网上也有很多这样的教程或者描述,但描述的并不完全 开发工具:Android Studio ...

  6. Mac下Android studio 之NDK配置教程(一)

    Mac下Android studio 之NDK配置教程(一) 1.概述 近期项目全线转移到Mac下使用使用Android studio开发. 遇到关键代码封装到 ***native***层,此时在wi ...

  7. IDEA插件(Android Studio插件)开发示例代码及bug解决

    IDEA插件(Android Studio插件)开发示例代码及bug解决 代码在actionPerformed方法中,有个AnActionEvent e 插件开发就是要求我们复写上述的这个方法即可,在 ...

  8. 用Android studio进行 OpenCV 开发的第一个项目

    我的天! 折腾了好久终于搭建成功了第一个项目. 项目环境: Windows 7  家庭普通版  64位 Android studio 1.5.1 OpenCV-2.4.9-android-sdk 基于 ...

  9. Android studio 百度地图开发(3)地图导航

    Android studio 百度地图开发(3)地图导航 email:chentravelling@163.com 开发环境:win7 64位,Android Studio,请注意是Android S ...

随机推荐

  1. Tomcat 的单机多实例配置

    有时候需要在一个服务器上部署多个Tomcat,通过不同的端口进行区分,比如,反向代理.但是不想简单的通过复制Tomcat来实现,这样既不方便以后的升级也不方便管理,那么这时候就需要配置Tomcat的单 ...

  2. 如何通过 Docker 部署 Logstash 同步 Mysql 数据库数据到 ElasticSearch

    在开发过程中,我们经常会遇到对业务数据进行模糊搜索的需求,例如电商网站对于商品的搜索,以及内容网站对于内容的关键字检索等等.对于这些高级的搜索功能,显然数据库的 Like 是不合适的,通常我们采用 E ...

  3. 22.Linux定时任务

    1.计划任务时间管理 参数 含义 -e 编辑定时任务 -l 查看定时任务 -r 删除定时任务 -u 指定其他用户 \* 表示任意的(分.时.日.月.周)时间都执行 \- 表示一个时间范围段, 如5-7 ...

  4. Linux进程和线程

    一.进程产生的方式 1.描述进程的ID号通常叫做PID,即进程ID,PID的变量类型为pid_t. 2.getpid(void)返回当前进程的ID号,getppid(void)返回当前进程的父进程的I ...

  5. Mysql数据库(三)Mysql表结构管理

    一.MySQL数据类型 1.数字类型 (1)整数数据类型包括TINYINT/BIT/BOOL/SMALLINT/MEDIUMINT/INT/BIGINT (2)浮点数据类型包括FLOAT/DOUBLE ...

  6. Redis(七)Redis的噩梦:阻塞

    为什么说阻塞是Redis的噩梦: Redis是典型的单线程架构,所有的读写操作都是在一条主线程中完成的.当Redis用于高并发场景时,这条线程就变成了它的生命线.如果出现阻塞,哪怕是很短时间,对于应用 ...

  7. Dom对象更改文档结构.html

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. 通过CSS3实现圆形头像显示

    很久没更新博客了,因为比较菜,也没什么能在上面分享的.作为新手,马上要毕业找工作了,最近又在重新学习web的一些知识,刚刚学到CSS3,跟大家分享一些比较有趣的知识.今天分享的是利用CSS实现圆形头像 ...

  9. BOOL,int,float,指针变量 与“零值”比较的if语句

    分别给出BOOL,int,float,指针变量 与“零值”比较的 if 语句(假设变量名为var) 解答: BOOL型变量:if(!var) int型变量: if(var==0) float型变量: ...

  10. access技巧 access源码 这里都可找到哦

    这个网站不错,有很多access技巧 access源码 还有access公开课 access免费培训 access教程 大家要多看看哦: http://www.office-cn.net access ...