eclipse下進行ndk開發步驟


配置NDK地址:

windows->preferences->Android->NDK,選擇NDK目錄.


  • 開始搭建:

1.首先,創建一個Android項目.一路next下去.這裏我是基於4.0創建的.


2.右鍵點擊項目->Android Tools -> Add Native Support.



    此時工程目錄下會多出一些文件夾:jni,obj.jni文件夾是存放natvie代碼的,obj是存放生成的庫文件之類的.


3.然後創建GetString類
[java] view plain copy
  1. public class GetString {  
  2.     public static native String getStr();  
  3.     public native String getString();  
  4.     public native int add(int a, int b);  
  5. }  


4.打開cmd命令行,進入項目的<項目地址>/bin/classes/下.輸入javah -jni <包名>.類名或者進入到src目錄下src>javah -com.aa.bb 也可以生成對應的頭文件

這裏使用了javah命令,這個命令是jdk裏的,jre裏是沒有的.

如:<項目目錄>\bin\classes>javah -jni com.zzk.hellojni.GetString

該命令的作用是對GetString類生成.h頭文件.成功後會在\bin\classes\下生成一個.h文件.

把這個文件複製到工程jni文件下.

此時會報錯,提示Type 'JNIEnv' could not be resolved,是因爲項目沒有include 運行環境.

右鍵項目->properties->C/C++general->Paths and Symbols

點擊Add按鈕

勾選Add to all languages.點擊File system,選擇之前準備好的NDK目錄下的\platforms\android-14\arch-arm\usr\include目錄.注意NDK路徑地址不能有漢字和空格!!!否則會報錯.platforms最好選和項目sdk一致的版本.arch開頭的三個目錄應該是和cpu構架相關的,android絕大數的設備都是arm構架的.

點擊OK,點擊Apply,會提示是否重構項目,點擊確定.此時項目不再報錯.

5.創建一個NDK Builder構造器.

右鍵項目->properties->builders->New.選擇Program.然後彈出一個對話框.這裏需要配置一下.

Main標籤:Location選擇NDK的根目錄.Working Directory選擇工程目錄.

Refresh標籤:勾選Refresh resources upon completion.看圖吧.

Build Options標題:勾選框框內的.然後點擊Specify Resources

選擇項目裏的jni文件夾.

點擊finish,此時這裏就多了一個NDK_Builder

點擊ok,會執行構建操作,此時如果出現下列信息就表示成功了.

6.然後把之前的.h文件裏的三個未實現的方法複製到.cpp內,然後實現方法.#include 頭文件不要忘掉.

然後點擊project->build project.等待構建成功後obj文件夾下會多出一些文件.

libHelloJNI.so 就是最後生成的動態庫.

7.最後在MainActivity中調用GetString類的方法.顯示到界面上.

[java] view plain copy
  1. public class MainActivity extends Activity {  
  2.   
  3.     @Override  
  4.     protected void onCreate(Bundle savedInstanceState) {  
  5.         super.onCreate(savedInstanceState);  
  6.         setContentView(R.layout.activity_main);  
  7.         TextView tv = (TextView) findViewById(R.id.tv);  
  8.         String str = GetString.getStr();  
  9.         str += "\n" + new GetString().getString();  
  10.         str += "\n" + new GetString().add(53);  
  11.         tv.setText(str);  
  12.     }  
  13.   
  14. }  


運行會報錯,提示:


這是因爲代碼中沒有加載動態庫.回到GetString類中,添加方法.



現在運行項目,可以看到界面上已經成功顯示了三個native方法返回的值.



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