Unity-Android 打包报错

目录

报错:

分析:

1.代码剔除等级设置

2.什么方式会被剔除

3.解决办法


报错:

FileNotFoundException: Could not load file or assembly 'XXX' or one of its dependencies

           at System.AppDomain.Load (System.String assemblyString, System.Security.Policy.Evidence assemblySecurity, System.Boolean refonly) [0x00016] in <9c7b91d55b9d48c5bd518984f8999ef6>:0 
           at System.AppDomain.Load (System.String assemblyString) [0x00000] in <9c7b91d55b9d48c5bd518984f8999ef6>:0 
           at (wrapper remoting-invoke-with-check) System.AppDomain.Load(string)
           at System.Reflection.Assembly.Load (System.String assemblyString) [0x00005] in <9c7b91d55b9d48c5bd518984f8999ef6>:0 

报错原因:unity的代码剔除打开后把我用到的dll剔除了 运行时找不到脚本自然就报错了

分析:

1.代码剔除等级设置

在playersetting->othersetting->managed stripping level 分为三个等级 低中高

Low: 剥离的代码非常少,对于包的大小作用很小。这是unity的il2cpp的默认剥离级别.
Medium:在Low和High中取得平衡,即没有Low那么谨慎,也不会像High那么极端
High: 优先考虑的是包的大小,而不是可用性。对于可用性,是通过辅助的link.xml来进行人为保留需要的库里面的命名空间或者制定的类. 

2.什么方式会被剔除

High的剔除等级下:

        目前个人测试,如果有明确的引用的dll不会被剔除 

        通过反射使用的dll会被剔除掉

3.解决办法

在 工程 Assets 目录下创建link.xml文件把不需要剔除的dll手动加上去 

怎么加

就这样加:

<linker>
       <assembly fullname="dll名字">
            <type fullname="*" preserve="all" /> 
       </assembly>
</linker>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一梭键盘任平生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值