我有一个 80Mb 的 apk,因此无法将其上传到 Google Play 商店。我google了很多,发现我必须创建.obb
文件作为主要的扩展文件。
我还发现我可以使用里面的jobb 工具.obb
创建一个文件,但不幸的是它在启动后就关闭了。sdk > tools > jobb.bat
所以我错过了什么吗?
我有一个 80Mb 的 apk,因此无法将其上传到 Google Play 商店。我google了很多,发现我必须创建.obb
文件作为主要的扩展文件。
我还发现我可以使用里面的jobb 工具.obb
创建一个文件,但不幸的是它在启动后就关闭了。sdk > tools > jobb.bat
所以我错过了什么吗?
我用谷歌搜索,发现我们必须制作 .zip,在http://developer.android.com/google/play/expansion-files.html0% (No compression)
中提到
Tip: If you're packaging media files into a ZIP, you can use media playback calls on the files with offset and length controls (such as MediaPlayer.setDataSource() and SoundPool.load()) without the need to unpack your ZIP. In order for this to work, you must not perform additional compression on the media files when creating the ZIP packages. For example, when using the zip tool, you should use the -n option to specify the file suffixes that should not be compressed:
zip -n .mp4;.ogg main_expansion media_files
或如何使用 winrar 制作 0% 压缩 zip?
这里看压缩方法
所以我们应该把这个 zip 上传到 Play 商店。
所以你不需要使用ZipHelper.java
只需简单地使用
ZipResourceFile expansionFile=null;
try {
expansionFile = APKExpansionSupport.getAPKExpansionZipFile(getApplicationContext(),3,0);
AssetFileDescriptor fd = expansionFile.getAssetFileDescriptor("test.mp4");
MediaPlayer mPlayer = new MediaPlayer();
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mPlayer.setDataSource(fd.getFileDescriptor(),fd.getStartOffset(),fd.getLength());
mPlayer.prepare();
mPlayer.start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
尝试这个
$ jobb -d /temp/assets/ -o new-obb-file.obb -k 密钥 -pn com.my.app.package -pv 11
在哪里
-d <directory> : Set the input directory for creating an OBB file.
-o <filename> : Specify the filename for the OBB file.
-k <key> : Specify a password for encrypting a new OBB file
-pn <package> : Specify the package name for the application that mounts the OBB file, which corresponds to the package value specified in your application's manifest.
-pv <version> : Set the minimum version for the application that can mount the OBB file, which corresponds to the android:versionCode value in your application's manifest.
试试这个命令。
我能够使用以下命令创建 OBB 文件,但问题是它没有在应用程序中提取并停留在ZipInputStream zis zis.getNextEntry()
/Users/rohit/Library/Android/sdk/tools/bin/jobb -d /Users/rohit/Workspace/code/iam/repo/music' 'files -o main.33.com.aml.iatia.activity.obb -pn com.aml.iatia.activity -pv 33
作为一种解决方案,我在 MAC 中使用 CLI 创建了下面的命令,它工作得非常好。
zip -r main.33.com.aml.iatia.activity.obb music' 'files -x "*/\.*"