幻蓝博客 – 孤月蓝风

追寻互联网科技、Unity开发、AR/VR开发、游戏开发、Web前后端开发等技术。

幻蓝博客 – 孤月蓝风幻蓝博客 – 孤月蓝风

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

本文是全系列中第3 / 3篇:Unity与Android交互

开发环境: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 Settings 的 Dependencies 选项卡,添加 :testunity-debug 模块,如果会发生错误,我们先确保修改 build.gradle (Module: app) 文件中的 minSdkVersion 为与 Unity 中一致的 API 版本。

添加Unity的AAR后报错

添加Unity的AAR后报错

修改minSdkVersion与Unity中一致

修改minSdkVersion与Unity中一致

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

Icon和Theme的报错

Icon和Theme的报错

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

<?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标签下添加代码

manifest和application标签下添加代码

保存,点击: Sync Project with Gradle Files ,Gradle 会对当前程序进行编译,这个时候就会成功编译了。

接下来我们像第一篇文章一样,开始调用 Unity 的 Activity ,我们在 MainActicity 中先引用导出的 AAR 包的 Unity 的 Activity:

import com.test.testunity.UnityPlayerActivity;

在 Button 的 click 事件中调用显示 Unity 的 Activity :

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/

文章导航