我将OBB文件放在哪里以测试Nexus4上的Android扩展包文件(OBB)?

我将OBB文件放在哪里以测试Nexus4上的Android扩展包文件(OBB)?,android,apk-expansion-files,Android,Apk Expansion Files,我正试图按照以下指南在Android中测试扩展包文件(OBB): 我现在需要在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) 为我的文

我正试图按照以下指南在Android中测试扩展包文件(OBB):

我现在需要在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)
使用adb shell浏览设备时,Environment.getExternalStorageDirectory()返回的/storage/emulated/0不存在

但在运行时,在应用程序内部,我也检查了它包含的内容:它包含与我在/mnt/shell/emulated/0中找到的内容几乎相同的内容,它包含Android/obb dir,它是空的

我是如何找到放置obb文件的路径/mnt/shell/emulated/0/Android/obb/my.package/main.1.my.package.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文件放在哪里,以便它在运行时处于正确的位置

我做了那里说的一切:

  • 在市场上创建了一个草稿应用程序以获取公钥

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

  • 集成的play_许可/库和play_apk_扩展/下载_库

  • 写信给我的服务/接收人

  • 使用助手等进行检查。。就像文件上说的那样

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


我无法在模拟器上测试,因为我使用3D和设备摄像头。

因为添加了Android 4.2多用户支持

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

长话短说:

/storage/emulated
是模拟的文件系统

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

/storage/emulated/obb
目录。有时,由于某种原因,它不会出现(如果发生这种情况,请参阅下面的操作)

它不在/Android/obb中,但它是放置应用程序包/obb文件的正确目录

如果看不到该目录请尝试查找:

/mnt/shell/emulated/obb
你应该可以把你的文件放在那里

它将在运行时正确拾取,并在

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

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


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

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


不是“/mnt/shell”

这不应该奏效吗?您链接的API绝对适合代码使用,但我们讨论的是知道在设备上物理放置obb文件的位置,这样您就可以在不必在Google Play上重新启动应用程序的情况下测试应用程序。当您针对Obb文件进行开发时,您在PC上生成Obb文件,然后必须将其放在设备文件系统的某个位置进行测试。这是关于找到要将OBB文件上载到的文件系统的正确路径。这取决于操作系统版本。你有什么设备,使用哪个操作系统版本?没错,这只适用于Android Emulator 4.2