建立一個用了OpenGL的ndk Android專案
阿新 • • 發佈:2019-01-24
如果是匯入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開發的各種問題都歡迎來問,大家來討論一下,現在網上資料太少,大家互相學習學的快些