1

我做了一个小动态壁纸。我想将它上传到市场并获得我需要指定 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@app@com.mblaster.LaserShowLWP-1.apk@classes.dex

如果你想阅读 GLThread 的代码,这里是:https ://github.com/markfguerra/GLWallpaperService/blob/master/GLWallpaperService/src/net/rbgrn/android/glwallpaperservice/GLWallpaperService.java

我希望有人可以帮助我。

冲击波

4

1 回答 1

2

OK, as nobody answered and I figured it out myself, here is the answer:

OpenGL seems to have different specifications regarding buffers on different sdk versions. It is strange that the tag actually affects it, as the code was compiled against the api version 7 anyway.

So basically all my opengl buffers, that previously where defined by:

FloatBuffer.wrap(float[]);

now have to be defined as native order direct buffers and filled via:

BufferName.put(float[]);
于 2011-02-08T19:33:59.357 回答