将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调用。
- 升级Unity到较新版本,尝试使用官方推荐的嵌入方式(如
5. 确认Unity项目导入完整性
- 检查Unity导出的
androidBuild目录是否完整导入,gradle配置是否正确:settings.gradle中需包含:unityLibrary模块- app模块的
build.gradle中需添加依赖implementation project(':unityLibrary')
- 排查资源合并是否存在冲突(如Unity与Android项目的资源重名)。
内容的提问来源于stack exchange,提问作者Playfuldev
相关产品推荐
相关产品推荐

