Unity接入SDK之修改Unity启动页面

原理就是在Android Studio新建Activity继承UnityPlayerActivity,然后再Unity中修改启动页面。

一,Android Studio篇
首先新建一个项目,在这里插入图片描述
新建完成之后基于新建的项目新建一个module,选择为Android Library类型
在这里插入图片描述
新建的Library再目录下新建lib文件夹,找到我们的Unity安装位置,找到classes.jar文件

"C:\Program Files\Unity\Hub\Editor\2022.3.57f1c1\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes\classes.jar"

复制到lib文件夹下,然后在Android Studio中选中它,右键,加入到Library
在这里插入图片描述
接着在android studio新建com.unity.player包,找到UnityPlayerActivity.java文件

"C:\Program Files\Unity\Hub\Editor\2022.3.57f1c1\Editor\Data\PlaybackEngines\AndroidPlayer\Source\com\unity3d\player\UnityPlayerActivity.java"

复制到com.unity.player目录下,并新建MainActivity.java文件,继承UnityPlayerActivity

package com.unity.player;

import android.os.Bundle;
import android.widget.Toast;
import com.unity3d.player.UnityPlayerActivity;

public class MainActivity extends UnityPlayerActivity {
    @Override protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        Toast.makeText(MainActivity.this, "更换启动界面成功!", Toast.LENGTH_LONG).show();

    }

}

在这里插入图片描述
接着操作模块级的build.gradle,dependencies清空只保留我们引入的classes.jar,干净一点,防止出现各种问题
在这里插入图片描述
修改AndroidManifest.xml内容为

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">

    <application>
        <activity
            android:name="com.unity3d.player.MainActivity"
            android:exported="true"
            >
        <intent-filter>
            <action android:name="android.intent.action.MAIN"  />
            <category android:name="android.intent.category.LAUNCHER"  />
        </intent-filter>
    </activity>
    </application>

</manifest>

把启动页面设置为MainActivity,其中android:exported="true"必须添加为显示声明,这是因为

Android 12的安全规范强制要求
显式声明组件可见性​ 从 Android 12 开始,任何包含 的组件(如 Activity、Service 等)​必须显式声明 android:exported
属性,否则编译会失败 。 ​Unity 启动页的特殊性​:Unity 生成的默认 Activity 通常包含
(如 MAIN 和 LAUNCHER),因此必须明确其导出状态。 ​默认值规则改变​
​旧版本默认逻辑​:若组件包含 ,android:exported 默认为 true;否则为 false 。
​Android 12+ 强制要求​:即使默认逻辑存在,也必须显式写入 android:exported,否则会触发 Manifest
merger failed 错误
做好这一切,编译,获取到aar文件
在这里插入图片描述

二,unity 篇
新建工程,切换到Android 平台,在project settings/player/publishing settings中勾选costomMainManifest,
在这里插入图片描述
这个时候会发现unity工程多了Plugins/Android/AndroidMainfest.xml文件,把我们刚刚打包出来的aar文件也复制进去
在这里插入图片描述
接下来需要做散步操作,
1,删除libs文件,因为里面又unity自带的jar文件,打包的时候会又冲突,
2,继续打开classes.jar文件,删除最底层目录的UnityPlayerActivity,否则打包的收依然会冲突
3,复制AndroidMainfest.xml文件,并替换Plugins/Android/AndroidMainfest.xml文件
在这里插入图片描述
至此,所有都结束,打包。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值