未解决:Android 使用obb步骤
程序员文章站
2022-06-13 12:30:21
...
1.通过unity 导出 包含obb的工程。
2.按照google 官方给定的obb命名方式,已经存放路径进行操作
Obb方式:https://developer.android.com/google/play/expansion-files
命名方式:[main | patch]。<扩展版本>。<程序包名称> .obb
eg:main.314159.com.example.app.obb
2.1存放路径
Sd\Android\obb\package name\ main.versoncode.packagename.obb
3.使用jobb 脚本进行自行编译
脚本位置D:\normalsoft\sdk\tools\bin\jobb.bat
D:\normalsoft\sdk\tools\bin\jobb.bat -d E:\reWorldGame\unity\src\main\assets\ -o E:\reWorldGame\unity\src\main\out.obb -pn
com.codereview.reworldhaiwai -pv 10000
4.在本地测试obb包并尝试合并
如图放到指定的路径下
5.在显示Unity场景之前,挂载Obb文件。
本例在Application中调用该方法。进行untiy挂载
eg:
public void mountExpansion() {
Logger.d("开始挂载obb 文件");
storageManager = (StorageManager) getContext()
.getSystemService(Context.STORAGE_SERVICE);
String packageName = getPackageName();
String filePath = Environment.getExternalStorageDirectory()
+ "/Android/obb/" + packageName + "/" + "main."
+ AppConfig.VERSION_CODE + "." + packageName + ".obb";
Logger.d("开始 obb path=" + filePath);
final File mainFile = new File(filePath);
if (mainFile.exists()) {
Logger.d("STORAGE", "FILE: " + filePath + " Exists");
} else {
Logger.d("STORAGE", "FILE: " + filePath + " DOESNT EXIST");
}
String key = "thisIsMyPassword";
if (!storageManager.isObbMounted(mainFile.getAbsolutePath())) {
if (mainFile.exists()) {
if (storageManager.mountObb(mainFile.getAbsolutePath(), null, onObbStateChange)) {
Logger.d("STORAGE_MNT", "SUCCESSFULLY QUEUED");
} else {
Logger.d("STORAGE_MNT", "FAILED");
}
} else {
Logger.d("STORAGE", "Patch file not found");
}
}
}
OnObbStateChangeListener onObbStateChange = new OnObbStateChangeListener() {
@Override
public void onObbStateChange(String path, int state) {
super.onObbStateChange(path, state);
Logger.d("开始 PATH = "+ path);
Logger.d("开始 STATE = "+state + "");
if (state == OnObbStateChangeListener.MOUNTED) {
expansionFilePath = storageManager.getMountedObbPath(path);
Logger.d("开始 STORAGE-->MOUNTED" + expansionFilePath);
} else {
Logger.d("开始 Path: " + path + "; state: " + state);
}
}
};
输出内容如下:
20 = ERROR_INTERNAL ,内部错误
问题分析:
1.unity 导出obb包本身存在问题
2.Android 集成方式问题,排查未发现明显问题
推荐阅读
-
Android中加载网络资源时的优化可使用(线程+缓存)解决
-
新手使用Android Studio会遇到的两个问题和解决办法
-
Android 使用【AIDL】调用外部服务的解决方法
-
Android Fragment中使用SurfaceView切换时闪一下黑屏的解决办法
-
Android中使用pull解析器操作xml文件的解决办法
-
百度影音播放器安装使用步骤以及常问题解决方法
-
Android中使用Toast.cancel()方法优化toast内容显示的解决方法
-
android TextView多行文本(超过3行)使用ellipsize属性无效问题的解决方法
-
Android PhotoView使用步骤实例详解
-
使用ViewPager实现android软件使用向导功能实现步骤