最簡單的Android項目(NDK命令行編譯)


Android的NDK編程需要下載NDK編譯環境,可以從官網下載window64位版,然后解壓到任意目錄即可。

NDK的實現其實是利用里Java的jni方法,所以前期的步驟可以參考jni的實現方法,只是編譯時可以利用NDK工具來進行。

首先將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文件,如下:

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文件(注意大小寫),這個文件是說明如何編譯動態鏈接庫的,內容如下:

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)

打開命令處理程序,切換到項目目錄,輸入以下命令:

D:\Android\android-ndk-r11c\ndk-build

ndk-build前面是你的ndk解壓目錄。

這時,項目下會產生libs目錄,里面就是生成的動態鏈接庫。

因為android有多重cpu平台,所以還可以用一個文件來配置生成的平台類型。

在jni目錄下新建Application.mk(注意大小寫),輸入如下內容:

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文件了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM