Android NDK 导出独立工具链
传统方式调试 NDK 开发的程序比较麻烦,先要编译成 JNI,又要导出 java接口,还要再写一个 java 工程,改一个地方又要连续改几处,这样效率是很低的。最频繁使用的关键工作路径(编译/调试环节)如果能极致简化,那么可以带来开发效率的成倍提升。其实安卓官方是提供了命令行调试方法的,将你需要调试的 C代码用 NDK直接编译成可执行,然后到设备上执行:
使用 NDK 导出独立工具链,方便以后使用,在 cygwin 下面,将 $NDK 环境变量代表的路径设置好,然后:
cd $NDK
chmod -R 755 *
build/tools/make-standalone-toolchain.sh –ndk-dir=$NDK –platform=android-9 –arch=arm –install-dir=/…../path-to-android-9
这样就导出了一套针对 API9 的独立工具链(包含 gcc, ld, ndk必要文件),以后方便使用,比如导出到 d:\android-9下面,那么以后可以跳过 cygwin,直接编译我们的 Hello World:
d:\android-9\bin\arm-linux-androideabi-gcc.exe hello.c –o hello
于是你可以在命令行下直接开发 Android 的非 GUI 应用程序了。
调试也很简单,用 adb push 上传到 /data/local/tmp 下面,并且设置可执行模式为 755:
adb push hello /data/local/tmp/helloadb shell chmod 755 /data/local/tmp/hello
运行就是直接:
adb shell /data/local/tmp/hello
不要传到其他目录,比如 /sdcard,这些目录 mount时有 NOEXEC 权限,不能给文件增加可执行权限,而 /data/local/tmp 就是留给大家调试命令行用的,并且不需要 root 权限。
可以编写一些脚本,每次编译好自动上传,配置到你的 Editplus/Vim/Npp 中,一键编译上传,一键运行。比起以前调试下 C代码还需要写一大堆 jni 和 java 的方式,效率高极了
Android NDK 导出独立工具链相关推荐
- 安卓linux交叉编译,Linux Ubuntu下用Android NDK 生成独立交叉编译链
本文主要介绍使用Android NDK生成独立交叉编译链,然后使用独立交叉编译链编译Android程序 下载NDK 下载与自己操作系统相吻合的版本 下载地址 解压到安装目录(如~/myndk): ta ...
- 使用 Android NDK 的交叉编译工具链移植 C/C++ 项目到安卓平台
什么是 NDK? Android NDK 是一套可以让开发者在安卓应用开发中使用 C/C++ 实现特定模块的工具集,不是所有应用都需要用到,但是正确地使用可以有效提高应用运行效率和安全性. 为什么要在 ...
- android so readelf.exe,android ndk中的工具使用
1. 动态so处理: arm-linux-androideabi-readelf.exe -a XX.so > xx.txt输出所有函数 arm-linux-androideabi-objdum ...
- Android开发工具链ppt,介绍Android原生开发工具包r14
原标题:介绍Android原生开发工具包r14 现在,可以下载最新版本 Android 原生开发工具包 (NDK)--Android NDK r14.也可以通过 Android Studio 在 SD ...
- 用Android NDK打造自己的toolchain(使用C/C++默认的Makefile)
2019独角兽企业重金招聘Python工程师标准>>> 把NDK压缩包解压到系统,如/mnt目录下,后在/mnt目录下建立文件夹my_ndk_toolchain,然后再/mnt目录下 ...
- Android NDK开发Crash错误定位[转]
使用 ndk-stack 的时候需要你的 lib 编译为 debug版的,通常需要下面的修改: 1. 修改 android.mk,增加,为 LOCAL_CFLAGS 增加 -g 选项 2. 修改 ap ...
- Android NDK开发Crash错误定位
在Android开发中,程序Crash分三种情况:未捕获的异常.ANR(Application Not Responding)和闪退(NDK引发错误).其中未捕获的异常根据logcat打印的堆栈信息很 ...
- Android NDK学习笔记1:基础
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/119005718 本文出自[赵彦军的博客] 文章目录 (一)什么是Android N ...
- 基于 Android NDK 的学习之旅-----序言
前些日子做了个Android项目, 引擎层用C的, 准备写这个系类的文章,借此跟朋友来分享下我NDK开放的经验以及自己知识的总结和备忘.希望能给需要这方面资料的朋友提供一定的帮助. 主要涉及到: 环 ...
最新文章
- abaqus中元素过度失真是什么意思_[ABAQUS]非线性收敛问题的六个建议
- 2017年4月25日(日志库glog)
- apache使用.htaccess删除.html扩展名_Web前端入门:html元素解析
- 数据结构与算法笔记(九)—— 希尔排序
- Linux学习笔记--文件夹结构
- 解决HTML embed标签显示在div上层(not z-index)
- 属性被分为八大类不包括_家庭软装八大类有哪些 软装八大类风格有什么特点...
- 我的服装DRP之开发感悟
- Apache Flink新场景——OLAP引擎
- 关于特殊的LCS问题的优化
- 解决ora-00054 Oracle锁表问题
- Particle Filter Tutorial 粒子滤波:从推导到应用(二)
- 面向初学者的带有MVC API的Android 管理表CRUD MSSQL
- RedHat 设置IP、网关、DNS
- jQuery学习_具备吸附功能的拖曳框
- 9.腾讯微博Android客户端开发——发送微博
- UNBUNTU下与VirtualBox的WINDOWS共享文件夹
- Landsat卫星MSS/TM/ETM数据(转自ESRI社区)(二)
- wine android模拟器,Mac 下运行window 软件,(wine 模拟器)
- 火狐浏览器的翻译问题