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

來源:互聯網
上載者:User

標籤:

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       @Override32       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_stringFromJNI6   (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 := jt6 LOCAL_SRC_FILES := jni.c7 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檔案了。

 

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.