我正在Pixmap从FileHandleGoogle 的 APK 扩展库(使用StorageManager. OBB 文件已加密。
这在我测试运行 Android 5.1 和 4.3 且没有物理 SD 卡的设备上运行良好,但无法在运行 Android 4.4.1 且有物理 SD 卡的设备上运行。我越来越:
加载像素图时出错:流的解码器初始化失败
这是整个堆栈跟踪:
08-08 15:01:18.839 30228-30285/com.yasesprox.solarball.android W/dalvikvm: threadid=11: 线程退出未捕获异常 (group=0x41bbcd58)
--------- /dev/log/system 的开头
08-08 15:01:18.859 30228-30285/com.yasesprox.solarball.android E/AndroidRuntime:致命异常:GLThread 3615
进程:com.yasesprox.solarball.android,PID:30228
com.badlogic.gdx.utils.GdxRuntimeException:com.badlogic.gdx.utils.GdxRuntimeException:无法加载文件:/mnt/obb/e0fb6be85a09d3afdfb4453fcca775e3/stage_1/screenshot.png
在 com.badlogic.gdx.assets.AssetManager.handleTaskError(AssetManager.java:536)
在 com.badlogic.gdx.assets.AssetManager.update(AssetManager.java:356)
在 com.yasesprox.solarball.extensions.SolarBallStage.loading(SolarBallStage.java:45)
在 com.yasesprox.solarball.misc.LoadingStage.update(LoadingStage.java:36)
在 com.yasesprox.solarball.misc.LoadingStage.act(LoadingStage.java:46)
在 com.yasesprox.solarball.extensions.SolarBallGame.render(SolarBallGame.java:101)
在 com.badlogic.gdx.backends.android.AndroidGraphics.onDrawFrame(AndroidGraphics.java:422)
在 android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1523)
在 android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)
引起:com.badlogic.gdx.utils.GdxRuntimeException:无法加载文件:/mnt/obb/e0fb6be85a09d3afdfb4453fcca775e3/stage_1/screenshot.png
在 com.badlogic.gdx.graphics.Pixmap.(Pixmap.java:140)
在 com.yasesprox.solarball.data.StageDataProvider.instantiateScreenshot(StageDataProvider.java:41)
在 com.yasesprox.solarball.data.StageDataProvider.(StageDataProvider.java:24)
在 com.yasesprox.solarball.data.StageDataProviderLoader.loadSync(StageDataProviderLoader.java:23)
在 com.yasesprox.solarball.data.StageDataProviderLoader.loadSync(StageDataProviderLoader.java:11)
在 com.badlogic.gdx.assets.AssetLoadingTask.handleAsyncLoader(AssetLoadingTask.java:123)
在 com.badlogic.gdx.assets.AssetLoadingTask.update(AssetLoadingTask.java:89)
在 com.badlogic.gdx.assets.AssetManager.updateTask(AssetManager.java:477)
在 com.badlogic.gdx.assets.AssetManager.update(AssetManager.java:354)
在 com.yasesprox.solarball.extensions.SolarBallStage.loading(SolarBallStage.java:45)
在 com.yasesprox.solarball.misc.LoadingStage.update(LoadingStage.java:36)
在 com.yasesprox.solarball.misc.LoadingStage.act(LoadingStage.java:46)
在 com.yasesprox.solarball.extensions.SolarBallGame.render(SolarBallGame.java:101)
在 com.badlogic.gdx.backends.android.AndroidGraphics.onDrawFrame(AndroidGraphics.java:422)
在 android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1523)
在 android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)
引起:java.io.IOException:加载像素图时出错:流的解码器初始化失败
在 com.badlogic.gdx.graphics.g2d.Gdx2DPixmap.(Gdx2DPixmap.java:57)
在 com.badlogic.gdx.graphics.Pixmap.(Pixmap.java:138)
在 com.yasesprox.solarball.data.StageDataProvider.instantiateScreenshot(StageDataProvider.java:41)
在 com.yasesprox.solarball.data.StageDataProvider.(StageDataProvider.java:24)
在 com.yasesprox.solarball.data.StageDataProviderLoader.loadSync(StageDataProviderLoader.java:23)
在 com.yasesprox.solarball.data.StageDataProviderLoader.loadSync(StageDataProviderLoader.java:11)
在 com.badlogic.gdx.assets.AssetLoadingTask.handleAsyncLoader(AssetLoadingTask.java:123)
在 com.badlogic.gdx.assets.AssetLoadingTask.update(AssetLoadingTask.java:89)
在 com.badlogic.gdx.assets.AssetManager.updateTask(AssetManager.java:477)
在 com.badlogic.gdx.assets.AssetManager.update(AssetManager.java:354)
在 com.yasesprox.solarball.extensions.SolarBallStage.loading(SolarBallStage.java:45)
在 com.yasesprox.solarball.misc.LoadingStage.update(LoadingStage.java:36)
在 com.yasesprox.solarball.misc.LoadingStage.act(LoadingStage.java:46)
在 com.yasesprox.solarball.extensions.SolarBallGame.render(SolarBallGame.java:101)
在 com.badlogic.gdx.backends.android.AndroidGraphics.onDrawFrame(AndroidGraphics.java:422)
在 android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1523)
在 android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)
我之前从同一个地方加载了其他资源Pixmap,它们在所有设备上都可以正常工作;就是这个Pixmap。
此外,如果我使用(该文件位于 Android 项目的“assets”文件夹中)Pixmap从内部存储加载它,那么在所有设备上都可以正常工作。Gdx.files.internal
这是怎么回事?