Android 命令行調試
傳統方式調試 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 的方式,效率高極了。