Eclipse ADT+NDK+CDT綜合開發環境配置

使用Eclipse開發Android應用過程中要使用NDK,但需要打開CYGWIN對C/C++代碼進行編譯,雖然可以將NDK和Cygwin整合到Eclipse中,但打開Android工程目錄下的C/C++代碼並不能使用"Open Declaration"等功能 ,而且編輯源代碼時也不能給出拼寫,函數不存在等錯誤提示,以下配置既可以避免要切換到Cygwin中對C/C++代碼進行編譯,也能在Android工程中像在CDT中編譯源代碼一樣,而且C/C++代碼的編譯和Android代碼的編譯是獨立的。


一、準備工作

這裏已經安裝好了Eclipse,裝好了Cygwin、ADT、CDT、Java環境。


二、將CDT整合到Android環境中

1.新建一個C工程,工程名爲Test_C,Project type可以任選,這裏選擇Empty Project,Toolchains也可以任選一個,這裏選擇Cygwin GCC,然後點擊"Finish"


2.右鍵點擊剛纔新建的C工程,選擇Properities->C/C++ Build,確保Builder Settings中Builder type爲External builder,打開Behaviour標籤,將取消Build和Clean選中狀態


3.新建一個Android工程Test,將Test_C目錄下的.cproject文件複製到Android工程目錄下

同時打開Test_C目錄下的.project文件,將<buildSpec>標籤和<natures>標籤下的內容都複製到Android工程目錄下的.project文件相應的標籤下。


4.右鍵點擊Android工程Test,選擇Close project,然後重新打開,打開Test屬性會發現多了C/C++的設置屬性


這個時候我們再新建一個C文件會發現有錯誤提示了


這說明已經成功將CDT整合到Android工程中了,接下來我們添加相應的頭文件即可

這裏string.h在NDK目錄中,jni.h在jdk目錄下,添加完後可以發現代碼中函數已經可以高亮顯示了,遇到錯誤也會有提示。接下來將NDK+CYGWIN也整合進去


三、將NDK+Cygwin編譯環境整合到Android工程中

1.打開Android工程屬性選擇Builders->New->Program點擊OK


2.設置cygwin路徑和輸入參數


Arguments爲輸入參數,如果每次都要輸入工程路徑太麻煩了,這裏可以這麼做:

點擊Variables->Edit Variables->New在彈出對話框中設置name爲workspace_cyg,Value爲cygwin命令行下workspace目錄即e/android/workspace,然後Arguments命令可以改成如下:

--login -c "cd /cygdrive/${workspace_cyg}/${project_name}/jni && $NDK9/ndk-build"

($NDK9爲cygwin中定義NDK目錄的環境變量

${project_name}爲eclipse中定義工程文件名的變量

)

3.Refresh和Build Options自行配置,這裏配置如下

到這裏整個配置就完成了,如果要編譯C/C++代碼,右鍵點擊Android項目選擇"Build Project"即可,運行Android程序不變,這裏可以將Android程序的編譯和C/C++代碼的編譯想分離。以下是隻編譯C/C++代碼截圖:

附上hello-jni.c和Android.mk

#include <string.h>
#include <jni.h>

jstring Java_com_example_hellojni_HelloJni_stringFromJNI(JNIEnv* env,
		jobject thiz) {
	return (*env)->NewStringUTF(env, "Hello from JNI !");
}
void Java_com_example_hellojni_HelloJni_printString(JNIEnv* env, jobject thiz,
		jstring str) {
	const char* ch = (*env)->GetStringUTFChars(env,str,NULL);
	(*env)->ReleaseStringUTFChars(env,str,ch);
}

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := hello-jni
LOCAL_SRC_FILES := hello-jni.c

LOCAL_LDLIBS := -llog

include $(BUILD_SHARED_LIBRARY)



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章