1. 程式人生 > >建立一個用了OpenGL的ndk Android專案

建立一個用了OpenGL的ndk Android專案

如果是匯入ndk的samples目錄下的hello-gl2專案會比較簡單,但是如果要建立一個新的專案會遇到不少問題,這裡我就講一下我的建立方法和遇到的問題。

首先adt和java最好裝在同一個資料夾中,之後那些環境變數野記得改


由於我還是要做OpenGl2.0的開發,所以我需要參照hello-gl2專案來做

首先建立一個新的空Android工程,仿照sample寫好幾個Java類

裡面的程式碼基本一樣。

接著專案右鍵Android Tools,Add Native Support...


名字按自動生成的就行


生成成功後就有了個jni資料夾,

這時一般需要新增一個。。。

懶得講了,有空或有問題再更。。。

給幾個網址我就是靠這幾個網址搞出來的,小白一個。。。

一開始用這個

http://www.tuicool.com/articles/aqaUnq

接著用這個

http://blog.csdn.net/leilu2008/article/details/12495273

有問題之後用這個

http://blog.csdn.net/chrisfxs/article/details/36435085

上面這個問題是當我新建工程後的庫都找不到,用上面這個方法。不行的話在android.mk檔案上改改

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := TestNDK//生成的so檔名字
LOCAL_SRC_FILES := TestNDK.cpp//匯入的檔名字



LOCAL_CFLAGS    := -Werror

LOCAL_LDLIBS    := -llog -lGLESv2//gles庫的載入

include $(BUILD_SHARED_LIBRARY)

還有個問題就是不管是c++層還是java呼叫那層,記得函式名要對,如果改了專案java包的包名記得c++層也要改函式名

package com.ndk.helloworld;

public class Lib {
    static {
        System.loadLibrary("TestNDK");
    }//這裡很重要!檢視libs/armeabi資料夾下的.so檔案的名字,但是不包括前面的lib

   /**
    * @param width the current view width
    * @param height the current view height
    */
    public static native void init(int width, int height);
    public static native void step();
}

上面的註釋很重要!


像上面那樣,.so檔案全名叫libTestNDK.so但是System.loadLibrary("TestNDK");是這樣

sdk,adt,ndk的環境搭建或者ndk開發的各種問題都歡迎來問,大家來討論一下,現在網上資料太少,大家互相學習學的快些