Sean's Note: Running C/C++ on Android with NDK

2014年3月27日 星期四

Running C/C++ on Android with NDK

需要準備的環境

  1. Eclipse + Android SDK: 基本的 Android 開發環境
  2. Android NDK: 讓 Android 能透過 JNI 去執行 C/C++ 語言的必要套件
  3. Eclipse NDK: Eclipse 的 plugin 套件,方便管理與建立 NDK 的專案
    Work with: https://dl-ssl.google.com/android/eclipse/
    安裝好之後要設定 Android NDK 的路徑:
    Window -> Preferences -> Android -> NDK -> NDK Location:
  4. Eclipse CDT: Eclipse 的 plugin 套件,可以在 Eclipse 上管理與開發 C/C++ 專案
    Work with: http://download.eclipse.org/tools/cdt/releases/juno (For Juno)
    Work with: http://download.eclipse.org/tools/cdt/releases/kepler (For Kepler)
  5. Cygwin: 用來編譯 C/C++
    Ref: http://blog.csdn.net/javatiger427/article/details/6115693
註1: NDK(Native Development Kit)
註2: CDT(C/C++ Development Tooling)

新建一個專案


步驟可參考下列網址:
http://www.pupuliao.info/2013/05/%E5%9C%A8eclipse%E9%80%8F%E9%81%8Ejni-%E8%B7%91cc-for-android-hello_world%E7%AF%87/

文中設定 Builder 的部分可略過,只是為了存檔的同時也能重新自動建置。

而且遇到有空白字元的路徑更為麻煩,可將文中 Arguments 的部分換成如下:

--login -c "cd /cygdrive/d/sample &&  rm -r obj && /cygdrive/c/Progra~1/Android/android-ndk-r9d/ndk-build"

另外,我們也可以透過按下小鎚子的圖示來手動建置。

除錯


除錯時要將 Project -> Properties -> C/C++ Build -> Builder Settings -> Build Command:

加上 ndk-build NDK_DEBUG=1,建置時才會產生除錯所需要的檔案。

在這之後可能會遇到兩個問題:
  1. 無法在 .c 或 .cpp 檔上設置中斷點?
    Run -> Breakpoint Types  -> C/C++ Breakpoints
  2. 設完中斷點後,卻沒有停在中斷點上?
    No symbol table is loaded. Use the "file" command.
    由於 GDB debugger 需要一點時間運算,而 GDB 可能還沒載入 Library 的 Symbol,
    如果中斷點設得太早可能會被忽略,
    解決的辦法請參考:
    http://www.codeproject.com/Articles/493043/Why-your-Android-NDK-breakpoints-might-fail-and-ho

沒有留言:

張貼留言