我做了一个小动态壁纸。我想将它上传到市场并获得我需要指定api级别的信息。但是当我设置
<uses-sdk android:minSdkVersion="7" />
在关闭标签后,在Manifest中,壁纸在装载时崩溃。我没有更改两个编译之间的任何其他内容,它没有标记运行良好。错误发生在运行壁纸的opengl线程深处某处,因此异常消息实际上没有用处。至少我不知道那里有什么可能崩溃。
W/dalvikvm( 3838): threadid=9: thread exiting with uncaught exception (group=0x40201560)
E/AndroidRuntime( 3838): FATAL EXCEPTION: GLThread 10
E/AndroidRuntime( 3838): java.lang.IllegalArgumentException: Must use a native order direct Buffer
E/AndroidRuntime( 3838): at com.google.android.gles_jni.GLImpl.glVertexPointerBounds(Native Method)
E/AndroidRuntime( 3838): at com.google.android.gles_jni.GLImpl.glVertexPointer(GLImpl.java:1121)
E/AndroidRuntime( 3838): at com.mblaster.LaserShowLWP.MyRenderer.drawLaserRays(MyRenderer.java:406)
E/AndroidRuntime( 3838): at com.mblaster.LaserShowLWP.MyRenderer.onDrawFrame(MyRenderer.java:109)
E/AndroidRuntime( 3838): at net.rbgrn.android.glwallpaperservice.GLThread.guardedRun(GLWallpaperService.java:675)
E/AndroidRuntime( 3838): at net.rbgrn.android.glwallpaperservice.GLThread.run(GLWallpaperService.java:540)
I/installd( 134): unlink /data/dalvik-cache/data@app@com.mblaster.LaserShowLWP-1.apk@classes.dex
如果您想阅读GLThread的代码,请点击此处:https://github.com/markfguerra/GLWallpaperService/blob/master/GLWallpaperService/src/net/rbgrn/android/glwallpaperservice/GLWallpaperService.java
我希望有人能帮助我。
mblaster
答案 0 :(得分:2)
好的,没有人回答,我自己弄明白,这就是答案:
OpenGL似乎对不同sdk版本的缓冲区有不同的规范。奇怪的是,标签实际上影响了它,因为代码是针对api版本7编译的。
所以基本上我所有的opengl缓冲区,以前由:
定义FloatBuffer.wrap(float[]);
现在必须定义为本机订单直接缓冲区并通过以下方式填写:
BufferName.put(float[]);