You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将Unity项目嵌入Android项目启动失败及API弃用问题求助

Unity嵌入Android项目启动Activity失败排查方案

问题详情

将Unity项目嵌入第三方Android项目时,出现Activity无法启动的问题:

  • 编译阶段提示:

Note: C:\Users\sense\NewGradPro_1211\UnityGame\androidBuild\unityLibrary\src\main\java\com\unity3d\player\UnityPlayerActivity.java uses or overrides a deprecated API

  • Logcat报错:Unable to start activity ComponentInfo
  • 已尝试清理并重建项目,问题未解决

涉及代码(MainUnityActivity)

package com.hello.ourApplication;

import android.content.Intent;
import android.os.Bundle;

import com.unity3d.player.UnityPlayerActivity;

public class MainUnityActivity extends UnityPlayerActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Setup activity layout
        SharedClass.addControlsToUnityFrame(this);
        Intent intent = getIntent();
        handleIntent(intent);
    }


    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        handleIntent(intent);
        setIntent(intent);
    }

    void handleIntent(Intent intent) {
        if (intent == null || intent.getExtras() == null) return;

        if (intent.getExtras().containsKey("doQuit")) {
            if (mUnityPlayer != null) {
                finish();
            }
        }
    }

    @Override
    public void onUnityPlayerUnloaded() {
        SharedClass.showMainActivity("");
    }

}

解决方向

1. 定位启动失败的具体根因

Unable to start activity只是表层错误,必须查看Logcat的完整错误栈,找到核心异常——比如空指针、布局加载失败、类找不到、权限缺失等,这是解决问题的关键。

2. 检查Manifest配置

  • 确认MainUnityActivity在AndroidManifest.xml中正确注册,需包含Unity要求的配置:
    <activity android:name=".MainUnityActivity"
              android:theme="@style/UnityThemeSelector"
              android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale|layoutDirection|density"
              android:hardwareAccelerated="true">
        <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
    </activity>
    
  • 排查是否存在冲突的intent-filter或未声明的必要权限(如Unity项目需用到的存储、网络权限)。

3. 验证SharedClass相关调用

  • 临时注释SharedClass.addControlsToUnityFrame(this),测试Activity能否正常启动,排查该方法是否存在空指针、控件未初始化等异常。
  • 检查SharedClass.showMainActivity("")的实现,确认启动主Activity的Intent配置正确,无逻辑错误。

4. 处理Deprecated API提示(非直接原因,但需兼容)

  • 该提示本身不会导致启动失败,但可能暗示Unity版本与Android SDK不兼容:
    • 升级Unity到较新版本,尝试使用官方推荐的嵌入方式(如UnityPlayerFragment替代UnityPlayerActivity)。
    • 参考Unity官方文档,替换unityLibrary中已废弃的API调用。

5. 确认Unity项目导入完整性

  • 检查Unity导出的androidBuild目录是否完整导入,gradle配置是否正确:
    • settings.gradle中需包含:unityLibrary模块
    • app模块的build.gradle中需添加依赖implementation project(':unityLibrary')
  • 排查资源合并是否存在冲突(如Unity与Android项目的资源重名)。

内容的提问来源于stack exchange,提问作者Playfuldev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 06:23:26