我们有一个跨平台移动应用程序,它使用本机库来读取一些数据(除其他外)。在Android上,数据位于使用Expansion APK机制的obb文件中。这对我们来说工作得很好。但是,我们发现在第二代(2013)Nexus 7表和Nexus 5手机上,我们正在读取obb中已损坏的一些数据。实际的obb文件没有被破坏,但我们从中读取的是。在Nexus设备上从挂载的obb文件中读取损坏的数据
我最好的例子是用WebView从挂载的obb中读取HTML文件。 HTML的第一部分会很好,然后在第二部分中会出现乱码。有趣的是,胡言乱语可以从obb中的其他地方识别为二进制数据。这几乎就像读取obb的Android代码获取块映射错误。
我已经缩小到由某些C触发的代码从obb中读取对象。如果我对此发表评论,当我稍后访问它时,HTML将会很好。现在有可能在代码中存在错误,但是这个库已经在其他两个平台上使用,没有问题。它也适用于第一代Nexus 7和其他非Nexus设备。
那么,有没有人有任何想法,这可能是什么?这些Nexus设备上的Android 4.3.x和Android 4.4.x似乎都会发生这种情况。什么可能是不同的硬件方面,可能会导致这种腐败?我认为像C库与Android并没有内置到固件的某种?
我对此查询没有任何回应。我已经证明几乎可以肯定,这是第二代Nexus挂载obb文件中的一个错误。我可以将其缩小到JNI中引起损坏的2字节的简单fread。向Android开发者报告这种情况的最佳方式是什么?理想情况下,我希望与他们进行对话以询问可能的解决办法。 – btschumy
我不确定这是否相关,但在我的情况下,我从SD卡(我的应用程序创建的)中拖出一个zip文件,在某些情况下,文件在拖动过程中变为损坏关闭SD卡。它在设备上没有损坏,因为我可以读取的是与Android Zip APIs一样好,只是当我将它从设备上拖出时。如果我通过文件管理器应用程序将它传输到网络共享,那么一切都很好,并且没有损坏。当然,这似乎是一个设备问题!顺便说一下,我正在使用nexus 7 4.4.4。 – Andy
我遇到过使用cocos2d-x制作的游戏时遇到的同样的问题,在安装OBB文件时,应用程序将随着资源加载而随机崩溃。有没有人能够克服这个错误? –