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

Dan*_*ato 12 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
Run Code Online (Sandbox Code Playgroud)

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

方法:

Helpers.doesFileExist(context, fileName, xf.mFileSize, false)
Run Code Online (Sandbox Code Playgroud)

为我的文件返回false.

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

/storage/emulated/0/Android/obb/my.package/main.1.my.package.obb
Run Code Online (Sandbox Code Playgroud)

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

Helpers.generateSaveFileName(c, fileName)
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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

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

我做了一切在那里说:

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

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

  • 集成了play_licensing/library和play_apk_expansion/download_library

  • 写了我的服务/接收器

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

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

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

Dan*_*ato 21

自Android 4.2多用户支持已添加.

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

长话短说:

/storage/emulated
Run Code Online (Sandbox Code Playgroud)

是模拟文件系统.

如果你从adb shell进入那个目录,你可能会看到一个

/storage/emulated/obb
Run Code Online (Sandbox Code Playgroud)

目录.有时由于某种原因它没有出现(如果发生这种情况,请参见下文)

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

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

/mnt/shell/emulated/obb
Run Code Online (Sandbox Code Playgroud)

你应该可以把你的文件放在那里.

它将在运行时结束时正确地拾取

/storage/emulated/0/Android/obb/my.package/main.1.my.package.obb
Run Code Online (Sandbox Code Playgroud)

路径.

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

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

  • 您链接的内容绝对是代码使用的正确API,但我们正在讨论知道将obb文件放在设备上的位置,以便您可以测试您的应用,而无需在Google Play上重新发送它.当您针对Obb文件进行开发时,您将在PC上生成Obb文件,然后必须将其放在设备文件系统上的某个位置进行测试.这是关于找到将OBB文件上传到的文件系统的正确路径. (3认同)