传统方式调试 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 导出独立工具链相关推荐

  1. 安卓linux交叉编译,Linux Ubuntu下用Android NDK 生成独立交叉编译链

    本文主要介绍使用Android NDK生成独立交叉编译链,然后使用独立交叉编译链编译Android程序 下载NDK 下载与自己操作系统相吻合的版本 下载地址 解压到安装目录(如~/myndk): ta ...

  2. 使用 Android NDK 的交叉编译工具链移植 C/C++ 项目到安卓平台

    什么是 NDK? Android NDK 是一套可以让开发者在安卓应用开发中使用 C/C++ 实现特定模块的工具集,不是所有应用都需要用到,但是正确地使用可以有效提高应用运行效率和安全性. 为什么要在 ...

  3. android so readelf.exe,android ndk中的工具使用

    1. 动态so处理: arm-linux-androideabi-readelf.exe -a XX.so > xx.txt输出所有函数 arm-linux-androideabi-objdum ...

  4. Android开发工具链ppt,介绍Android原生开发工具包r14

    原标题:介绍Android原生开发工具包r14 现在,可以下载最新版本 Android 原生开发工具包 (NDK)--Android NDK r14.也可以通过 Android Studio 在 SD ...

  5. 用Android NDK打造自己的toolchain(使用C/C++默认的Makefile)

    2019独角兽企业重金招聘Python工程师标准>>> 把NDK压缩包解压到系统,如/mnt目录下,后在/mnt目录下建立文件夹my_ndk_toolchain,然后再/mnt目录下 ...

  6. Android NDK开发Crash错误定位[转]

    使用 ndk-stack 的时候需要你的 lib 编译为 debug版的,通常需要下面的修改: 1. 修改 android.mk,增加,为 LOCAL_CFLAGS 增加 -g 选项 2. 修改 ap ...

  7. Android NDK开发Crash错误定位

    在Android开发中,程序Crash分三种情况:未捕获的异常.ANR(Application Not Responding)和闪退(NDK引发错误).其中未捕获的异常根据logcat打印的堆栈信息很 ...

  8. Android NDK学习笔记1:基础

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/119005718 本文出自[赵彦军的博客] 文章目录 (一)什么是Android N ...

  9. 基于 Android NDK 的学习之旅-----序言

    前些日子做了个Android项目, 引擎层用C的, 准备写这个系类的文章,借此跟朋友来分享下我NDK开放的经验以及自己知识的总结和备忘.希望能给需要这方面资料的朋友提供一定的帮助. 主要涉及到:  环 ...

最新文章

  1. abaqus中元素过度失真是什么意思_[ABAQUS]非线性收敛问题的六个建议
  2. 2017年4月25日(日志库glog)
  3. apache使用.htaccess删除.html扩展名_Web前端入门:html元素解析
  4. 数据结构与算法笔记(九)—— 希尔排序
  5. Linux学习笔记--文件夹结构
  6. 解决HTML embed标签显示在div上层(not z-index)
  7. 属性被分为八大类不包括_家庭软装八大类有哪些 软装八大类风格有什么特点...
  8. 我的服装DRP之开发感悟
  9. Apache Flink新场景——OLAP引擎
  10. 关于特殊的LCS问题的优化
  11. 解决ora-00054 Oracle锁表问题
  12. Particle Filter Tutorial 粒子滤波:从推导到应用(二)
  13. 面向初学者的带有MVC API的Android 管理表CRUD MSSQL
  14. RedHat 设置IP、网关、DNS
  15. jQuery学习_具备吸附功能的拖曳框
  16. 9.腾讯微博Android客户端开发——发送微博
  17. UNBUNTU下与VirtualBox的WINDOWS共享文件夹
  18. Landsat卫星MSS/TM/ETM数据(转自ESRI社区)(二)
  19. wine android模拟器,Mac  下运行window 软件,(wine 模拟器)
  20. 火狐浏览器的翻译问题

热门文章

  1. Office 2010 中的 UI 扩展性
  2. [IE技巧] 查看HTTP 验证的用户名/密码
  3. 超酷的JS时间效果--收集
  4. KALI Linux 系统安装 翻译
  5. JDK安装以及开发环境搭建
  6. Python中urllib2总结
  7. iOS 数据持久化 -- Core Data (2)
  8. 点击拖动放大该图片大小
  9. perl 命令行备注
  10. 记一次OOM问题排查过程