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

我们都知道直接用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配置

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值