9

Android 命令行调试 C/C++ 程序 - Skywind Inside

 3 years ago
source link: https://www.skywind.me/blog/archives/1545
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Android 命令行调试 C/C++ 程序

传统方式调试 NDK 开发的程序比较麻烦,先要编译成 JNI,又要导出 java接口,还要再写一个 java 工程,改一个地方又要连续改几处,这样效率是很低的。最频繁使用的关键工作路径(编译/调试环节)如果能极致简化,那么可以带来开发效率的成倍提升。其实安卓官方是提供了命令行调试方法的,将你需要调试的 C代码用 NDK直接编译成可执行,然后到设备上执行:

使用 NDK 导出独立工具链,方便以后使用,在 cygwin 下面,将 $NDK 环境变量代表的路径设置好,然后:

cd NDKchmod−R755∗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/hello
adb 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 的方式,效率高极了。

260 total views, 1 view today

I like thisUnlike LikeI dislike thisUndislike 


Recommend

  • 3
    • www.skywind.me 3 years ago
    • Cache

    快速可靠协议-KCP - Skywind Inside

    KCP是一个快速可靠协议,能以比 TCP浪费10%-20%的带宽的代价,换取平均延迟降低 30%-40%,且最大延迟降低三倍的传输效果。纯算法实现,并不负责底层协议(如UDP)的收发,需要使用者自己定义下层数据包的发送方式,并以 callback的方式提供给 KCP。连时钟都需要...

  • 11

    多平台下录屏方式 随便记录下,想得起来的多少写多少: Windows: GDI 全屏:fullscreen desktop BitBlt 速度是 20ms / 帧 GDI 窗口:Win7+可以录制游戏和非游戏,XP以前只能录制普通界面,截不到游戏窗口 ...

  • 7

    如何提高编程的手速 可以使用经典的 TT 来测试你的打字速度,注意是包含数字和符号的文章(Menu->Test->All key) 软件很简单,按照箭头指着的位置,快速输入上面的单词即可,输入完会有评分的。 TT是比较好的打字练习程...

  • 7
    • www.skywind.me 3 years ago
    • Cache

    C++的反思 - Skywind Inside

    C++的反思 最近两年 C++又有很多人出来追捧,并且追捧者充满了各种优越感,似乎不写 C++你就一辈子是低端程序员了,面对这种现象,要不要出来适时的黑一下 C++呢?呵呵呵。 咱们要有点娱乐精神,关于 C++的笑话数都数不清: 笑...

  • 9

    KVM 虚拟化环境搭建 – WebVirtMgr 前文《KVM 虚拟化环境搭建 – ProxmoxVE》已经给大家介绍了开箱即用的 PVE 系统,PVE 是方便,但还是有几点问题: 第一:始终是商用软件,...

  • 10

    KVM 虚拟化环境搭建 – ProxmoxVE 送大家一套完全开源免费的 VmWare / vSphere 的代替方案,代价是稍微动一下手,收获是你再也不需要任何商用付费的虚拟机软件了。KVM 整套解决方案一般分三层: KVM:内核级别的虚拟化功能,...

  • 8

    视频编码原理简介 要彻底理解视频编码原理,看书都是虚的,需要实际动手,实现一个简单的视频编码器: 知识准备:基本图像处理知识,信号的时域和频域问题,熟练掌握傅立叶正反变换,一维、二维傅立叶变换,以及其变种,dct变换,快速...

  • 5

    后端工程师招聘启示 创业一年多,走过不少弯路,公司最近终于开始有了点收入,说起来有点老泪纵横。虽然没有完全覆盖成本,但证明产品方向没有大问题,运营开展后,后端团队急需进一步扩大,方向是两个: 第一是游戏社交,陪玩竞技的A...

  • 6
    • www.skywind.me 3 years ago
    • Cache

    帧锁定同步算法 - Skywind Inside

    帧锁定同步算法 帧锁定算法解决游戏同步 早期 RTS,XBOX360 LIVE游戏常用同步策略是什么?格斗游戏多人联机如何保证流畅性和一致性?如何才能像单机游戏一样编写网游?敬请观看《帧锁定同步算法》 《帧锁定同...

  • 3
    • www.skywind.me 3 years ago
    • Cache

    程序高手的境界 - Skywind Inside

    程序高手的境界 程序员也有三六九等: 初等程序员靠知识来挣钱,会别人会的东西,喜欢折腾架构和框架,以掌握更多新潮东西而沾沾自喜,以模仿各种奇技淫巧重新实现一遍而四处炫耀,常见台词:“为啥还在用png存图片?为啥不用webp这种...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK