Android Studio 2024 内嵌 Unity 3D 开发示例
Android 内嵌 Unity 开发示例
- 1 环境
-
- 1.1 Unity Android 构建环境
-
- 1.1.1 Android 构建支持
- 1.1.2 确认 Unity 2021.3.45f1c2 安装的 NDK 版本
- 1.2 Android Studio 2024 构建环境
- 2 新建工程
-
- 2.1 新建 Android Studio 项目:NativeAndroidApp
- 2.2 新建 Unity 3D 项目:Unity3DSample
-
- 2.2.1 点击【Player Settings...】进行导出设置
- 2.2.2 导出 Unity Android 构建的工程
- 3 Android 接入
-
- 3.1 在 NativeAndroidApp 中把 unityLibrary 配置为 Library 模块
- 3.2 使用 unityLibrary
-
- 3.2.1 复制资源
- 3.2.2 工程结构
- 3.3 Unity 场景作为子视图
- 错误:Execution failed for task ':unityLibrary:BuildIl2CppTask'.
Unity 导出 Android 工程,在 Android Studio 中作为库二次开发示例
1 环境
Android Studio 2024.3.2 Patch 1
Unity 2021.3.45f1c2
1.1 Unity Android 构建环境
1.1.1 Android 构建支持
我们知道Unity Hub 是 Unity 官方提供的集中管理工具,支持一键切换不同项目使用的 Unity 版本,自动维护版本间的独立性,避免冲突。同时也对模块化组件进行管理,包含各平台(Android、iOS、Windows 等)构建支持模块。
- 点击【添加模块】
- 确认 Android 构建支持的环境是否已经安装,没安装就安装下
1.1.2 确认 Unity 2021.3.45f1c2 安装的 NDK 版本
在开发的过程中,使用 Unity 自带的 NDK 版本兼容性最好。因此我们将在 Android Studio 2024 中设置相应的版本。,我们来找 Unity 2021.3.45f1c2 对应的 NDK 版本:
- 打开 Unity 2021.3.45f1c2 编辑器的目录
- 在打开的目录中进入:Editor\Data\PlaybackEngines\AndroidPlayer\NDK 子目录
- 打开 source.properties 文件,内容如下:
Pkg.Desc = Android NDK
Pkg.Revision = 21.3.6528147
表示使用的是 NDK 版本 21.4.7075529。
NDK 的历史版本:Unsupported Downloads · android/ndk Wiki · GitHub
1.2 Android Studio 2024 构建环境
- 安装对应版本的 NDK 21.4.7075529
2 新建工程
环境准备好了,新建两个工程来进行演示。
2.1 新建 Android Studio 项目:NativeAndroidApp
- 选择【No Activity】
- 配置项目名称:NativeAndroidApp,包名,语言:java,选择并记录对应的 SDK 版本,选择配置语言【Groovy DSL】(方便和后续 Unity导出的工程一致),配置好后点击【Finish】创建项目。
2.2 新建 Unity 3D 项目:Unity3DSample
在 Unity Hub 中,创建一个 2021.3.45f1c2 版本的 Unity 3D 项目,选择项目位置,输入项目名称:Unity3DSample,点击【创建项目】
-
创建完后后,打开 Unity3DSample,点击【File->Build Settings…】进行构建设置
-
在构建设置面板的【Platform】中切换到 Android, 如果未安装会显示【Install with Unity Hub】,点击安装即可。我们前面已经安装,忽略
-
已安装 Andorid 构建支持模块选择【Android】后会显示【Switch Platform】,点击会切换到 Android 平台构建
2.2.1 点击【Player Settings…】进行导出设置
- 配置 【Player->Other Settings->Configuration】,
- 【Scripting Backend】(脚本后端)改为:IL2CPP,将C#代码转换为C++,再编译为原生机器码
- 让工程支持arm v7和arm v8两种架构,否则在某些机型上,会运行失败。
- 【Incremental GC】(增量垃圾回收)可勾选
- 配置包名 com.lzc.Unity3DSample,配置 Android SDK 版本,要和创建 NativeAndroidApp 的版本一致
- 关闭窗口,回到Build Settings界面。
2.2.2 导出 Unity Android 构建的工程
-
勾选【Export Project】,然后点击右下角的【Export】。
-
出来弹窗后,新建文件夹【Unity3DExport】,选择【Unity3DExport】做为导出目录后,开始导出。
-
自动生成的是一个可以用 Android Studio 打开的工程,如下:
3 Android 接入
移动 Unity3DExport 目录下的 unityLibrary 工程到 NativeAndroidApp 目录下:
3.1 在 NativeAndroidApp 中把 unityLibrary 配置为 Library 模块
在 Android Studio 中打开 NativeAndroidApp
- 把 Unity3DExport/gradle.properties 中 Unity 的参数拷贝到工程的 NativeAndroidApp/gradle.properties
# 配置 Unity 的 Streaming Assets 路径。留空使用默认路径(Assets/StreamingAssets)
unityStreamingAssets=
# 指定 Unity 导出的 Android 项目模板版本。
unityTemplateVersion=7
- 在 NativeAndroidApp/settings.gradle 中加上 unityLibrary 模块:
include ':app', ':unityLibrary'
- 在 NativeAndroidApp/app/build.gradle 中增加对 unityLibrary 的依赖
implementation project(':unityLibrary')implementation fileTree(include: ['*.jar']