@@ -84,13 +84,13 @@ private void BuildForWin64()
8484
8585 private void BuildForAndroid ( )
8686 {
87- var NDKRoot = Environment . GetEnvironmentVariable ( "NDKROOT" ) ;
88- if ( NDKRoot == null )
87+ var ndkRoot = Environment . GetEnvironmentVariable ( "NDKROOT" ) ;
88+ if ( ndkRoot == null )
8989 throw new BuildException ( "can't find NDKROOT" ) ;
9090
91- var toolchain = AndroidExports . CreateToolChain ( Target . ProjectFile ) ;
92- var NdkApiLevel = toolchain . GetNdkApiLevelInt ( 21 ) ;
93-
91+ var toolchain = GetAndroidToolChain ( ) ;
92+ var ndkApiLevel = toolchain . GetNdkApiLevelInt ( 21 ) ;
93+ Console . WriteLine ( "toolchain.GetNdkApiLevelInt=" , ndkApiLevel ) ;
9494 var abiNames = new [ ] { "armeabi-v7a" , "arm64-v8a" , "x86_64" } ;
9595 foreach ( var abiName in abiNames )
9696 {
@@ -102,16 +102,30 @@ private void BuildForAndroid()
102102 EnsureDirectoryExists ( libFile ) ;
103103 var args = new Dictionary < string , string >
104104 {
105- { "CMAKE_TOOLCHAIN_FILE" , Path . Combine ( NDKRoot , "build/cmake/android.toolchain.cmake" ) } ,
105+ { "CMAKE_TOOLCHAIN_FILE" , Path . Combine ( ndkRoot , "build/cmake/android.toolchain.cmake" ) } ,
106106 { "ANDROID_ABI" , abiName } ,
107- { "ANDROID_PLATFORM" , "android-" + NdkApiLevel }
107+ { "ANDROID_PLATFORM" , "android-" + ndkApiLevel }
108108 } ;
109109 var buildDir = CMake ( args ) ;
110110 var buildFile = Path . Combine ( buildDir , m_LibName ) ;
111111 File . Copy ( buildFile , libFile , true ) ;
112112 }
113113 }
114114
115+ private IAndroidToolChain GetAndroidToolChain ( )
116+ {
117+ #if UE_5_2_OR_LATER
118+ var ueBuildPlatformType = Assembly . GetAssembly ( typeof ( IAndroidToolChain ) ) . GetType ( "UnrealBuildTool.UEBuildPlatform" ) ;
119+ var getBuildPlatformMethod = ueBuildPlatformType . GetMethod ( "GetBuildPlatform" , BindingFlags . Static | BindingFlags . Public ) ;
120+ var androidBuildPlatform = getBuildPlatformMethod . Invoke ( null , new object [ ] { UnrealTargetPlatform . Android } ) ;
121+ var createTempToolChainForProjectMethod = androidBuildPlatform . GetType ( ) . GetMethod ( "CreateTempToolChainForProject" ) ;
122+ var toolchain = ( IAndroidToolChain ) createTempToolChainForProjectMethod . Invoke ( androidBuildPlatform , new object [ ] { Target . ProjectFile } ) ;
123+ #else
124+ var toolchain = AndroidExports . CreateToolChain ( Target . ProjectFile ) ;
125+ #endif
126+ return toolchain ;
127+ }
128+
115129 private void BuildForLinux ( )
116130 {
117131 var libFile = GetLibraryPath ( ) ;
@@ -174,14 +188,18 @@ private void BuildForLinuxAArch64()
174188
175189 private void BuildForMac ( )
176190 {
191+ #if UE_5_2_OR_LATER
192+ var abiName = Target . Architecture . ToString ( ) ;
193+ #else
177194 var abiName = Target . Architecture ;
195+ #endif
178196 var libFile = GetLibraryPath ( abiName ) ;
179197 if ( ! File . Exists ( libFile ) )
180198 {
181199 EnsureDirectoryExists ( libFile ) ;
182200 var args = new Dictionary < string , string >
183201 {
184- { "CMAKE_OSX_ARCHITECTURES" , Target . Architecture }
202+ { "CMAKE_OSX_ARCHITECTURES" , abiName }
185203 } ;
186204 var buildDir = CMake ( args ) ;
187205 var buildFile = Path . Combine ( buildDir , m_LibName ) ;
@@ -237,7 +255,7 @@ private void BuildForPS5()
237255 var args = new Dictionary < string , string >
238256 {
239257 { "CMAKE_TOOLCHAIN_FILE" , Path . Combine ( sceRootDir , @"Prospero\Tools\CMake\PS5.cmake" ) } ,
240- { "PS5" , "1" }
258+ { "PS5" , "1" }
241259 } ;
242260 var buildDir = CMake ( args ) ;
243261 var buildFile = Path . Combine ( buildDir , m_Config , m_LibName ) ;
@@ -381,7 +399,7 @@ private string GetLuaVersion()
381399 return version ;
382400 return "lua-5.4.3" ;
383401 }
384-
402+
385403 private void EnsureDirectoryExists ( string fileName )
386404 {
387405 var dirName = Path . GetDirectoryName ( fileName ) ;
0 commit comments