美文网首页Unity与Android
Unity使用aar打出apk过程一览

Unity使用aar打出apk过程一览

作者: 清明捉鬼 | 来源:发表于2019-05-10 18:41 被阅读0次

前言

在做Android打aar包给Unity使用时,发现Android打的包可能有各种各样的问题,而Unity可能由于自身工程过大造成打包时间极长,遂建立简易Unity工程对aar包进行测试,缩短因aar包导致的打包时间,如下进行一次记录。
注:Unity的游戏体概念相当于java的对象,组件概念相当于java的属性,只不过这个组件本身也是一个对象其内部还有具体属性

步骤总结:

一.Unity工程交互文件放置
二.Unity工程交互操作设置
三.Unity工程进行打包设置
四.我的工程相关报错

开始操作

  • 一.Unity工程交互文件放置
    1.建立相关文件夹存储资源 此处建立的文件夹主要有Resources(Unity官方定死的名字)Script(自定义)Plugins \ Android(Unity官方定死的名字)
    2.至Project视图中在Assets 文件新建Resources文件夹、Script文件夹、Plugins文件夹及其子文件夹Android文件夹,
    Script文件夹就用来存储测试的C#脚本代码
    image.png
    看一下当前Unity demo关于安卓文件夹目录
    image.png
    3.将android打好的app-debug.aar包放置与Plugins \ Android文件夹下
    4.将aar包中的AndroidManifest.xml清单文件拖至本文件夹下,同时将此清单文件中的包名改为Unity打包的PlayerSetting中设置的一样(aar中清单文件与本文件夹下清单文件包名必须不同,且除包名外的其它部分必须一致,否则会遇到问题)

5.将你所用到的第三方服务的so文件放置于 Android / libs文件夹下


image.png

6.将所用的资源文件放置assets文件,上图含有字体文件,百度地图SDK所用图片及个性化地图配置文件


image.png
  • 二.Unity工程进行交互设置
    1.选中场景已有对象或者右击新建一个对象,用于作点击按钮(此处选择新建一个Button对象)
    image.png
  1. 再建立一个空游戏体专门用来挂载各种Click脚本取名为“GameClick”


    image.png
  2. 选中刚刚创立的名为GameClick空游戏体将自己写的的脚本拖动挂上去,使其成为一个组件(组件相当于一个对象的属性,只不过这个属性是一个对象),此处我的脚本是 StartAndroid
    image.png
    image.png
  3. 选中Button对象,在其Inspector视图下点击Button属性中的加号为Button游戏体添加点击事件


    image.png
    image.png
  4. 然后 将GameClick拖至刚刚为Button游戏体添加的点击事件中,位置见下图红框处


    image.png

    6.再点击No Function 鼠标移动至你挂在脚本名那一栏选中你想使用的的点击方法(点击方法是自己在脚本里写的)


    image.png

  • 三.Unity工程进行打包设置(此时android aar包已经打包完成)

PlayerSettings

1.包名结构:com.公司名.项目名

image.png

1).Unity里两处公司名、项目名 建议与Package Name里面的一致,不保持一致不影响包名
2).包名可以是大小写,但是一般为小写,在android开发中约定俗成的包名为公司域名反置+项目名,譬如项目名为gameover,公司域名为www.biabia.com,则项目包名为com.biabia.gameover;www.lulu.com,则为 com.lulu.gameover。
3).ProductName为安装后launcher(启动logo)下的名称,在中国一般为中文名,譬如QQ的名称为QQ,支付宝的名称为支付宝,所以不可随意设置,一般设置为最终应用名称。

2.Build System,由于现在AnddroidStudio都是使用Gradle构建的,所以Unity当选择Gradle(在高版本中取消了此选择项,就是由Gradle脚本构建)


11.png

3.一些设置


image.png
此处的一些设置入上图只需要动红框部分即可,Target Api Level实则为当前编译目标版本,其可以向下兼容,意思是如果你的手机是7.0,则其必须大于7.0,此处Automatic其实已经默认为支持的最高版本,无需特殊设置,Minimum API Level则是运行最低版本,低于此设置版本的手机系统都无法正常运行即将打包的软件,这就设置了软件运行环境下限,可以避免许多问题。譬如Android 系统版本迭代后,高版本与低版本开发技术手段产生差异,那么低版本就得做兼容处理,兼容则是使用低版本开发手段再写一遍,否则就会崩溃,举个栗子,Android4.0的安全性不够高,其系统大部分都可以被高度定制,但是5.0以后则改进了很多,一些用于自定义系统的产品就会选用5.0以下譬如PDA开发厂商或者夜神模拟器,针对这些系统开发应用使用新技术开发包——MateriaDesign,下的一些动画与控件或者注解就会使应用崩溃,为了兼容低版本你就必须if else的判断当前系统版本,针对版本做相应的操作,系统冗余码很多,那部分收集用户也不是你的目标用户,所以就可以用最低版本限制,不让这部分手机用户玩。
  • 四.我的工程相关报错(相关报错可能有误,谨慎查看)
    1.此为包名不遵循规则的的报错
    image.png
    2.此为清单文件报错
    image.png
    3.classes转dex报错
    这个报错截图因为包被替换现在无法复现
    原因:aar包中引用的Unity classes.jar并非本机Unity版本的classes.jar。
    解决:从Unity软件安装路径(非当前Unity工程路径)
    D:\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes
    安装目录下把这个 classes. jar 放进Android工程的中添加依赖,重新打包成aar,并在Unity工程重新被引用
    4.Player Settings中的打包名与aar包名一致导致报错
    image.png
    解决:将Player Settings中的包名与aar包名设置不一致,且Player Settings中的包名要与Plugins\Android\AndroidManifest.xml的包名保持一致
    5.日志中报地图签名错误
    原因:百度地图开放平台的key未正确配置
    解决:百度地图开放平台的包名得与Player Settings中的包名一致,且百度key中的sha1值配置必须是使用签名文件生成,并正确配置清单文件AndroidManifest.xml中的key (Plugins\Android\AndroidManifest.xml与aar中的最好保持一致,否则可能会报清单文件无法merge的错误)
    image.png
image.png 6. image.png

原因:未正确配置所致的杂奇报错,具体发生条件忘了

查看打包aar与本工程合并文件情况的本地目录:
安装盘符\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes
示例:D:\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes


image

相关文章

网友评论

    本文标题:Unity使用aar打出apk过程一览

    本文链接:https://www.haomeiwen.com/subject/vemmoqtx.html