美文网首页
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