從ndk7以後,無需在配置cygwin等模拟unix/linux操作環境。ndk内部內建了這些功能。
2014年以後,google被封,Android官網無法通路,這裡推薦一個國内的映像http://wear.techbrood.com/
NDK環境配置
第一步:NDK下載下傳
http://wear.techbrood.com/tools/sdk/ndk/index.html
下載下傳完成後,直接解包就可以。
第二部:配置eclipse
1、環境變量
Window環境下cmd指令設定
set PATH=%PATH%;F:/java/android-ndk-r10
F:/java/android-ndk-r10是ndk解壓後的路徑
注意:英文字母,不要出現漢字,切不要有“空格“
2、配置Eclpise
Window-》Preference-》android-》NDK
執行這些之前需要配置好Android開發的基本環境
NDK生成SO檔案
第一步:建立Android工程
第二步:在src檔案下建立包com.test.classes
第三步:在第二步建立的包下建立class類 JNIClass.java
package com.test.classes;
public class JNIClass {
static{
System.loadLibrary("demo");//一定要注意名稱沒有“lib"
}
public native int plus(int a,int b);
}
第四步:右鍵工程選擇Android tools-》Android native support……
填入LIB的name,即将來生成so的名字。會自動生成jni檔案夾,在檔案夾内自動生成demo.cpp和Android.mk檔案。
第五步:打開demo.cpp增加
JNIEXPORT jint JNICALL Java_com_test_classes_JNIClass_plus(JNIEnv* env, jobject obj, jint a, jint b)
{
//傳回計算結果
return a+b;
}
extern "C"{
JNIEXPORT jint JNICALL Java_com_test_classes_JNIClass_plus(JNIEnv* env, jobject obj, jint a, jint b);
}
Java_com_test_classes_JNIClass_getString是包名+檔案名+函數名
若是建立的cpp檔案,則必須要帶extern ”C“,否則會提示找不到本地實作
第六步:在Activity中調用本地檔案
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText(new hello().helloFromJni() );
tv.append("\n\r");
tv.append(new JNIClass().plus(9, -10)+"");
setContentView(tv);
}
}
第七步:直接運作工程就會生成so檔案。
可以将libs檔案下的so檔案拷貝到别的工程直接使用。