企業中JNI開發流程:
1、 java工程師定義好native方法
2、 java工程師使用javah工具,生成native方法的簽名
3、 C工程師實現對應的C代碼
Java調用C++和C代碼的不同之處在於:
編寫android.mk文件的時候需要使用一個配置文件——
#LOCAL_CPP_EXTENSION:= cc,這是一個C++的配置文件,等號右邊是我們定義的C++文件的擴展名決定的,使用C++文件中應當將(*env)改爲(env),將參數env去掉即可
NDK編譯常見錯誤:
1、 未鏈接到需要的文件,如java中的本地方法和C代碼實現的簽名不對應,或者*.h文件沒有在C代碼中引入進來,報錯誤:
UnsatisfiedLinkError
2、 C/C++代碼的源文件出現問題,報錯: Error 1
3、 Android.mk文件配置出現錯誤,如將android.mk文件中要編譯的源文件名改爲“helloo.c”,報錯:***No rule to make target
原因:要編譯的C文件不存在,或者該文件爲不可讀