Android OpenGL JNI 开发注意事项
先说一下开发环境,我的开发环境是Android 2.2,ndkr7b,Eclipse 3.5版,因为ndkr7b以后jni编译可以集成到Eclipse中,所以就不需要安装一个大大的Cygwin,并且编译也方便了很多。
但是我在windows中编译ndk自带的例子san-angeles时,总也编译不过,提示找不到gl.h等文件错误,于是上网找帮助。
网上有帖子说解决方法是将包含该文件的include目录作为新的linked folder加入工程中。具体方法如下:
1. 右击工程->New->Folder
2. 对话框中点击Advanced
3. 选择Link to alternate location (Linked Folder),选择需要的include目录
4. Finish后刷新工程,问题解决。
貌似我这样做了之后还是编译不过,依然是找不到gl.h文件错误。
最后只好拿出终极方案,在Android.mk文件中用LOCAL_C_INCLUDES += c:/ndkr8b/platforms/android-8/arch-arm/usr/include类似语句写死文件路径,这次编译总是过了。
可是,可是连接又出错了,这次直接拿出终极方案,在Android文件中用LOCAL_LDLIBS += c:/ndkr8b/platforms/android-8/arch-arm/usr/include/libGLESv1_CM.so等语句写死文件路径,总算可以了连接通过了。
最后到真机上测试,又是错误,加载动态库出了问题,无论是否把libGLESv1_CM.so文件改名重新编译连接,无论是否把libGLESv1_CM.so文件打包进apk,最后都跑不动。
到这里,貌似是碰到死路了。
最后抱着试试看的心情,在虚拟机中用ubuntu/linux编译原始san-angeles源码,没想到超级顺利,什么错误也没有,赶紧拷贝到windows导入eclipse生成最后的apk包。在真机上一跑,超级的顺利就通了。
所以如果要编译OpenGL JNI的代码,最重要的是要在ubuntu中编译。省事省心,一省百省了,切记切记。