我做了一些动态壁纸。我想将其上传到市场并获得指定api级别所需的信息。但是当我设定
<uses-sdk android:minSdkVersion="7" />
在关闭标签后的清单中,墙纸仅在加载时崩溃。我没有在这两个编译之间更改任何其他内容,并且没有标记也可以正常运行。该错误发生在运行墙纸的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@[email protected]@classes.dex
如果您想阅读GLThread的代码,请在这里:https://github.com/markfguerra/GLWallpaperService/blob/master/GLWallpaperService/src/net/rbgrn/android/glwallpaperservice/GLWallpaperService.java
我希望有人可以帮助我。
轰炸机
最佳答案
好的,因为没有人回答,我自己弄清楚了,这是答案:
OpenGL对于不同版本的sdk上的缓冲区似乎有不同的规范。标记实际上会影响它,这很奇怪,因为无论如何该代码都是针对api版本7编译的。
因此,基本上所有我的opengl缓冲区,以前的定义是:
FloatBuffer.wrap(float[]);
现在必须定义为本机订单直接缓冲区并通过以下方式填充:
BufferName.put(float[]);