图1 Unity项目切换到Android平台,并且勾选Export Project。
图2 OtherSetting中,选择相应的架构
图3 确保Unity中配置了正确的SDK,NDK
图4 点击build界面下方的Export,导出项目
图5 导出的项目结构
1.导出的Android项目会把Unity工程中使用到的jar,so整合在一起,Unity本身会生成jar和对应的so,第三方(项目开发者主动引用的jar和so)的不会改变,Export只是简单的Copy操作,意味着关注度低一些,在已有的Android项目中可以代替用到的第三方的jar和so。
2.Unity中可能会有多个Scenes,但是Unity运行到Android设备上时,本质是一个Activity,切换Scene都是在同一个Activity中切换界面。
图6 红圈需要重点关注
Libs文件夹存放是Unity项目中Plugin下面的jar包,以及Unity项目Export时生成的对应的jar,如下图,unity-classes.jar是Android和Unity生成so交互的中间件,一般不会重新生成,如果换Unity3d工具版本(例如:原来使用2018.4.13f,后来使用2019.1.1f),这个jar就会重新生成,意味着这个jar需要替换为新生成的jar。若这个jar不替换,在运行Android工程时,会报错(例如:JNI方法找不到)。
图7 unity本身生成的jar
proguard-unity.txt文件是Unity混淆文件,在Unity中如果没有修改过,这里只会生成Unity自身的混淆逻辑,第三方jar的混淆需要自行添加。
图8 src下main文件夹的目录
图9 assets文件夹的目录
assets文件夹下,主要关注bin目录,此目录下的数据,每次Export工程,都会重新生成,意味着每次Export项目,都要全部替换此目录下的数据。
图10 java文件夹的目录
Java文件夹下,只有一个Acticity,基本不会变动,不用每次Export后替换。
图11 jniLibs目录
此目录下存放Unity项目中所有的so库,以及Unity本身生成的so库,第三方依赖so不会改变,我们只需要关注libil2cpp.so、libmain.so和libunity.so这三个文件,因为每次Export,都会生成新的so库,需要主动替换到已有Android项目中。
res虽然不用特别关注,但是根据2018.4.13fExport出的项目,发现strings.xml中有一行item必须添加到已有Android项目中,因为Unity生成的jar中,强制依赖这个资源。如下图。
图12 strings.xml内容
a.assets下的bin/data
b.jniLibs下的libil2cpp.so、libmain.so和libunity.so
2.目前我使用的版本是2018.4.13f,太旧与太新的UnityExport后可能会有所不同,此文可做参考。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删