Unity打android包时出现64K limitation

在使用Unity 5.3.4版本打包Android应用时,由于Unity的bug,即使小型工程也可能遇到64K方法限制问题。原因是Unity错误地将所有Library Project的资源引用到R.java中,导致字段和方法数量超出限制。解决办法是修改不包含资源的Library Project的manifest,将PackageName改为主工程的PackageName,避免生成多余R文件。Unity 5.5及以上版本通过Gradle打包可能也能解决此问题。
摘要由CSDN通过智能技术生成

Android本身对于method和field的数量都有64k的限制,所以如果你的Unity工程很大的话,出现这个问题是正常的。不过我居然在一个小工程上遇到了这个问题,而这一切都是Unity的bug作祟。。。


首先工程的情况是这样的:
Unity版本 5.3.4
工程不大
android工程里引用了一堆android support和google play之类的Library Project

如果你的Unity工程和上面情况类似,并且打包的时候遇到了method或者field超过64k的问题,那可能你也遇到了这个bug。这个bug就是Unity在打包的时候每个工程下的R.java文件会错误的引用所有工程的资源文件,从而导致R.java中的field和method数量爆炸。。

对android有点了解的人都知道,android编译的时候会生成一个R.java,其中存有一堆final static的变量,存放着android的res目录下的各种资源id,包括layout,string,drawable等等。正常情况下,每个R.java都应该只引用本工程下的资源文件。但是在使用Unity打包的时候,会出现我上面说的那个问题。

举个栗子:
你的工程叫A,有两个引用D1和D2,A,D1,D2中各有10个资源,正常用android打包的话,只占30个field,但是Unity打包的话会出现30*3=90个field。。。而我引用了20多个包,20多个包总共有近三千个资源,随随便便就七万多了。而这个bug又十分隐蔽,从Eclipse或者AS上看不出任何迹象ÿ

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值