Unity的internal 与 gradle 构建方式浅析

前言

最近进行unity继承Android前期调研输出的文档。公司早期用的Internal,最近准备更换gradle构建方式。

1.Internal 打包

1.使用 aar 集成到 unity中 unity的机制本身就不能使用AppCompatActivity 只能继承Activity AppCompatActivity使用不了。 [依赖问题]

AppCompatActivity是v7包中的,它继承了Activity,同时还继承了v7包下FragmentAcivity。可以实现更多功能,兼容性更好 ,API22之后 谷歌遗弃了 ActionBarActivity,推荐我们也可以说是强制我们使用AppCompatActivity。 [依赖问题]
集成进入 unity 经常是 android 打出来的aar 自己demo 可以跑起来 在正式的unity项目中 编译不过 [依赖问题]

2.android 打出来的aar包 style打包不进来 一些动画效果 放入style里面的各种属性 全面屏的适配 不好弄 [依赖问题]

3.有些生成的aar 直接放入unity 编译打包时编译不过 比如xUtils中的基于注解和反射实现的视图注入框架的话 打成aar包时项目必须设为library

设置为library后框架的视图注入功能就无法使用了,甚至连switch()这样的代码都用不了 [library特性] 一些特殊的字符 如“ $ {}” 也编译不过 。清单文件中定义的变量

4.打包成 aar 的时候 android 的.Gradle打包不进aar 不方便管理依赖库 项目依赖了某些库那么在打包的时候要一并将这些库的jar/aar一并导入到Unity目录之中,升级依赖或者添加依赖全部都要手动进行 [依赖问题]

5.android集成unity 可找的资料很少很少 并且基本上都推荐 unity 集成到原生开发中去,原生集成到unity中去 会麻烦一点 难度会大一点 后面的风险不好控制 [效率问题]

2.gradle打包

android 打jar 集成到unity出apk包 首先 集成的时候 要找很多jar包和aar包 并且每一个不同的api版本 所涉及的jar包和aar包都不相同,集成到unity里面去有些编译不过,还得解压去除编译不过的代码。 [依赖问题]

打包方式很费事,费时,效率低,无法对AAR包进行调试,首页是 我这边要保证集成到unity的aar在自己的Demo中可以跑通,然后想办法 从外网传到内网 ,
在集成进unity项目,一旦unity 打apk 编译不通过 这个过程 又得重新来 ,打出apk包 这个过程得半个小时 再从内网传到外面 打出来的apk 运行有bug
这个过程还得重新来 并且bug还不好发觉 这样下来 打包 出包 解BUG几趟 一天时间就完了

unity原项目是好的 RN 项目是好的 都可以运行 一旦集成RN集成到到unity项目中 android 9.0就不可以运行网络 这个问题 用了各种方式 单纯RN的解决了
集成这个RN 这么实在没好的方法去解决 [无法联机调试,bug定位困难]

android 打aar包 集成到unity 直接出包 涉及的依赖太多了 ,当项目越来越大的时候 就必须要分包 unity android 分包就是添加依赖库通mainTemplate.gradle依赖配置文件
并且 .gradle方式 必须要 用 Gradle导出方式

3.Unity build System

Unity build System 分两种Build方式:Internal,Gradle,ADT(早期)

在这里插入图片描述

早期包含ADT,提供导出Eclipse工程的操作。。
在这里插入图片描述

Unity版本与gradle插件对应关系

Unity版本Android plugin
versionGradle version
2017.1、2017.22.1.02.14
2017.4,2018.12.3.04.0.1
2018.23.0.14.2.1
2018.33.24.6

Android studio 默认gradleWrap目前最高版本为5.1.1。

目前unity+Android 混编主流方案,采用gradle方式出apk包。

采用Gradle配置优点:

1.采用gradle构建系统,管理项目中用到的依赖更灵活。
2.原生集成unity,所用的依赖jar,通过gradle脚本直接声明后,可以自动去jcenter,google,maven仓库搜索。免去手动拷贝jar包造成依赖混乱,依赖无法找到问题。
3.Unity支持gradle方式管理依赖,原生开发同样支持。一套依赖配置文件合一两端同时使用。
4.出包时间可控。默认支持所有Android原生特性。

采用intenal出包缺点:

4.无法使用gradle依赖管理方案,所有依赖需要以aar,jar方式进行手动整合,问题较多,打包apk时间不可控。
5.打包方式很费事,费时,效率低
6.无法联机调试,bug定位困难
7.intenal为早期集成方案。主要针对纯unity代码。
8.默认不支持Android原生特性。采用internal打包方式
9.依赖问题解决时间要远远大于开发时间。
10.混合开发官方建议采用gradle方案

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

灯塔@kuaidao

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

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

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

打赏作者

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

抵扣说明:

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

余额充值