UE4打包Meta Quest2(Android ASTC)遇SteamShared预编译清单缺失错误
问题根源
打包Meta Quest2(Android平台)时,项目因依赖链AdvancedSteamSessions → OnlineSubsystemSteam → SteamShared被迫引入Steam相关模块,但Steam模块仅支持PC类平台,没有针对Android的预编译支持——即便你给SteamShared.build.cs添加了PrecompileForTargets = PrecompileTargetsType.Any;,引擎也无法生成Android平台的Steam模块二进制文件,导致报错。
解决方案步骤
1. 清理重复插件
你同时在引擎插件目录和项目插件目录放置了AdvancedSessions和AdvancedSteamSessions,这会导致引擎依赖解析混乱。删除其中一处的插件:
- 建议保留项目插件目录下的版本(方便后续定制),删除引擎目录下的对应插件;
- 或反之,仅保留引擎目录的插件,确保依赖路径唯一。
2. 按平台动态添加依赖
修改项目的Project.Build.cs,仅在非Android平台引入Steam相关依赖,避免Android打包时触发Steam模块编译:
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "HeadMountedDisplay", "UMG", "LibOVRPlatform"}); // 基础依赖 var privateDeps = new List<string> { "FirebaseFeatures", "OnlineSubsystem", "OnlineSubsystemOculus" }; // 仅非Android平台添加Steam依赖 if (Target.Platform != UnrealTargetPlatform.Android) { privateDeps.Add("OnlineSubsystemSteam"); } PrivateDependencyModuleNames.AddRange(privateDeps.ToArray());
3. 配置平台专属联机子系统
在项目的Config/DefaultEngine.ini中添加平台区分配置,让Android使用Oculus联机,PC使用Steam联机:
; PC平台配置 [/Script/Engine.GameEngine] +NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="/Script/OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="/Script/OnlineSubsystemUtils.IpNetDriver") [OnlineSubsystem] DefaultPlatformService=Steam ; Android平台专属配置 [Platforms] Android.ini:[/Script/Engine.GameEngine] +NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="/Script/OnlineSubsystemOculus.OculusNetDriver",DriverClassNameFallback="/Script/OnlineSubsystemUtils.IpNetDriver") Android.ini:[OnlineSubsystem] DefaultPlatformService=Oculus
4. 强制排除Android平台的Steam模块(可选)
如果上述步骤后仍有依赖问题,在Project.Build.cs中添加额外逻辑,强制在Android打包时移除Steam相关模块:
protected override void ConfigureMiscellaneousCompilationFlags() { base.ConfigureMiscellaneousCompilationFlags(); if (Target.Platform == UnrealTargetPlatform.Android) { PrivateDependencyModuleNames.Remove("OnlineSubsystemSteam"); PrivateDependencyModuleNames.Remove("SteamShared"); } }
5. 清理缓存并重新打包
- 右键项目文件 → Generate Visual Studio Files,重新生成项目文件;
- 删除项目根目录下的
Binaries、Intermediate、Saved目录,清理构建缓存; - 重新选择Android(ASTC)目标进行打包。
内容的提问来源于stack exchange,提问作者Elias Marrero
相关产品推荐
相关产品推荐

