Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何更改代码以使用APK扩展文件?_Android_Apk - Fatal编程技术网

Android 如何更改代码以使用APK扩展文件?

Android 如何更改代码以使用APK扩展文件?,android,apk,Android,Apk,我的应用程序超过50MB,因为我使用了很多MP3文件。我通常这样做 uri = Uri.parse("android.resource://red.cricket.RecordAlbum/" + R.raw.track_001_64kb ); 。。。但是如果我必须使用APK扩展文件,我假设上面的代码行必须更改。但是换成什么呢?非常感谢您的帮助 编辑1) 谢谢你的回答,泰德。我确实创建了扩展文件,如下所示: red@ubuntu:~/android/workspace/Album/res/raw

我的应用程序超过50MB,因为我使用了很多MP3文件。我通常这样做

uri = Uri.parse("android.resource://red.cricket.RecordAlbum/" + R.raw.track_001_64kb );
。。。但是如果我必须使用APK扩展文件,我假设上面的代码行必须更改。但是换成什么呢?非常感谢您的帮助

编辑1) 谢谢你的回答,泰德。我确实创建了扩展文件,如下所示:

red@ubuntu:~/android/workspace/Album/res/raw$ zip -n .mp3 main.1.com.redcricket.Album.obb *mp3

那我现在该怎么办<代码>rm-f*mp3;cd./。。;蚂蚁清洁;ant debug不知何故,我认为这是行不通的。我应该把
main.1.com.redcricket.Album.obb
文件放在哪里

步骤在中的布局非常清楚。概括而言,这些步骤是:

  • 从.apk中删除.mp3文件并将其放入扩展文件中。根据说明命名扩展文件。文件的格式可以是您想要的任何格式,但文档建议音频文件使用未压缩的ZIP格式。Android包含了一个可用于直接从ZIP文件加载.mp3文件而无需解包的
  • 重写应用程序以在位置中查找扩展文件

    Context ctx = getContext();  
    String loc = ctx.getExternalStorageDirectory()
             + "/Android/obb/" + ctx.getPackageName();
    
  • 编写代码,这样如果文件不在那里,你的应用程序将使用文档中描述的从Google Play下载。这一步涉及到相当多的编码和配置

  • 使用APK扩展ZIP库访问所需的.mp3文件。文档中有通过调用文件描述符、ZIP文件偏移量和文件长度从扩展文件加载MP3的示例

  • 另请参阅以了解有关如何执行所有这些操作的更多详细信息。

    您阅读了吗?是的,我在这里看到了:但我仍然不明白我应该做什么。谢谢Ted,我仍然被卡住了。obb文件在哪里?在上传到google play之前,我想用APK扩展修改测试我的应用。@RedCricket-要测试读数,只需将扩展文件放在测试设备的正确位置即可。要测试下载,您需要上传它(至少以草稿形式)。这也被描述。如果你担心弄乱你现有的应用程序(我会的),你可以上传一个测试应用程序来检查下载逻辑。设置许可测试响应,一切都应该正常。如果您从未发布过测试应用程序,您最终可以从Google Play中删除它的所有痕迹。哦,太好了,现在eclipse找不到Android SDK:(@RedCricket-我的同情。我曾经有过这样的日子。@RedCricket-这是在文档中指定的。它位于文件夹名中,该文件夹名将分配给
    loc
    ,我在我的回答中发布的代码:
    /mnt/sdcard/Android/obb/
    ,其中
    是清单中声明的应用程序包的名称。文件名sh应该是
    main…obb