Android导出aar插件供Unity使用以及通过android scheme启动unityApp

来源:互联网 发布:生活的乐趣 知乎 编辑:程序博客网 时间:2024/06/11 21:02
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....
相关链接:http://www.cnblogs.com/xtqqkss/p/6387271.html
http://www.cnblogs.com/whoislcj/p/5825333.html
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


原创粉丝点击