美文网首页
AndroidAppBundle分资源之后Unity找不到路径

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

作者: CERI_CHANNEL | 来源:发表于2022-06-08 11:29 被阅读0次

一般来说是用 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;

相关文章

网友评论

      本文标题:AndroidAppBundle分资源之后Unity找不到路径

      本文链接:https://www.haomeiwen.com/subject/hbcmmrtx.html