一、Unity导出安卓工程
首先将Unity项目导出为安卓工程,注意将构建平台选择为Android。
勾选Export Project便可。
二、安卓工程配置
用Android Studio打开安卓工程。
1、Gradle升级
由于Unity构建的安卓工程Gradle版本较低,需要升级才行,否则安卓工程编译时报错。只需要按照Android Studio的弹窗提示升级便可。
点击Run selected steps,只需要升级一次至4.2.2便可。
注:这里由于之前升级过,不需要再次升级。
2、编译SDK版本及目标SDK版本设置
将launcher及unityLibrary的build.gradle中的SDK版本设为30或以上。
3、新建开机广播接收器
新建java类,并继承BroadcastReceiver,作为开机广播接收器。
注意,需要在unityLibrary的java目录下com.unity3d.player包名下创建。
只需要在unityLibrary上右键New-->Java Class便可。
示例代码如下:
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class StartReceiver extends BroadcastReceiver {
public StartReceiver() {
}
@Override
public void onReceive(Context context, Intent intent) {
//设备重启之后,打开应用
if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) {
Intent startIntent = new Intent(context, UnityPlayerActivity.class);
//非常重要,如果缺少的话,程序将在启动时报错
startIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//自启动APP(Activity)
context.startActivity(startIntent);
}
}
}
4、添加开机广播接收权限
在unityLibrary的AndroidManifest.xml文件里添加。
注意,在manifest节点里添加。
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
5、注册广播接收器
在unityLibrary的AndroidManifest.xml文件里注册。
注意,在application节点里注册,与activity节点并列。
<receiver
android:name=".StartReceiver"
android:enabled="true"
android:exported="true">
<intent-filter android:priority="1000">
<action android:name="android.intent.action.BOOT_COMPLETED"></action>
<category android:name="android.intent.category.HOME" />
</intent-filter>
</receiver
6、构建APK
Build-->Build Bundle(s)/APK(s)-->Build APK(s)。
三、注意事项
1、安卓版本问题
在安卓版本4.0以上的设备上,需要手动开启一遍程序,让设备信任程序后才能生效开启自启。
2、PICO4设备问题
对于关闭系统权限的PICO4设备,此方法失效。