AndroidAppBundle分资源之后Unity找不到路径

一般来说是用 SteamingAssetsPath 来获取ab资源的路径,因为资源会存放在 xxx.xxx.xxx/base.apk! 中
但是在 AndroidAppBundle 的分资源过后,资源并不会存放在 xxx.xxx.xxx/base.apk! 中,而是在 分出来的apk中,如下图

企业微信截图_16546857401405.png

adb shell pm path xxx.xxx.xxx 

可以获取包名所在手机的所有apk的路径

adb pull xxx/xxx/xxx.apk xxx/xxx/out.apk

将apk导出之后转成zip解压即可看到里面存放的对应的资源

分出的ab资源会因为AndroidAppBundle的分包 而被分发到 xxx.xxx.xxx/split_install_time_asset_pack.apk! 里
所以在像以前那样使用 StreamingAssetsPath 来获取 ab资源就会找不到,由于 split_install_time_asset_pack 这个并不是一个常量,而是根据android具体实现自定义的一个名称

简陋的一个解决方案:
StreamingAssetsPath.Replace("base.apk!", "split_install_time_asset_pack.apk!")

就能找到那个路径了

一个新的问题,那就是使用 universal 出的 apks 从而导出 apk 的话,又报错找不到资源了,想想就立马明白了,这种模式下是不会又 split_install_time_asset_pack.apk 分包的。
所以先判断 base.apk! 里是否有资源,如果没有再去 split_install_time_asset_pack.apk! 找。

do{
    WWW www = new WWW(Util.CombinePath(AABStreamingAssetsRoot, "xxxxx.ab"));
    while (!www.isDone)
        yield return null;
    if(null != www.error)
        AABStreamingAssetsRoot = AABStreamingAssetsRoot.Replace("base.apk", "split_install_time_asset_pack.apk");
}while(true)
yield return null;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容