近期接到了一个新的需求是接入台湾版的SDK。从SDK提供商那边拿到的分别是Android端和iOS端的两个包,没有直接提供支持Unity接入的unityPackage,那就只能分开接入了。本文描述的是接入Android端的过程,以及血泪史。。
Android端拿到的是一个aar包,里面是一些API供Android原生调用,要放入Unity供Unity调用的话,是需要接入UnityPlayerActivity,我的思路就是创建一个Android Library引用SDK包,并编写供Unity调用的函数,然后导出aar包。将这个aar包及SDK的aar包放入Unity使用。
那么就先开始创建一个项目吧。
要编写供调用的函数首先要找到Unity提供的 classes.jar 这个包,文件的位置在你的Unity安装项目目录:Unity -> Editor -> Data -> PlaybackEngines -> AndroidPlayer -> Variations -> il2cpp -> Release -> Classes。如果找不到Unity安装目录可以右击桌面的Unity图标,选择“打开文件所在的位置”,就能够到达Data文件夹,然后逐级往下找就能找到啦。
接下来要做的就是将classes.jar文件导入Android Studio的libs文件夹中,点击app,然后双击libs文件夹就能找到libs的位置了,然后复制jar包,粘贴进去。
导入后,需要在app级的build.gradle中加入引用(如下),这样就可以使用这个jar包了~
implementation files('libs/classes.jar')
点击右上角的Sync Project with Gradle Files按钮,或者提示条上的Sync Now可以检查build.gradle文件有没有出错。
这个时候,重复上述导入jar包的步骤就可以导入SDK的aar包了,同样放在libs文件夹中,并在build.gradle里面配置引用,并且配置aar包需要的其他配置。aar包的引用配置跟jar包一样:
implementation files('libs/包名.aar')
这时候可以在MainActicity.java文件中写Unity交互代码了!本文就不赘述代码的编写了,将在另一篇文章中写Unity和Android交互。
写完Java代码后,就要开始导出aar包了,在导出aar包前还有一些事情要做,就是修改build.gradle配置。我们在新建一个Android Studio项目时,默认设置为application,这时候build的话会获得一个apk包,所以要修改。
applyplugin:'com.android.library'
这时将复制一份AndroidManifest文件供导入Unity使用,然后修改项目中的AndroidManifest文件:
然后修改activity_main.xml文件
点击Build -> Build Bundle(s)/APK(s) -> Build APK(s) 打包
这时候会获得一个app-debug.aar的包,位置如图
在导入Unity之前,需要删除这个aar包中的classes.jar以及引用的sdk包,不然在Unity打包的时候会发生冲突。如图,找到aar所在位置,右击打开aar,找到libs文件夹,删除里面的文件。
然后将这个文件拖入Unity项目,并且把sdk包拖入Unity项目中,同时还有AndroidManifest文件以及Unity中需要配置的gradle文件。其中,AndroidManifest文件可以直接从自己的项目中拷贝出来,gradle文件需要复制Unity提供的模板文件,然后进行修改。找到Unity项目Unity -> Editor -> Data -> PlaybackEngines -> AndroidPlayer -> Tools -> GradleTemplates,复制 mainTemplate.gradle 文件到Unity项目中。
打开 mainTemplate.gradle 文件,找到dependencies,将之前在Android Studio项目中所写的SDK所需配置复制到里面,就完成Unity的build配置了。
打开导入Unity的AndroidManifest文件,做一些修改
接下来就可以在Unity中编写代码了,写完就可以打包了。
在Unity中使用Gradle打包将写于下一篇文章。