關鍵詞 :JNI, win7 ,android SDK,Android NDK , CYGWin , eclipse , JDK
1.下載安裝最新的Cygwinsetup.exe
這裡要注意的是,需要選擇Devel@Install,這個是類比Linux環境必須的、、、、選擇http://mirrors.163.com 下載速度比較快
安裝完以後,開啟輸入make -v和gcc -v進行測試是否安裝成功
2.下載安裝JDK-7u2-windows-i586.exe
後面使用可能產生的問題:在path系統路徑中添加javah.exe的有效路徑,否則使用javah.exe產生JNI的標頭檔的時候會提示javah不是有效程式
3.下載解壓android-ndk-r7-windows.zip,比如D:/Tools/vs2008/HandPhone/android-ndk-r7
解壓後,使用文本開啟xxx\Cygwin\home\Administrator\.bash_profile檔案,在最後加上(上面的路徑,去掉:)、、、使用UE開啟該檔案,不用記事本或者寫字板
NDK=/cygdrive/D/Tools/vs2008/HandPhone/android-ndk-r7
export NDK
儲存退出後,代開Cygwin輸入cd $NDK,如果進入你設定的檔案夾則表示設定成功
後面使用可能產生的問題:如果後面使用的時候提示Android NDK: Host 'awk' tool is outdated.則進入xxx\android-ndk-r7\prebuilt\windows\bin中將awk.exe刪除就可以了
4.下載安裝andriod_sdk_installer_r16-windows.exe,安裝路徑比如:C:\Program Files\Android
①安裝完成後開啟C:\Program Files\Android\android-sdk\platforms\android-8檔案夾,裡面有一個andriod.jar檔案,將其拷貝一份,然後將尾碼改為zip,解壓到目前的目錄下得到一個Andriod的檔案夾
②在classpath的系統路徑中增加該檔案的有效路徑,比如C:\Program Files\Android\android-sdk\platforms\android-8\android
後面使用可能產生的問題:如果不進行這步的設定,在javah操作時將提示
錯誤: 無法訪問android.app.Activity
找不到android.app.Activity的類檔案
5.下面的就是按照eclipse以及c++和andriod開發的相關外掛程式
①下載解壓eclipse
②下載對應版本c++開發外掛程式CDT,如下CDT的如下:
http://www.eclipse.org/downloads/download.php?file=/tools/cdt/releases/helios/dist/cdt-master-8.0.1.zip,不用解壓。
然後在eclipse中,help->Install new software...
點擊Add按鈕,name中填一個名字如cdt,archive選剛下載的cdt檔案。
去掉Contact all update sites during install to find required software 勾選,原因就是他還要連網擷取資訊,慢死人的。發現那個報錯就將那個包去掉就行了。
③安裝android開發外掛程式
開啟Eclipse, 在功能表列上選擇 help->Install New SoftWare
點擊Add按鈕,name中填andriod,然後網址填https://dl-ssl.google.com/android/eclipse/ (如果出錯,請將https改成http),那個出錯取消那個
安裝成功之後,在eclipse中的window菜單中則出現Andriod SDK Manager和AVD Manager,並且在File->New->Other中出現可建立Andriod工程
④需要注意的是,卸載外掛程式也在help->Install New SoftWare頁面上的“Avaliable Web Site"串連上,可屏蔽可卸載。也可以在help->About Eclipse點擊Installation Detail中進行卸載。
6.OK,上面都完成了的話,下面建立一個Andriod工程試試(可以直接在xxx\android-ndk-r7\samples中建立一個MyFirstJNI工程)
①代碼如下(注意package名):
package com.cn.test;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class MyFirstJNIActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText(stringFromJNI());
setContentView(tv);
}
public native String stringFromJNI();
static { System.loadLibrary("MyFirstJNI"); }
}
②這一步可能出現2和4中的問題
使用javah -jni 命令之前,必須使用cmd先cd進入工程的classes檔案夾F:\Eclipse\workspace\MyFirstJNI\bin\classes(切記,在操作過程中無需拷貝任何檔案,在這個檔案夾中包含了全路徑如下F:\Eclipse\workspace\MyFirstJNI\bin\classes\com\cn\test,裡麵包含了檔案MyFirstJNIActivity.class),那麼命令就是javah -jni com.cn.test.MyFirstJNIAcrivity,成功後在classes檔案夾下產生一個com_cn_test_MyFirstJNIActivity.h標頭檔
③在MyFirstJNI檔案夾下建立一個新的檔案夾jni,使用eclipse建立一個com_cn_test_MyFirstJNIActivity.c檔案,
內容如下(函數名和標頭檔中的一樣)
#include <string.h>
#include <jni.h>
jstring Java_com_cn_test_MyFirstJNIActivity_stringFromJNI( JNIEnv* env, jobject thiz )
{
return (*env)->NewStringUTF(env, "Hello from JNI !");
}
④將xxx\android-ndk-r7\samples\hello-jni\jni中的Android.mk拷貝到xxx\android-ndk-r7\samples\MyFirstJNI\jni中,然後使用文本開啟,修改為
LOCAL_MODULE := MyFirstJNI
LOCAL_SRC_FILES := com_cn_test_MyFirstJNIActivity.c
⑤開啟Cygwin,cd進入xxx\android-ndk-r7\samples\MyFirstJNI\jni,然後
輸入$NDK/ndk-build
成功將在xxx\android-ndk-r7\samples\MyFirstJNI\libs\armeabi下產生一個.so檔案
⑥OK,大功告成了,eclipse直接F11看看模擬器是否顯示吧
參照來源