Unity ant解决打包65535问题原理(官方解决方案)

随着Unity项目中需要接入SDK增加,总有一天你的项目方法数会超过65K。当你的项目出现65K后,优先推荐sdk包进行裁剪,因为其实很多包我们都没有使用到,或者只使用了其中很小部分的功能,比如google大礼包,完整的google包里面有3W+方法,还有android UI相关的库,方法书暴多,design库有1.5W+方法,其实我们也许就仅仅显示一个外部页面而已,代价确实很大,同时也提醒我们做三方插件的时候一定要注意类似的问题。如果你的包裁剪后还是会出现65K,那么恭喜,我们一起愉快的分包吧。

推荐先阅读 google官方解决方案,google官方提供了gradle自动分包方案,但是没有ant的版本(早已不支持),所以我们需要进行手动分包,并且需要继承MutilApplication。

在分包之前需要将MutilDex库down到本地,推荐打包成jar放在plugins/android/libs下,我们的主工程需要继承MutilApplication,如果没有自定义Application则可以在AndroidManifest中直接指定Application为MutilApplication。

MutilDex库地址:如果嫌麻烦直接使用已经打包好的库。

  • 库分离

分离出需要重新打包到第二个classes.dex问卷的库,从主工程中剥离出来,注意不要把项目Appilication前需要加载的库剥离出,比如google大礼包。我们接入的三方插件的大多数库文件可以放入第二个dex

  • 打包apk文件

将剥离完成后的工程打包

  • 将分离出的库文件打包成.dex
命令:
dx --dex output=classes2.dex(输出文件) bin(输入文件或文件目录)
  • 将打包的dex加入到apk中
命令:
aapt add unsign.apk classes2.dex
  • 重新进行应用签名
jarsigner -verbose -keystore android.keystore -signedjar sign.apk unsigh.apk android.keystore(别名)

最后可以根据需要写到自动化配置中。

  • 自动打包
    custom_rules.xml


    
    
    
    
    
    
        
                
            
    
    
        -add-dex
        
            
            
            
        
        
        
    

     
        
        
            
                
                Signing final apk...${out.packaged.file}
                
                

                
                
                Release Package: ${out.final.file}
            
        
        
    

    
    
    
    

1.根目录 android update project -p .
2.使用 ant debug
发布release版本需要制定秘钥,创建ant.properties

key.store=android.keystore
key.alias=android.keystore

指定秘钥位置和别名,可以不用指定密码

推荐阅读下面的内容:

美团Android DEX自动拆包及动态加载简介

其实你不知道MultiDex到底有多坑

Android拆分与加载Dex的多种方案对比

Jenkins中的Android打包任务设计

ant 入门使用指南

Android自动化构建之Ant多渠道打包实践(下)

Android利用ant手动打包

彻底掌握Android多分包技术MultiDex-用Ant和Gradle分别构建(一)

Android签名机制之---签名过程详解

很好用的工具——查看apk方法数

你可能感兴趣的:(Unity ant解决打包65535问题原理(官方解决方案))