2011-02-07 64 views
1

我做了一個小動態壁紙。我想將其上傳到市場,並獲得我需要指定api級別的信息。但是,當我設置使用-sdk標籤崩潰動態壁紙

<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/[email protected]@[email protected] 

如果你想讀GLThread的代碼,它在這裏:https://github.com/markfguerra/GLWallpaperService/blob/master/GLWallpaperService/src/net/rbgrn/android/glwallpaperservice/GLWallpaperService.java

我希望有人能幫助我與此有關。

mblaster

回答

2

OK,因爲沒有人回答我理解了它自己,這裏就是答案:

的OpenGL似乎有關於在不同的SDK版本緩存不同的規格。奇怪的是,標籤實際上會影響它,因爲代碼無論如何都是針對api版本7進行編譯的。

所以基本上我所有的OpenGL緩衝區,以前這裏被定義爲:

FloatBuffer.wrap(float[]); 

現在必須通過將其定義爲本地訂單直接緩衝區並填充:

BufferName.put(float[]);