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

UE4打包Meta Quest2(Android ASTC)遇SteamShared预编译清单缺失错误

解决UE4.27打包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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 03:31:37