我在哪里放置OBB文件来测试Nexus 4上的Android扩展包文件(OBB)?

时间:2013-10-18 15:51:28

标签: android apk-expansion-files

我正在尝试按照此处的指南测试Android中的扩展包文件(OBB): http://developer.android.com/google/play/expansion-files.html

我正处于需要在Nexus 4上测试应用程序的步骤。

我使用jobb生成了我的.obb文件,并在此位置的设备中将其推入adb:

/mnt/shell/emulated/0/Android/obb/my.package/main.1.my.package.obb

当应用程序运行时,它找不到该文件。

方法:

Helpers.doesFileExist(context, fileName, xf.mFileSize, false)

为我的文件返回false。

我调试并发现它正在寻找文件:

/storage/emulated/0/Android/obb/my.package/main.1.my.package.obb

具体来说,这是返回的路径:

Helpers.generateSaveFileName(c, fileName)

Environment.getExternalStorageDirectory()返回的/ storage / emulated / 0不存在,使用adb shell浏览设备。

但它在运行时,在应用程序内部,我还检查了它包含的内容:它包含与/ mnt / shell / emulated / 0中发现的几乎相同的内容,它包含Android / obb目录,它是空的。

我如何找到路径/mnt/shell/emulated/0/Android/obb/my.package/main.1.my.package.obb我放置了我的obb文件:

$ adb shell
$ ls -ld sdcard
lrwxrwxrwx root     root              2013-10-16 17:34 sdcard -> /storage/emulated/legacy
$ ls -ld /storage/emulated/legacy
lrwxrwxrwx root     root              2013-10-16 17:34 legacy -> /mnt/shell/emulated/0

在里面,我已经找到了Android / obb目录,空了。

所以问题是:我应该在哪里把我的obb文件放在运行时的正确位置?

我做了一切都在那里说:

  • 在Market中创建了一个草稿应用程序来获取公钥

  • 生成一个20字节(盐)的随机数组

  • 整合了play_licensing / library和play_apk_expansion / download_library

  • 写了我的服务/接收器

  • 使用助手等进行检查..完全像文档说的那样。

我想一切正常但我还不能在Play商店发布!我需要在本地测试,我需要在开发的初始阶段经常更改我的obb文件。

我无法在模拟器上进行测试,因为我使用3D和设备相机。

2 个答案:

答案 0 :(得分:20)

由于已添加Android 4.2多用户支持。

为了支持Android为每个充当实际文件系统的沙箱层的用户安装模拟磁盘:这样,Android可以优雅地处理用户之间的文件或个人文件。

长话短说:

/storage/emulated

是模拟文件系统。

如果从adb shell进入该目录,您可能会看到

/storage/emulated/obb

目录。有时由于某种原因它不会出现(如果发生这种情况,请参见下文该怎么做)

它不在/ Android / obb中,但这是放置app package / obb文件的正确目录!

如果您没有看到该目录,请尝试查看:

/mnt/shell/emulated/obb

您应该可以将文件放在那里。

它将在

结束的运行时正确拾取
/storage/emulated/0/Android/obb/my.package/main.1.my.package.obb

路径。

我认为Android文档应该解释这一点。

(我回答我自己的问题,因为我在写作时发现了如何解决它。)

答案 1 :(得分:2)

对我来说,正确的位置是:mnt / sdcard / Android / obb / nameofyourpackage /

NOT" / mnt / shell"