配置NDK地址:
windows->preferences->Android->NDK,選擇NDK目錄.
- 開始搭建:
1.首先,創建一個Android項目.一路next下去.這裏我是基於4.0創建的.
2.右鍵點擊項目->Android Tools -> Add Native Support.
此時工程目錄下會多出一些文件夾:jni,obj.jni文件夾是存放natvie代碼的,obj是存放生成的庫文件之類的.
3.然後創建GetString類
- public class GetString {
- public static native String getStr();
- public native String getString();
- public native int add(int a, int b);
- }
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類的方法.顯示到界面上.
- public class MainActivity extends Activity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- TextView tv = (TextView) findViewById(R.id.tv);
- String str = GetString.getStr();
- str += "\n" + new GetString().getString();
- str += "\n" + new GetString().add(5, 3);
- tv.setText(str);
- }
- }
運行會報錯,提示:
這是因爲代碼中沒有加載動態庫.回到GetString類中,添加方法.
現在運行項目,可以看到界面上已經成功顯示了三個native方法返回的值.