AndroidStudio导出aar包给Unity


前言:



之前一直使用Eclipse导出jar包来作为Android与Unity的交互,但是最近Google及各个SDK商在大力推广比Eclipse更为便捷的AndroidStudio,因此为了与时俱进不被时代抛弃,我们也开始用aar包代替jar包。故此研究了AndroidStudio如何导出aar包给Unity。发现网上的教程虽然多,但是部分文章其实是有错误的地方,或者是不详细的地方,在此决定给大家更为详细的,而且亲测无误的教程。

详细步骤:


1、新建项目:

 

 

unity ab包 每次都要下载吗 unity aar包_unity ab包 每次都要下载吗

 

unity ab包 每次都要下载吗 unity aar包_跨平台_02

 

unity ab包 每次都要下载吗 unity aar包_Android_03

2、添加Unity的classes.jar引用

1)把Unity引擎目录下的classes.jar文件拷贝至Android Studio工程中的libs目录

 

Unity版本为5.0之前时,classes.jar的路径:

unity的安装路径\Editor\Data\PlaybackEngines\androidplayer\bin下的classes.jar

Unity版本为5.0及其之后时,classes.jar的路径:

unity的安装路径\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono

\Release\Classes

 

 

unity ab包 每次都要下载吗 unity aar包_unity ab包 每次都要下载吗_04

2)右击"Project"视图,打开"Open Module Settings", 添加“classes.jar”依赖

 

unity ab包 每次都要下载吗 unity aar包_Android_05

 

unity ab包 每次都要下载吗 unity aar包_Unity_06

 

unity ab包 每次都要下载吗 unity aar包_unity ab包 每次都要下载吗_07

 

unity ab包 每次都要下载吗 unity aar包_Unity_08

点击OK按钮。

3、修改build.gradle

修改前:

unity ab包 每次都要下载吗 unity aar包_Android_09

修改后:

 

unity ab包 每次都要下载吗 unity aar包_Unity_10

 

 

修改完后编译Gradle:

unity ab包 每次都要下载吗 unity aar包_Unity_11

4、修改AndroidManifest.xml

1)在主 activity 结点下添加<meta-data>信息,否则在 Unity 导出 APK 时会报找不到manifest 文件的错误信息

2)修改application 中的应用样式,因为导出的 AAR 文件将不带自定义的样式,故不能从style.xml里取系统样式

3)同时需要删除res\Values目录下的styles.xml文件

4)修改mipmap为drawable

 

unity ab包 每次都要下载吗 unity aar包_unity ab包 每次都要下载吗_12

 

unity ab包 每次都要下载吗 unity aar包_unity ab包 每次都要下载吗_13

unity ab包 每次都要下载吗 unity aar包_unity ab包 每次都要下载吗_14

5)同时需要删掉这三个文件夹:

unity ab包 每次都要下载吗 unity aar包_aar包_15

5、修改MainActivity.java

 

unity ab包 每次都要下载吗 unity aar包_Unity_16

6、修改activity_main.xml

修改前:

unity ab包 每次都要下载吗 unity aar包_aar包_17

修改后:

 

unity ab包 每次都要下载吗 unity aar包_Android_18

7、导出供Unity使用的*.aar文件

1)点击“Build -> Build APK”,生成aar文件

2)拷贝*.aar文件跟AndroidMainfest.xml到Unity的Assets -> Plugins -> Android目录下

 

unity ab包 每次都要下载吗 unity aar包_aar包_19

 

unity ab包 每次都要下载吗 unity aar包_aar包_20

3)由于Unity在打包APK时会自动包含自身的classes.jar,所以需使用压缩软件打开*.aar文件删除libs目录下的classes.jar文件

 

8、导出apk进行测试

注意:

1)设置Bundle Identifier(保持与as工程中的PackageName一致)

2)设置合适的Minimum API Level(保持与as工程中的Minimum API Level一致)

 

附:

1)Android与Unity的相互调用网上很多,而且这里也没有什么坑,就不一一赘述了。

2) 若AndroidStudio工程中包含第三方的aar库,需手动拷贝至Assets/Plugin/Android目录下,不然会找不到该库引起NoClassDefFoundError的错误.

3)若AndroidStudio工程中包含第三方的aar库,确定所有的aar库中的android:minSdkVerion与android:targetSdkVersion一致。

4)在AndroidStudio里每次修改都要Rebuild一下

unity ab包 每次都要下载吗 unity aar包_Android_21

5)在研究的过程中偶然发现了有人在使用更为便捷的导出aar包方式,惊为天人,决定给大家安利一波该思路。