Unity使用aar打出apk过程一览
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity使用aar打出apk过程一览相关的知识,希望对你有一定的参考价值。
参考技术A 在做android打aar包给Unity使用时,发现Android打的包可能有各种各样的问题,而Unity可能由于自身工程过大造成打包时间极长,遂建立简易Unity工程对aar包进行测试,缩短因aar包导致的打包时间,如下进行一次记录。
注:Unity的游戏体概念相当于java的对象,组件概念相当于java的属性,只不过这个组件本身也是一个对象其内部还有具体属性
一.Unity工程交互文件放置
二.Unity工程交互操作设置
三.Unity工程进行打包设置
四.我的工程相关报错
5.将你所用到的第三方服务的so文件放置于 Android / libs文件夹下
6.将所用的资源文件放置assets文件,上图含有字体文件,百度地图SDK所用图片及个性化地图配置文件
PlayerSettings
1.包名结构: com.公司名.项目名
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脚本构建)
3.一些设置
原因:未正确配置所致的杂奇报错,具体发生条件忘了
查看打包aar与本工程合并文件情况的本地目录:
安装盘符\\Unity\\Editor\\Data\\PlaybackEngines\\AndroidPlayer\\Variations\\mono\\Release\\Classes
示例:D:\\Unity\\Editor\\Data\\PlaybackEngines\\AndroidPlayer\\Variations\\mono\\Release\\Classes
Android导出aar插件供Unity使用以及通过android scheme启动unityApp
unity是5.5,android studio是2.3.3 一:在android Studio导出aar插件到unity 说明一下aar与jar插件的区别:jar是只包含配置文件和class文件,而aar插件是包括资源的,两者都能用压缩软件打开。 首先打开as建立新的工程(一直下一步下一步就行了) 打开之后如果你的也有我这种错误报错(没有的可以省略这一步,不知道是不是我的as有问题,家里的没毛病,公司的就这毛病QAQ) 然后打开你的Gradle文件(有两个,别打开错了) 原来是这样的 然后修改下成下面这样,在点击右上角的try again ok ,开始我们的插件制作 1:首先在你的unity安装目录下面找到calsses.jar包 (Unity5.5\\Unity\\Editor\\Data\\PlaybackEngines\\AndroidPlayer\\Variations\\mono\\Release\\Classes) 然后将这个包拷贝到AS的libs文件夹下面(可以ctrl+c/v) 2:点击这个jar包右键点击Add as library,然后稍等片刻 3:接着我们重新修改一下gradle 把: apply plugin : 'com.android.application' 修改成 apply plugin : 'com.android.library' 删除applicationId "com.lj.test10"这一行
(熟悉的android开发者应该知道这个是把当前的项目变成了library项目,不熟悉的就跟着我弄啦)
最后的效果
4:开始编写程序(我在这编写的是一个简单的打电话程序)
(1)打开mainActivity.class,让他继承UnityplayerActivity 具体如下
然后配置你的AndroidManifast.xml,添加打电话的权限
<uses-permission android:name="android.permission.CALL_PHONE"/>5:然后build,然后之后找到你build之后的aar插件
,点击show in explorer,然后找到outputs文件夹下面的aar文件夹下面的aar插件 6:导入到unity中 然后在你的unity安装路径下面(Unity5.5\\Unity\\Editor\\Data\\PlaybackEngines\\AndroidPlayer\\Apk)找到你的Androidmanifest.xm文件也导入都按untiy中 修改一下: ps:这里我之前出现好几个问题,如果不导入这个最后打包会出现两个图标,或者说直接就不会实现打电话这个功能(最后弄到的这个方案) 7:开始编写c#代码 我的场景是这样,然后给button添加事件 8:OK开始打包(别忘了包名设置) (1)打包途中出现了这样的错误 莫急,这个是因为你开始做插件的时候导入了classec.jar,然后unity打包的时候又会添加一次,所以我们要做的就是把aar插件中的classes.jar删除 用压缩软件打开你的aar插件,然后找到libs文件夹,删除里面的classes.jar (2)回到unity继续build 然后又提莫的出现问题了(我开始也是一脸蒙蔽) 这个问题嘛....还是用压缩软件打开你的aar插件,然后删除res这个文件夹 好了,再build应该就没问题了
9:最后打开使用。 二:利用scheme 启动unity app 定义:android中的scheme是一种页面内跳转协议,是一种非常好的实现机制,通过定义自己的scheme协议,可以非常方便跳转app中的各个页面;通过scheme协议,服务器可以定制化告诉App跳转那个页面,可以通过通知栏消息定制化跳转页面,可以通过H5页面跳转页面等。 1:首先我新建立了一个android工程,页面代码如下 弄完之后build到你的手机上面。 2:在你的刚才制作的aar插件的AndroidManifest.xml配置文件中添加如下代码
<intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.BROWSABLE" /> <category android:name="android.intent.category.DEFAULT" /> <data android:host="test.app" android:scheme="myscheme" /> </intent-filter>ps:data里面的scheme字符以及host都可以自己随便定义 然后修改你的mainActivity.class文件 然后再把这个aar插件导出,删除libs里面的classes.jar包和res文件夹(好吧,有点繁琐,有大神知道更简单的可以指导下),添加到Unity中 ps:这里会问,为什么要回到as工程里面配置清单,不可以在unity的AndroidManifest.xml直接配置吗?答案是可以的,但是最后这样导致了两个情况 (1):是我在插件中写了一个Toast打招呼,单独点开app是可以打招呼的,然后利用scheme跳转打开居然这个打招呼就没了 (2):是我在利用scheme打开的时候如果我想在untiy中获得这个scheme协议是获取不到的(这种情况大多用在scheme中含有参数的时我们 需要获取) 3:导入到Unity中 ,编写C#代码 4:build 到手机,效果如下 延伸一点:如果知道怎么做之后我们就可以实现android app打开unity build 的app,也可以untiy app打开android 的app.... 相关链接: Android Studio如何导出可供Unity使用的aar插件详解 - MingLin - 博客园 Android业务组件化之URL Scheme使用 - 总李写代码 - 博客园 http://www.jianshu.com/p/45af72036e58 http://www.jianshu.com/p/c06063a403c6 有什么问题可以问我,或者我有什么问题请指导下,三克油!!! 附上demo地址: http://download.csdn.net/download/k20132014/10044614 网盘:https://pan.baidu.com/s/1skD7xxV
以上是关于Unity使用aar打出apk过程一览的主要内容,如果未能解决你的问题,请参考以下文章
release-apk 和 release-aar 的签名过程有区别吗
Android Studio 编写aar 到Unity 笔记