eclipse編譯調試java與ndk c++的混合代碼

來源:互聯網
上載者:User

 轉載自:http://blog.sina.com.cn/s/blog_53e89d4f0100vom1.html

1 用常規方法建立或匯入java工程。

 

2 在工程所在目錄下建立jni目錄,所有的c++代碼和mk檔案都放在這個目錄下。

 

3 從sample目錄裡拷貝Android.mk和Application.mk到jni目錄下並修改相應內容。

 

4 如果包含多個c++模組,那麼修改Application.mk的APP_MODULES欄位,例:

    APP_MODULES= freetype myapp2

  同時建立freetyp.mk,myapp2.mk,修改android.mk為:

    LOCAL_PATH :=$(call my-dir)
    include$(LOCAL_PATH)/freetype.mk
    include$(LOCAL_PATH)/myapp2.mk

  也就是說:android.mk裡可以包含多個模組的mk檔案。

 

5 如果要使用c++庫函數,在Application.mk裡加上

    APP_STL:= stlport_shared

  在android.mk裡加上:(注意不用手工添加stlport標頭檔目錄)

    LOCAL_STATIC_LIBRARIES+= libstlport_shared.so

  另外java代碼裡所有打包進apk的模組都要手工load,否則要異常:(不像windows是自動load)
   System.loadLibrary("stlport_shared");
   System.loadLibrary("freetype");
   System.loadLibrary("myapp2");

 

5把java工程改成c++混合工程:file->new->other->c/c++->convertto a c/c++ project




6 在工程上右鍵屬性,修改如下:
  cygwin/bin要加入系統path環境變數裡。NDK_ROOT為ndk所在目錄,也要加入系統內容變數。
 

7 build工程,順利編譯出所有模組。

 

8 建立一個調試配置:

 


c/c++ application為當前工程目錄的obj\local\armeabi\app_process。然後點擊Selectother...

繼續修改屬性:
debugger:F:\android-ndk-r5b\toolchains\arm-eabi-4.4.0\prebuilt\windows\bin\arm-eabi-gdb.exe

file: F:\tj\at_utils\build\android\obj\local\armeabi\gdb.setup



9進入ndk目錄,把ndk-gdb檔案複製成ndk-gdb2。開啟ndk-gdb2,屏蔽掉最後第1和最後第5句話,屏蔽的方法是句子最前面加#:

#echo "target remote :$DEBUG_PORT" >>$GDBSETUP
if [ -n "$OPTION_EXEC" ] ; then
    cat$OPTION_EXEC >> $GDBSETUP
fi
#$GDBCLIENT -x `native_path $GDBSETUP`

 

10 在工程的obj\local\armeabi目錄下建立一個叫dbg.bat的檔案,檔案內容為:

set ANDROID_NDK_ROOT=/cygdrive/f/android-ndk-r5b

bash %NDK_ROOT%/ndk-gdb2

(圖是r5b版本的,不需要第一句,r5c版需要定義ANDROID_NDK_ROOT)



現在設定工作全部完成,可以開始調試了。

調試步驟為:

1 啟動java程式

2啟動後雙擊dbg.bat,這個時候會彈出一個小dos視窗,不要關閉這個視窗,裡面是gdbserver。當使用者結束調試後這個視窗會自動關閉。

3 再次點擊調試按鈕下旁邊的小三角形按鈕,選擇調試配置,找到剛才的c++ aplication,點擊debug。(見過程8)

這個時候就可以同時調試java和c++代碼了。不過調試c++代碼效能非常差,速度不是一般的慢。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.