NDK開發常見錯誤總結

NDK開發常見錯誤

ndk開發過程中,經常遇到一些很小的錯誤,但是很多時候它並不像正常android開發,會給出詳細的錯誤Log,這時候偶們就傻眼了。其實只要知道原因,改錯還是很easy的,對症下藥嘛。下邊稍稍總結了幾點,方便以後使用。

1. android.mk文件不存在 

$ ndk-build

報錯:

Android NDK: Your APP_BUILD_SCRIPT points to an unknown file: ./jni/Android.mk  

/cygdrive/h/heima6/jni2/ziliao/android-ndk-r7b/build/core/add-application.mk:133: *** Android NDK: Aborting...    。 停止。

 2.android.mk文件 的配置信息有錯誤

$ ndk-build

報錯:

/cygdrive/h/heima6/jni2/ziliao/android-ndk-r7b/build/core/build-shared-library.mk:23: 

*** Android NDK: Missing LOCAL_MODULE before including BUILD_SHARED_LIBRARY in jni/Android.mk    。 停止。

 3.c代碼函數簽名出現錯誤,或者規則錯誤使cjava的連接出錯

錯誤: Caused by: java.lang.UnsatisfiedLinkError: hello_from_c

-- Java中無法調用native方法

-- c中對應的該方法的實現時,如果有參數錯誤、方法名錯誤、規則錯誤、返回值錯誤。都顯示連接失敗,而不是c語法錯

4.c代碼 語法出現錯誤,編譯不通過 Error 1.

錯誤:

Compile thumb  : Hello <= Hello.c

jni/Hello.c: In function 'Java_cn_itcast_ndk_DemoActivity_helloFromC':

jni/Hello.c:21: error: 'ctr' undeclared (first use in this function)

jni/Hello.c:21: error: (Each undeclared identifier is reported only once

jni/Hello.c:21: error: for each function it appears in.)

jni/Hello.c:21: error: expected ';' before 'c'

/cygdrive/h/heima6/jni2/ziliao/android-ndk-r7b/build/core/build-binary.mk:240: recipe for target `obj/local/armeabi/objs/Hello/Hello.o' failed

make: *** [obj/local/armeabi/objs/Hello/Hello.o] Error 1

5.javac代碼庫沒有找到

錯誤:

Caused by: java.lang.UnsatisfiedLinkError: Library Hell0 not found

靜態加載代碼庫的時候 代碼庫沒有找到.

6.邏輯性的錯誤

      使用了已經回收的內存空間

      訪問了不可以被訪問的內存空間

      修改了不能被修改的內存空間 

邏輯錯誤調試方法:

(1)斷點. ndk-gdb  調試橋

(2)通過log 方式來觀察程序執行流程 

7、so文件有多個,無法定位

$ ndk-build

報錯:

Android NDK: WARNING: APP_PLATFORM android-18 is larger than android:minSdkVersion 10 in ./AndroidManifest.xml

obj/local/x86/objs/Convert/Convert.o.d:1: *** multiple target patterns.  Stop.

解決:將obj/目錄刪除,再重新編譯即可

導致:配置Application.mk,配置多個平臺,編譯之後又將配置修改爲單個,從而導致多個無法定位


如有誤,請指正。


轉載請指明:大飛_Rflyee:http://blog.csdn.net/rflyee/article/details/17693941


發佈了57 篇原創文章 · 獲贊 86 · 訪問量 44萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章