一: 先看看用 ndk-gdb 手動調試
這種方法只適用於手動編寫 Android.mk 的情況,因為我們要手動 build debug 版本的 .so 文件。具體可以參考我的前一篇文章。
1 AndroidManifest.xml android:debuggable 設置為 true
2 切換到 jni 目錄下執行 ndk-build NDK_DEBUG=1
這樣就生成了 debug 版本的庫文件,還多了一個 gdbserver 和 gdb.setup

3 運行安裝啟動程序
4 切換到你的 src/main 目錄下執行 ndk-gdb
這時報了一個錯誤:
ERROR: Could not find gdb.setup under /Users/lesliefang/AndroidStudioProjects/MyApplication/app/src/main/libs/
那就把 armeabi 下面的 gdb.setup 文件拷貝到 ./libs 下面
重新執行,結果又報了一個錯:
ERROR: Non-debuggable application installed on the target device.
Please re-install the debuggable version!
這是因為運行時 studio 沒有把 gdbserver 打包到 apk 中, 怎么辦呢,反編譯后手動打包進去,重新打包簽名就行了

安裝啟動運行,再次執行 ndk-gdb 成功

2 IDE 調試, android studio 目前對 NDK 的調試支持還只是實驗階段
具體可參考 http://tools.android.com/tech-docs/new-build-system/gradle-experimental
折騰了一番,也可以調試了

熟悉 java 的同學通常 C 和 C++ 不是很熟, 熟悉 C 和 C++ 的同學 java 通常不是很熟
所以可以先定義好接口,讓熟悉C 和 C++的同學先開發完C程序,測試通過后,
讓熟悉 java 和 JNI 的同學在外面再包一層,處理參數的傳遞和返回。復用已有的C程序也可以這么做。
JNI 可以直接用 eclipse for C、C++ 開發, JNI 接口都測試通過后再用 ndk 工具打成 .so 文件,
拿到 android studio 中, 對於 C或C++ 調用 android 中方法的情況可以先 mock
一些類和方法, 其實大部分情況都是 java 調用 C和C++, C和C++很少調用 java。
所以我覺得一般來說 ndk 可以分出來獨立開發。
所有說直接在 android studio 中調試C和C++的時候也不多。
