閒話不多說,直接入正題:
我的環境:
操作系統:osx 10.10
IDE:eclipse luna
SDK: 19
默認你已經搭建好了SDK開發環境
第一步,下載OSX平臺下的ndk工具包:
在我的網盤中比較新的r10版本可下載:http://pan.baidu.com/s/1eQhn9aq
第二步,配置環境變量
在你的用戶目錄下創建.bash_profile文件加入:
export PATH=${PATH}:/Users/devnn/Documents/android_ndk/android-ndk-r10e A_NDK_ROOT=/Users/devnn/Documents/android_ndk/android-ndk-r10e export A_NDK_ROOT export PATH=${PATH}:/Users/devnn/Documents/android-sdk-macosx/platform-tools export PATH=${PATH}:/Users/devnn/Documents/android-sdk-macosx/tools A_SDK_ROOT=/Users/devnn/Documents/android-sdk-macosx export A_SDK_ROOT
當然注意路徑要作相應的修改。
第三步,打開Eclipse配置ndk路徑,preference->android->ndk
第四步,創建測試工程NDK_TEST
第五步,右鍵工程->Android Tools->Add Support Library
然後在你的工程目錄下生成了一個目錄jni裏面有一個cpp文件和mk文件。我們先測試c文件,所以把它的後綴改成c。內容參考如下:
#include <string.h> #include <jni.h> jstring Java_com_example_ndk_MainActivity_hello(JNIEnv* env, jobject thiz) { return (*env)->NewStringUTF(env, "Hello ,this is from jni"); }
注意C文件的名字和mk文件中對應的名字要一致。
到這裏,這個C文件代碼會報錯,看下一步。
第六步,右鍵工程->propertiers->C/C++ Gerneral->Paths and Symbols
在include這個選項下點擊add,會彈出一個對話框讓你選擇頭文件路徑,選File system,比如我的是
/Users/devnn/Documents/android_ndk/android-ndk-r10e/platforms/android-19/arch-arm/usr/include
這個時候,c文件中的錯誤會消失。
第七步,編寫你的Activity的代碼
package com.example.ndk; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class MainActivity extends Activity { private TextView tvText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tvText=(TextView) findViewById(R.id.text); tvText.setText(hello()); } public native String hello(); static{ System.loadLibrary("NDK_TEST"); } }
我的工程結構如下:
然後,運行你的工程,就會看到結果。