Windows無需CygWin 使用NDK開發

來源:互聯網
上載者:User
無需cygwin,使用NDK進行開發

NDK從7開始內建編譯器,在windows上無需配置cygwin的環境。

在eclips中配置NDK路徑

在eclipse中點擊功能表列window-Perferences,配置NDK的路徑。

在工程中添加native lib

建立一個空白的Android工程,在根目錄上點擊右鍵Adnroid Tools - Add Native Support...

在彈出的對話方塊中輸入要建立的lib的名稱,點擊Finish,在工程目錄下會多出一個jni檔案夾,裡面有一個空白的cpp檔案和一個Android.mk檔案

Android.mk檔案的內容是

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := TestJni

LOCAL_SRC_FILES := TestJni.cpp

include $(BUILD_SHARED_LIBRARY)

TestJni就是要載入的lib的名稱,LOCAL_SRC_FILES 是資源檔的路徑。

hello jni


MainActivity.java代碼如下:

package com.example.testjni;import android.os.Bundle;import android.app.Activity;import android.widget.TextView;public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);                TextView textView = new TextView(this);        textView.setText(helloFromJni());        setContentView(textView);    }        public native String helloFromJni();        static {        System.loadLibrary("TestJni");    }}

TestJni.cpp代碼如下:

#include <jni.h>extern "C" jstring Java_com_example_testjni_MainActivity_helloFromJni(JNIEnv *env, jobject thiz) {    return env->NewStringUTF("Hello From Jni");}

直接運行程式,可以在Console視窗中看到NDK build的輸出

有一點要注意:由於我使用的是x86的Android虛擬機器來運行,所有使用的是x86的編譯器。制定編譯器的方法是在jni目錄建立一個Application.mk的檔案,輸入以下內容

#APP_ABI := armeabi

APP_ABI := x86

#APP_ABI := armeabi armeabi-v7a x86 mips mips-r2 mips-r2-sf

#APP_ABI := all

APP_STL := stlport_static

如果是普通arm處理器的Android手機,使用APP_ABI := armeabi,如果是x86處理器的,使用APP_ABI := x86,等等。

如果APP_ABI := all,會編譯所有指令的so。

運行結果如下:

至於C/C++的編譯是怎麼實現的,我們可以查看一下工程的Properties

在Builders裡面有多了兩項,一個是CDT Builder,一個是Scanner Configuration Builder。

現有的工程添加Builder

如果工程裡面已經有jni目錄了,但是沒有配置C/C++的編譯器,高手們可以自己添加Builder,對於我這種愛投機取巧的小菜鳥,工程右鍵菜單,新添加一個空白的so,然後再刪除,CDT Builder和Scanner Configuration Builder就出來了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.