__前言
说明:针对unity3d 2019.3版本更新之后,将UnityPlayerActivity.java从classes.jar中删除,导致直接使用classes.jar报找不到com.unity3d.player.UnityPlayerActivity的问题。如果是unity2019.3之前的版本,则可不必按照此流程操作。
-
新建Android工程 选择Emmpty Activity

-
修改Build.gradle文件,导出aar
-
创建出来的工程默认是app,此时编译出来的文件是apk
-
需要修改app/build.gradle文件
-
'com.android.application' 改为:id 'com.android.library'。
-
注释掉 //applicationId "com.unity.test",
-
这样编译出来的文件就是库文件aar了。

-
加入UnityPlayerActivity,并重写接口
-
首先在Android studio工程中新增package:com.unity3d.player.UnityPlayer
__PS.这里新增的Packetage跟Unity取得class有关,现在写的是com.unity3d.player.UnityPlayer,然后new AndroidJavaClass("com.unity3d.player.UnityPlayer");如果是com.unity3d.player 则是new AndroidJavaClass("com.unity3d.player");
-
然后从unity安装路径下找到UnityPlayerActivity.java,路径在unity安装路径下:*\Editor\Data\PlaybackEngines\AndroidPlayer\Source\com\unity3d\player。将UnityPlayerActivity.java文件拷贝到刚才建好的package路径下。
-
引用依赖的classes.jar。在unity安装路径下:*\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes中。将此文件加入到Android工程的libs路径下。在buil.gradle文件中配置依赖 :
implementation fileTree(dir: 'libs', include: ['*.jar','*.aar'])

-
这里不要忘记将自己的MainActivity集成至UnityPlayerActivity了

-
删除不必要的资源,防止文件丢失报错
打开AndroidMenifest.xml文件,删除依赖资源的配置项,如果不删除,在导入到unity打包的时候,会报错,例如这样的报错。

删除前

删除后

-
生成aar,打包

打开生成的文件(压缩文件方式打开),得到我们unity真正需要的文件。classes.jar和AndroidManifest.xml两个文件。

解压得到这两个文件之后,将class.jar文件中的两个class文件删除。
一个是BuidConfig.class另一个是UnityPlayerActivity.class(注意删除此文件需要连包路径都删除),这两个文件一定要删除,否则会出现打包报错,例如这样的报错。


删除完成之后,将classes.jar和AndroidManifest.xml两个文件拷贝到unity工程的Assets/Plugins/Android路径下,此时不出意外,可以正常打Android包了。