NDK開發常見錯誤
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代碼函數簽名出現錯誤,或者規則錯誤使c到java的連接出錯
錯誤: 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.java層c代碼庫沒有找到
錯誤:
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