NDK問題總結

轉自 這篇文章中不少東西!!:http://blog.chinaunix.net/uid-20746260-id-3910616.htmlhtml

1. 建立JNI頭文件java

  在工程目錄下輸入:android

javah -classpath bin/classes -d jni com.example.rgbir.rgbirJNI

   遇到的問題c++

error: cannot access com.example.rgbir.rgbirJNI
class file for com.example.rgbir.rgbirJNI not found
javadoc: error - Class com.example.rgbir.rgbirJNI not found.
Error: No classes were specified on the command line. Try -help.

解決方法:點擊運行工程,從新在命令行輸入命令便可。網絡

緣由: 從新生成class文件eclipse

 

2. 配置NDK路徑函數

  參考文章: 建立eclipse針對NDK的聯合編譯環境。post

 

3. 屏蔽語法檢查錯誤ui

對代碼分析(code analysis)進行屏蔽url

位置: project-> properties ->c/c++ general ->code analysis

在選擇「using project setting」下面的syntax and semantic error 進行屏蔽

 

4. 解決JNI層函數頭文件《jni.h》 下的黃線

  由於CDT索引器沒有找到路徑,而NDK知道。

  進入項目屬性頁面,「c/c++ general」 -》 「Paths and symbols」,右邊「add...」 輸入JNI相關頭文件所在目錄。好比「${env_var:Android_NDK}/platforms/android-18/arch-arm/usr/include」.

 

5 C++包含。h頭文件

JNI文件夾下的c++程序包含。h文件, 。h文件中全部函數聲明必須在以下宏中,不然會報 undefined reference to 的錯誤。

 

#ifdef __cplusplus 
extern "C" { 
#endif

//一段代碼

#ifdef __cplusplus 
} 
#endif

 

6. java.lang.UnsatisfiedLinkError:Native method not found

 so文件編譯生成後,運行時,有時候會遇到java.lang.UnsatisfiedLinkError: Native method not found問題。
   a. JNI方法頭部大小寫問題     
      在C++中,方法名:Java_com_XXX,而不是java_com_XXX。建議直接從生成的.h頭文件直接複製方法名到C或者C++文件中。
   b. C++文件問題
        若是是C++文件(.cpp或者.cc),要使用extern "C" {   } 把本地方法括進去
   c. 往JNI方法中傳值問題
         如,調用native方法sendSomeThing(Object object),若是傳入的object爲null,有可能會報上面錯誤。

 

7. SD卡中建立文件、寫入文件、刪除文件操做的支持

 在AndroidManifest.xml中加入訪問SDCard的權限.若是支持網絡, 麥克風等同樣處理

相關文章
相關標籤/搜索