前面的话
我原本是做unity开发的,对于Andrid的了解也就最粗浅的阶段,由于项目需求,需要进行unity和Android的原生项目融合,被逼上梁山.通过各种百度,终于将unity项目的Android项目进行了融合,此次融合使用的unity版本是2018.1,Android方面使用的是Android Studio3.0(朋友推荐反正刚接触安卓,直接看这个)
Unity部分
Unity导出到Android平台的时候,在设置好了相应的Android环境以后,可以直接导出apk的安装程序,也可以导出Android的工程文件,由于我们需要和原生的Andorid程序进行融合所以我们需要导出的就不是apk的安装包,而是一个Andorid工程.为了能导出可供融合的Android工程需要在Unity中进行一些设置.
主要是将BuildSettings中的 Build System 更改为Gradle,勾选Export Project就可以导出供Android Studio使用的工程了.其他的和导出APK的设置一样
看网上说,需要把包名设置成和Android工程的包名一样的,但经过我自己的测试,其实不一样也没有什么关系,根据我的猜测可能是我将这个工程作为了第三方库(AS中叫Module)导入到Android工程中,自身的工程设置不会改变.
所以就算和Andorid原来工程的包名不一样也没有太大关系.
点击Export后找个地方用来存放工程文件,经过一段时间的等待,如果unity工程没错,应该就可以成功导出一个工程了,导出的工程都长这样.
到这里unity里面的操作就完成了,可以说很简单,和平常的没什么差别.接下来就轮到了Andorid里面的操作了.
Andorid部分
打开Andorid Studio 的原生工程,然后以Module的方式将Uniyt的导出的工程导入到Android的原生工程中
点击这个ImpotrModule以后就有一个界面供里选择你要导入的工程的位置,选中以后,会出现一个moduleName的选项,这个是可以编辑的,是显示在Andorid Studio里面这个导入的工程的名字
导入以后切换到Project中(我是小白,表示感觉这样找到文件位置改起来放心点,主要是build.gradle太多,作为小白的我有点懵,虽然后来发现,其实在Andorid的模式下,这些后面都会跟一个路径)
融合的重点来了
首先我们找到导入的这个工程里面一个叫build.gradle的打开
看到的基本就是这样了的需要修改的只要是以下一个地方
1.将 apply plugin: 'com.android.application' 更改为 apply plugin: 'com.android.library'
2.将 compileSdkVersion minSdkVersion targetSdkVersion 设置成和原生工程中的一样
删除掉applicationId这一行
这么做是将这个工程修改成android studio的一个库,来让其他工程调用他
然后我们找到导入的这个工程里面一个src文件夹下的AndroidManifest.xml文件,这个是Andorid的配置文件,这里需要对导入的这个工程进行配置更改,因为unity导出的这个工程默认是作为一个可以发布的安卓工程,而不是一个库
如果你的看起来不是这么规整,那么你可以全选这些代码,然后按ctrl+alt+L将这些代码格式化,看起来就好看多了
这里需要修改的是一下几个地方
1.删除下面的这个代码,如果不删除安装后在手机上会有2个文件
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
2.删除这个<application >标签里面的下面三项
android:icon="@drawable/app_icon"
android:label="@string/app_name"
android:theme="@style/UnityThemeSelector"
到这里对于导入工程的设置就完成了
然后我们需要在原生工程中设置对这个修改好的工程的依赖
这样就添加对于unity导出的工程的依赖
融合的配置方面就完成的,剩下的就是对于根据需求再次开发了
警告
PS警告不应该写在最前面吗?
写最前面我上的当不是白上了.
1.一切正常,测试时提示说你的硬件设备不支持该App,恭喜你中奖了,原因有很多,其中有一种可能是你在untiy中的设置导致的
Target Architetures 需要选中ARMv7和x86
对于这个错误我实在是无力吐槽,我找了好久都没找到27.1.1的平台,百度答案也是五花八门,最后无意中发现其实根本不需要管,或者是前强迫症患者,也可以rebuild Porject 就消失了
最后的话
由于本人是Android的小白一枚,在此过程中碰壁无数,写在这里也只是为了给自己留个痕迹,以防在以后遇见这种需求的时候可以参考,毕竟主业不是做Android的.如果有大佬能指正小弟,在此感激不尽.
最后感谢各位看到这里!!