Unity与Android交互(三):Android App调用Unity打包的AAR文件

开发环境:Android Studio 2.3.3 , Unity 2017.1.2

我们打开在第一篇文章中建立的 Android App 项目,新建一个模块,并导入第二篇文章中打包的 AAR 文件:File > New Module > Import .JAR/.ARR Package ,选择第二篇文章中打包的 testunity-debug.aar 文件。 之后右键点击 Project 面板中的 app 文件夹,选择 Open Module SettingsDependencies 选项卡,添加 :testunity-debug 模块,如果会发生错误,我们先确保修改 build.gradle (Module: app) 文件中的 minSdkVersion 为与 Unity 中一致的 API 版本。

添加Unity的AAR后报错

修改minSdkVersion与Unity中一致

API 版本修改完成后,这里还有一个 IconTheme 相关的报错:

Icon和Theme的报错

我们打开 AppAndroidManifest.xml 文件,告诉 merge 合并程序使用哪一个 IconTheme ,分别在 manifest 标签和 application 标签下添加代码:

1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.test.androidapp">
<application
tools:replace="android:icon,android:theme"
...
android:theme="@style/AppTheme">
...
</application>
</manifest>

manifest和application标签下添加代码

manifestapplication标签下添加代码 保存,点击: Sync Project with Gradle FilesGradle 会对当前程序进行编译,这个时候就会成功编译了。 接下来我们像第一篇文章一样,开始调用 UnityActivity ,我们在 MainActicity 中先引用导出的 AAR 包的 UnityActivity

1
import com.test.testunity.UnityPlayerActivity;

Buttonclick 事件中调用显示 UnityActivity

1
2
3
4
5
6
7
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, UnityPlayerActivity.class);
startActivity(intent);
}
});

到这里,我们就完成了在 Android App 中调用并显示 Unity 程序的所有步骤。

注意:我们这里并没有在 Unity 中添加返回键事件,所以你点击手机的返回键时不会有任何反应,如果你使用 Application.Quit(); 你会发现会把整个 Android App 也关掉,这一部分的处理可以参考网上的其他文章。

如果在文中发现了 BUG ,或发现某些地方写的不够清楚,欢迎在评论中告诉我。

项目Git地址:https://gitee.com/trlanfeng/UnityAndroid/