当前位置:   article > 正文

Unity热更新系列之六 Apk打包资源不压缩以及反编译重新打包压缩问题_unity android assets文件被压缩

unity android assets文件被压缩

我们都知道直接用Unity打Apk包的时候会把StreamingAssets目录下的资源拷贝到assets目录下进行打包,资源是不会被压缩的,但是如果我们是导出AS工程出包的话,我们会发现进游戏会明显的卡顿,排查后发现原因就是用AS打包时放在assets目录下bundle文件被压缩了,那AS工程是需要哪里设置,为什么Untiy直接打包就不会有问题呢?

首先我们从Unity不同出包方式编辑器设置不同开始看:

  1. Internal(Default):Unity内置默认的打包方式,不能导出安卓工程,适用于仅Unity开发的工程。
  2. Gradle(New):使用Gradle进行构建,必须配置签名,可以导出AS工程,选这个才能勾选下面的Export Project,适用于Unity与Android交互的项目。
  3. ADT(Legacy):使用ADT进行构建,可以导出Eclipse项目,比较老的打包方式现逐渐被弃用(Unity2017.3中已经没该选项了)。

知道了上面的设置,那Unity在打包的时候做了些什么动作呢,我们看下Unity安装目录下面的AndroidPlayer目录

这个目录就是Unity在打包时需要的一些配置文件,我们找到Tools/GradleTemplates下的mainTemplate.gradle文件看下

这就是.gradle配置模板文件,发现aapt编译资源文件的设置,noCompress就是指定哪些类资源不需要压缩,终于我们找到原因也知道大概的流程,我们就可以再AS工程.gradle文件添加同样的aapt配置,这样资源就不会被压缩了。

下面我们用AndroidKiller工具去反编译我们用Unity直接出的包,打开apktool.yml文件

发现我们StreamingAssets目录下的资源文件全部被标记为 doNotCompress 不压缩,这时候我们修改AndroidManifest.xml包名并重新编译出包,如果我们的bundle文件目录结构层次比较多导致路径太长就会报错

解决方法有两种,其实原理还是调用aapt编译资源文件,第一种修改doNotCompress配置

第二种是升级 ShakaApktool可以不用修改doNotCompress配置

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/82151
推荐阅读
相关标签
  

闽ICP备14008679号