1.先按教程配置好UBT(UnrealBuildTool)的宏定义标志相关;
using UnrealBuildTool;
using System.Collections.Generic;
using UnrealBuildBase;
public class XXXTarget : TargetRules
{
public Unreal_ProjClientTarget( TargetInfo Target) : base(Target)
{
...
//!Unreal.IsEngineInstalled() 判断自编译情况
if (Configuration == UnrealTargetConfiguration.Shipping && !Unreal.IsEngineInstalled()){
//bCompileAgainstApplicationCore = true;//初始化log文件的开关,默认是true
BuildEnvironment = TargetBuildEnvironment.Unique;//Unique环境
bUseLoggingInShipping = true;
}
...
}
}
2.修改引擎源码(下载源码,自编译引擎)
Engine/Source/Runtime/Launch/Private/Android/AndroidJNI.cpp
函数
Java_com_epicgames_unreal_GameActivity_nativeSetGlobalActivity()
引擎源码如下:
可以看出,Shipping模式下,Log文件的存放路径在内部目录;我们在手机上访问不到,所以改成外部路径即可。
修改如下:
if (bUseExternalFilesDir)
{
#if UE_BUILD_SHIPPING
//添加NO_LOGGING 因为之前log放内部路径了,导致在安卓手机文件夹找不到
#if !NO_LOGGING
GFilePathBase = GExternalFilePath;
#else
GFilePathBase = GInternalFilePath;
GOverrideAndroidLogDir = bPublicLogFiles;
#endif
#else
GFilePathBase = GExternalFilePath;
#endif
额外拓展:
项目相关宏定义的设置,都是继承TargetRules类;
UEBuildTarget.cs里根据xxx.target.cs赋值对应的宏定义设置,比如: