目录
[Unity打包Android APK运行](#Unity打包Android APK运行)
前言
在 Unity 移动开发中,单纯依赖 C# 往往无法满足对系统能力的深度调用,比如相机、蓝牙、支付、地图、推送等功能。这就需要 Unity 与 Android 原生进行交互,通过插件桥接 Java 与 C#,实现更强的扩展能力。本系列将通过实战案例,带你掌握 Unity 与 Android 原生互通的完整流程。
Unity项目配置及准备
- 将Unity的平台切换为Android平台。

- 设置游戏的包名为com.unityleraning.unityandroidplugin。(也可根据自己需求定义)

- 创建对应的Plugins文件夹,用来存放Android的原生交互插件。

创建Android项目及配置
- 打开Android Studio(若没有则需先安装,https://developer.android.com/studio),点击New Project创建一个新项目。

- 选择创建一个Empty Activity的项目。

- 创建完成后,在项目左上角的File菜单选择创建一个新的New Module。

- 选择创建Android Library,更改Package name为com.unitylearning.unityandroidplugin,编程语言选择Java,Minimum SDK可以选择27,点击Finish。

- 创建一个Java类命名为UnityAndroidPlugin,用来和Unity进行交互。

- 添加Unity的classes.jar 到项目,因为需要用到Unity的API。创建一个libs文件夹,并将classes.jar文件放进去,classes.jar文件在你安装Unity的文件夹里面的AndroidPlayer文件夹下。并在UnityAndroidPlugin的Module中的build.gradle.kts文件里添加compileOnly关联Unity的classes.jar文件。

实现Android原生代码并导出到Unity
- 在创建的UnityAndroidPlugin类里实现以下代码,用来打开Unity游戏系统的设置。通过使用UnityPlayer的currentActivity来进行调用。
java
public class UnityAndroidPlugin
{
public static void OpenUnityGameSettings() {
Uri uri = Uri.fromParts("package", UnityPlayer.currentActivity.getPackageName(), null);
Intent intent = new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS, uri);
UnityPlayer.currentActivity.startActivity(intent);
}
}
- 设置UnityAndroidPlugin的Active Build Variant为release。


- 点击Assemble Module 'UnityAndroidPlugin.UnityAndroidPlugin.main'导出aar文件。

- 将生成的UnityAndroidPlugin的aar文件放到Unity项目中的Plugins/Android文件夹下。


Unity调用Android原生插件
- 在Unity的场景中新建一个按钮用来打开Unity游戏的设置界面。

- 创建一个UnityAndroidNativePlugin脚本,挂载到Canvas上面,并将打开Unity游戏设置的按钮对应关联起来。
cs
public class UnityAndroidPlugin : MonoBehaviour
{
private const string UnityAndroidPluginAndroidJavaClassName = "com.unitylearning.unityandroidplugin.UnityAndroidPlugin";
private const string OpenUnityGameSettingsMethodName = "OpenUnityGameSettings";
[SerializeField] private Button _openUnitySettingsButton;
private void OnEnable()
{ _openUnitySettingsButton.onClick.AddListener(HandleOnOpenUnityGameSettingsButtonClicked);
}
private void OnDisable()
{ _openUnitySettingsButton.onClick.RemoveListener(HandleOnOpenUnityGameSettingsButtonClicked);
}
private void HandleOnOpenUnityGameSettingsButtonClicked()
{
OpenUnityGameSettings();
}
private void OpenUnityGameSettings()
{
using AndroidJavaClass androidJavaClass = new AndroidJavaClass(UnityAndroidPluginAndroidJavaClassName);
androidJavaClass.CallStatic(OpenUnityGameSettingsMethodName);
}
}
Unity打包Android APK运行
- 点击Build进行打包。

- 打包完成后可以将APK安装到Android Studio的模拟器上进行测试。

- 点击Open Unity Game Settings按钮。

- 此时就会从Unity的运行包跳转到Unity游戏的设置界面。
