NDK開發常見錯誤

  1. 在jni目錄下沒有發現Android.mk文件

    Android NDK: Your APP_BUILD_SCRIPT points to an unknown file: ./jni/Android.mk
    
  2. c文件中沒有導入jni.h的頭文件.

    jni/CommonError.c:4:1: error: unknown type name 'JNIEXPORT'
    jni/CommonError.c:4:19: error: expected '=', ',', ';', 'asm' or '__attribute__'
    before 'JNICALL'
    jni/CommonError.c:4:19: error: unknown type name 'JNICALL'
    
  3. c代碼實現的方法沒有寫形參的名字.

    jni/CommonError.c: In function 'Java_com_ycy_commonerrordemo_MainActivity_
    sayHelloInC':
    jni/CommonError.c:6:3: error: parameter name omitted
    jni/CommonError.c:6:3: error: parameter name omitted
    jni/CommonError.c:8:13: error: 'env' undeclared (first use in this function)
    jni/CommonError.c:8:13: note: each undeclared identifier is reported only once f
    or each function it appears in
    
  4. 調用native方法, 沒有加載.so文件.

    No implementation found for native Lcom/ycy/commonerrordemo/MainActivity;.sayHelloInC ()Ljava/lang/String;
    
  5. 加載.so文件時, 名字寫錯.

    java.lang.UnsatisfiedLinkError: Couldn't load libcommonerror.so: findLibrary returned null
    
  6. 當前生成的arm平臺下的.so文件, 運行在了x86的平臺模擬器下.

    java.lang.UnsatisfiedLinkError: Couldn't load libcommonerror.so: findLibrary returned null
    
    • 解決方案: 在jni的目錄下, 創建一個Application.mk, 內容如下:

      # 生成所有的機器碼.
      APP_ABI := all
      
      # 生成單個平臺的機器碼
      APP_ABI := x86 armeabi 

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