使用Android Studio进行ndk开发的准备
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开发的准备的更多相关文章
- 使用Android Studio进行NDK开发
Step1:创建native方法 很easy,仅仅须要给定义好的方法加上native关键词就可以 注意:由于该方法的详细实现是在c++中详细实现的.所以相似于接口方法不须要加{}. Step2:生成c ...
- Android Studio C/C++开发环境配置
Android Studio C/C++开发环境配置 我的开发环境 : Win 10 + android studio 1.5 一, 安装NDK 开发环境: 1. Settings -> ...
- 【Android Studio安装部署系列】二十五、Android studio使用NDK生成so文件和arr文件
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 Android Studio使用ndk的简单步骤. NDK环境搭建 下载NDK 下载链接:https://developer.and ...
- Android studio 使用NDK工具实现JNI编程
前言: Android开发中常常会使用到第三方的.so库.在使用.so库的时候就要用到JNI编程.JNI是Java Native Interface的缩写.它提供了若干的API实现了Java和其它语言 ...
- Android Studio 之 NDK篇
由于工作内容的关系,对于NDK的工作涉及比较广(保密性,安全性),所以本章内容讲述一下NDK的基本使用过程. 网上也有很多这样的教程或者描述,但描述的并不完全 开发工具:Android Studio ...
- Mac下Android studio 之NDK配置教程(一)
Mac下Android studio 之NDK配置教程(一) 1.概述 近期项目全线转移到Mac下使用使用Android studio开发. 遇到关键代码封装到 ***native***层,此时在wi ...
- IDEA插件(Android Studio插件)开发示例代码及bug解决
IDEA插件(Android Studio插件)开发示例代码及bug解决 代码在actionPerformed方法中,有个AnActionEvent e 插件开发就是要求我们复写上述的这个方法即可,在 ...
- 用Android studio进行 OpenCV 开发的第一个项目
我的天! 折腾了好久终于搭建成功了第一个项目. 项目环境: Windows 7 家庭普通版 64位 Android studio 1.5.1 OpenCV-2.4.9-android-sdk 基于 ...
- Android studio 百度地图开发(3)地图导航
Android studio 百度地图开发(3)地图导航 email:chentravelling@163.com 开发环境:win7 64位,Android Studio,请注意是Android S ...
随机推荐
- 记一次EF Core DBContext在Action委托中GC异常的问题.
今天在开发过程中发现.在SaveChanges的时候偶尔会抛出异常:Cannot access a disposed object. A common cause of this error is d ...
- vue——前端跨域
***针对的是不同域名.不同协议的跨域: 1.找到config文件中开发环境的配置文件——dev.env.js,在里面将要跨域的域名配置进去 2.找到config文件中线上环境的配置文件——prod. ...
- lcx 内网转发
把放置到已经控制的内网主机 执行 内网主机输入命令lcx.exe -slave 外网ip 外网端口 内网ip 内网端口lcx.exe -slave 30.1.85.55 2222 127.0.0.1 ...
- 玩转OneNET物联网平台之MQTT服务② —— 远程控制LED
1.理论基础 参考博主线上博文: 玩转PubSubClient MQTT库 玩转OneNET物联网平台之简介 玩转OneNET物联网平台之MQTT服务① 2.远程控制LED 2.1 实验材料 ...
- windows下Python开发错误记录以及解决方法
windows下使用pip提示ImportError: cannot import name 'main' 原因:将pip更新为10.0.0后库里面的函数有所变动造成这个问题 解决方法:先卸载现在的p ...
- java Int数据工具类
1.在使用tcp协议传输数据时,使用到的 Int 数据的工具类方法 //将 Int 数据转换成字节数组 public static byte[] intToByteArray(int data){ b ...
- Servlet处理原生Ajax请求
萌新小白人生中的第一篇博客,难免会有差错,还望各位大佬多多包涵. 1. Ajax技术简介 Ajax(Asynchronous JavaScript and XML,异步JavaScript和 ...
- MAC idea&eclipse快捷键--笔记
idea: 1. command+d 删除行 2. command+o 重写父类方法 3. option+command+v 自动补全变量 4. 将普通java项目变成maven项目 在项目名称上点 ...
- SteamVR Plugin
使用HTC vive基于unity做虚拟现实,需要用到steamVR插件,最近查找了很多资料,稍微做一下总结. 做虚拟现实无非是头显在场景中的camera功能以及手柄的操作功能. (一)camera以 ...
- docker安装mysql,tomcat,并且在tomcat可以访问到mysql
1.uname -an 查看当前系统版本 2.yum -y install docker 下载安装docker 3.service docker start 启动docker服务 4.docker ...