Android的NDK編程須要下載NDK編譯環境,能夠從官網下載window64位版,而後解壓到任意目錄便可。java
NDK的實現實際上是利用裏Java的jni方法,因此前期的步驟能夠參考jni的實現方法,只是編譯時能夠利用NDK工具來進行。android
首先將Java源程序寫好,例如:編程
1 package test.android; 2 3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.view.View; 6 import android.widget.Toast; 7 import android.widget.LinearLayout; 8 import android.widget.Button; 9 10 public class Mini extends Activity { 11 12 static { 13 System.loadLibrary("jt"); 14 } 15 16 public native String stringFromJNI(); 17 18 public void onCreate(Bundle savedInstanceState) { 19 super.onCreate(savedInstanceState); 20 21 LinearLayout lla = new LinearLayout(this); 22 Button b = new Button(this); 23 b.setText("click me"); 24 25 lla.addView(b); 26 this.setContentView(lla); 27 28 final Activity _this = this; 29 30 b.setOnClickListener(new View.OnClickListener() { 31 @Override 32 public void onClick(View v) { 33 Toast.makeText(_this, stringFromJNI(), Toast.LENGTH_LONG).show(); 34 } 35 }); 36 } 37 }
利用javah工具生成.h頭文件,而後在項目根目錄新建jni目錄,在jni目錄新建jni.c文件,以下:windows
1 #include <string.h> 2 #include <jni.h> 3 #include "test_android_Mini.h" 4 5 JNIEXPORT jstring JNICALL Java_test_android_Mini_stringFromJNI 6 (JNIEnv *env, jobject _this) 7 { 8 return (*env)->NewStringUTF(env, "return from c"); 9 }
在jni目錄裏新建Android.mk文件(注意大小寫),這個文件是說明如何編譯動態連接庫的,內容以下:app
1 LOCAL_PATH := $(call my-dir) 2 3 include $(CLEAR_VARS) 4 5 LOCAL_MODULE := jt 6 LOCAL_SRC_FILES := jni.c 7 8 include $(BUILD_SHARED_LIBRARY)
打開命令處理程序,切換到項目目錄,輸入如下命令:ide
D:\Android\android-ndk-r11c\ndk-build
ndk-build前面是你的ndk解壓目錄。工具
這時,項目下會產生libs目錄,裏面就是生成的動態連接庫。ui
由於android有多重cpu平臺,因此還能夠用一個文件來配置生成的平臺類型。this
在jni目錄下新建Application.mk(注意大小寫),輸入以下內容:google
APP_ABI := armeabi armeabi-v7a x86
再次使用ndk-build命令編譯,就會在libs下生成三種平臺的動態連接庫
接下來打包的過程和之前的打包步驟只有一步不一樣,用apkbuilder將全部文件打包成apk時,加上動態連接庫的文件目錄,用-nf 目錄,例如:
D:\Android\sdk\tools\apkbuilder.bat \workspace\test\android\minimum\mini_unsigned.apk -v -u -z D:\workspace\test\android\minimum\bin\mini.ap_ -f D:\workspace\test\android\minimum\bin\classes.dex -rf D:\workspace\test\android\minimum\src -nf D:\workspace\test\android\minimum\libs
而後簽名就生成最終的apk文件了。