我正在开发“扩展文件”的obb集成。我通过在设备的SD卡上复制.obb文件使其在本地工作(4.1),但在我的4.2设备上它不再工作了。
1)在4.1平板电脑上:它运行良好。我在平板电脑上使用adb命令推送了我的扩展包文件,然后我就能找到该文件并阅读它:
adb push main.1.mypackage.obb /sdcard/Android/obb/mypackage/
shell@android:/sdcard/Android/obb/mypackage/ $ ls -al
-rw-rw-r-- root sdcard_rw 20314171 2013-08-05 18:01 main.1.mypackage.obb
2)在4.2:与上面相同的过程中,文件不是“可见的”,主活动上的exists()和canRead()方法都返回false。
adb push main.1.mypackage.obb /sdcard/Android/obb/mypackage/
shell@android:/sdcard/Android/obb/mypackage/ $ ls -al
-rw-rw-r-- root sdcard_rw 20314171 2013-08-05 18:54 main.1.mypackage.obb
解决方案:从那里,我调查了使用应用程序“Android文件传输”,我发现该工具的obb文件夹是空的...所以它不是我将数据推入的相同文件夹...
我使用应用程序“Android文件传输”上传了.obb然后它正在运行......但是在那种情况下我不知道文件存储在哪里(不是在SD卡上,我猜??)
那么伙计们,我需要在4.2上更改我的.obb文件?提前致谢
额外信息:
a)我使用“file.exists()+”canRead =“+ file.canRead()”和Environment.getExternalStorageDirectory进行基本测试来检查文件是否存在:
File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath()
+ "/Android/obb/packagename/main.1.packagename.obb");
b)程序是脚本化的,因此问题不是来自手动错误(并且每次检查三重检查)
修改
c)总结:
在4.2上使用“adb push”时,它正在处理“正常”数据:如果我在/ sdcard / myfolder /中放置了带有图像的文件夹,它正在工作但不在/sdcard/android/.
Android文件传输在根目录下显示“Android / obb”文件夹,在这种情况下,代码中可以看到.obb文件,但是:
内部使用的解决方案
对于< 4.1
adb push main.1.mypackage.obb /sdcard/Android/obb/mypackage/
对于> = 4.2
adb push main.1.mypackage.obb /mnt/shell/emulated/obb/mypackage/
答案 0 :(得分:4)
使用监视器(Android Debug Monitor)将扩展文件放在设备上进行测试。
我使用的命令行adb vs monitor(Android Debug Monitor)使用Nexus 7(非root用户)的经验gui:
1)adb push main.1.com.mypackage.obb /sdcard/Android/obb/com.mypackage/main.1.com.mypackage.obb
看起来很成功。但是,应用程序找不到扩展文件,并且设备上的文件浏览器无法显示该文件。注意:设备没有root,我无法运行adb root。2)使用监视器gui - 从命令行开始:../ sdk / tools /monitor 使用监视器gui显示/ sdcard位置实际上指向了几个不同的文件链接。为了让应用程序看到扩展文件,我必须将扩展文件放到正确的链接文件位置 - 在我的例子中,这是/mnt/shell/emulated/obb/com.mypackage - 哪个adb shell仍未显示,但是设备上的应用程序可以访问该文件。
答案 1 :(得分:0)
据我了解,当您手动将文件推送到Android的文件系统时,一切正常。在这种情况下,我认为问题是adb
中的一些错误或一些错误印刷。
无论如何,您必须provide Google services integration才能从Google服务器下载APK文件,而且您不必处理adb
或任何其他实用程序,因此我认为您不必专注于此问题
不在SD卡上,我猜??
如果它在/sdcard/
文件夹中 - 它在sdcard上。
答案 2 :(得分:0)
Android在4.2中为obb文件夹设置了一些安全防范(对于破解的游戏和东西)。在google的android api
中查看更多信息答案 3 :(得分:0)
我将备份的obb文件从许多游戏中推出,并且更喜欢通过adb将它们推回去,我总是要使用完整的文件夹结构行,所以尝试使用
/mnt/sdcard/Android/obb/AppDataFolderNameHere
所以对你来说代码就是;
adb push main.1.mypackage.obb /mnt/sdcard/Android/obb/mypackage/
shell@android://mnt/sdcard/Android/obb//mypackage/ $ ls -al
-rw-rw-r-- root sdcard_rw 20314171 2013-08-05 18:01 main.1.mypackage.obb
许多Linux设备在mnt文件夹事件中只有sdcard,尽管它是一个单独的存储设备。