UE5.6 Android won't Build

I’ve been trying to figure out what’s going on with Cesium and my project for a while now and I’m having no luck. I can build and deploy a blank project with Ceisum for Android no problem although it crashes at startup on my device, but when I try to integrate it with my existing app and package the project, I keep getting this same error even after completely uninstalling and re-installing the plugin. This happens when I just enable the plugin in my project, before I even use any Ceisum functionality. Something in the plug-in does not like some part of my existing project. Can someone please point me in the right direction? I’m at a total loss for how to fix this. Thank you very much for any help. Here is the end of error log where the Build fails:

Writing manifest to J:\Unreal Projects\AR_App\Intermediate\Build\Manifest.xml
AR_App-arm64.so: Prerequisite J:\Unreal Engine\UE_5.6\Engine\Plugins\Marketplace\Cesiumfo4a28c7d2eeceV9\Intermediate\Build\Android\a\UnrealGame\Development\CesiumRuntime\Module.CesiumRuntime.1.cpp.o is newer than the last execution of the action: 07/16/2025 18:45:51 vs 07/16/2025 18:16:44
AR_App.target: Prerequisite J:\Unreal Projects\AR_App\Intermediate\Build\Android\a\AR_App\Development\TargetMetadata.dat is newer than the last execution of the action: 07/16/2025 18:49:28 vs 07/16/2025 18:16:46
Checking for live coding mutex: Global\LiveCoding_J++Unreal Projects+AR_App+Binaries+Android+AR_App-arm64.so
Building AR_App...
[Adaptive Build] Excluded from AR_App unity file: AR_App.cpp
Determining max actions to execute in parallel (6 physical cores, 12 logical cores)
  Executing up to 6 processes, one per physical core
  Requested 1.5 GB memory per action, 8.93 GB available: limiting max parallel actions to 5
Using Unreal Build Accelerator local executor to run 2 action(s)
  Storage capacity 40Gb
  RootDir C:\ProgramData\Epic\UnrealBuildAccelerator
---- Starting trace: 250716_184928 ----
UbaSessionServer - Disable remote execution (remote sessions will finish current processes)
------ Building 2 action(s) started ------
[1/2] clang++ AR_App-arm64.so
ld.lld: error: undefined symbol: absl::lts_20240722_cesium_for_unreal::base_internal::SpinLockWait(std::__ndk1::atomic<unsigned int>*, int, absl::lts_20240722_cesium_for_unreal::base_internal::SpinLockWaitTransition const*, absl::lts_20240722_cesium_for_unreal::base_internal::SchedulingMode)
>>> referenced by call_once.h:180 (D:/.ezvcpkg/dbe35ceb30c688bf72e952ab23778e009a578f18/installed/arm64-android-unreal/include/absl/base/call_once.h:180)
>>>               s2cell_id.cc.o:(void absl::lts_20240722_cesium_for_unreal::base_internal::CallOnceImpl<MaybeInit()::'lambda'()>(std::__ndk1::atomic<unsigned int>*, absl::lts_20240722_cesium_for_unreal::base_internal::SchedulingMode, MaybeInit()::'lambda'()&&)) in archive J:/Unreal Engine/UE_5.6/Engine/Plugins/Marketplace/Cesiumfo4a28c7d2eeceV9/Source/ThirdParty/lib/Android-aarch64-Release/libs2.a

 clang++ AR_App-arm64.so: Exited with error code 1 . The build will fail.
 clang++ AR_App-arm64.so: WorkingDirectory J:\Unreal Projects\AR_App\Intermediate\Build\Android\a\AR_App\Development
 clang++ AR_App-arm64.so: C:\androiddev\SDK\ndk\25.1.8937393\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe --gcc-toolchain="C:/androiddev/SDK/ndk/25.1.8937393/toolchains/llvm/prebuilt/windows-x86_64" --sysroot="C:/androiddev/SDK/ndk/25.1.8937393/toolchains/llvm/prebuilt/windows-x86_64/sysroot" -static-libstdc++ -no-canonical-prefixes -shared -Wl,-Bsymbolic -Wl,--no-undefined -Wl,--gc-sections -gz --target=aarch64-none-linux-android33 -DANDROID=1 -march=armv8-a -Wl,-no-pie -fuse-ld=lld -Wl,-soname,libUnreal.so -Wl,--version-script="J:/Unreal Projects/AR_App/Intermediate/Build/Android/a/AR_App/Development/ExportSymbols.ldscript" -Wl,--build-id=sha1 -Wl,--pack-dyn-relocs=android+relr,--use-android-relr-tags -Wl,--hash-style=gnu -z max-page-size=16384 -o "J:/Unreal Projects/AR_App/Binaries/Android/AR_App-arm64.so" @"J:/Unreal Projects/AR_App/Intermediate/Build/Android/a/AR_App/Development/AR_App-arm64.so.rsp"
ld.lld: error: undefined symbol: AbslInternalSpinLockWake_lts_20240722_cesium_for_unreal
>>> referenced by spinlock_wait.h:85 (D:/.ezvcpkg/dbe35ceb30c688bf72e952ab23778e009a578f18/installed/arm64-android-unreal/include/absl/base/internal/spinlock_wait.h:85)
>>>               s2cell_id.cc.o:(void absl::lts_20240722_cesium_for_unreal::base_internal::CallOnceImpl<MaybeInit()::'lambda'()>(std::__ndk1::atomic<unsigned int>*, absl::lts_20240722_cesium_for_unreal::base_internal::SchedulingMode, MaybeInit()::'lambda'()&&)) in archive J:/Unreal Engine/UE_5.6/Engine/Plugins/Marketplace/Cesiumfo4a28c7d2eeceV9/Source/ThirdParty/lib/Android-aarch64-Release/libs2.a
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
Trace written to file C:/Users/user/AppData/Roaming/Unreal Engine/AutomationTool/Logs/J+Unreal+Engine+UE_5.6/UBA-AR_App-Android-Development.uba with size 7.3kb
Total time in Unreal Build Accelerator local executor: 35.39 seconds
CompilationResultException: OtherCompilationError
   at UnrealBuildTool.ActionGraph.ExecuteActionsAsync(BuildConfiguration BuildConfiguration, List`1 ActionsToExecute, List`1 TargetDescriptors, ILogger Logger, IActionArtifactCache actionArtifactCache)
   at UnrealBuildTool.BuildMode.BuildAsync(TargetMakefile[] Makefiles, List`1 TargetDescriptors, BuildConfiguration BuildConfiguration, BuildOptions Options, FileReference WriteOutdatedActionsFile, ILogger Logger, String ActionTypeFilter)
   at UnrealBuildTool.BuildMode.BuildAsync(List`1 TargetDescriptors, BuildConfiguration BuildConfiguration, ISourceFileWorkingSet WorkingSet, BuildOptions Options, FileReference WriteOutdatedActionsFile, ILogger Logger, Boolean bSkipPreBuildTargets, String ActionTypeFilter)
   at UnrealBuildTool.BuildMode.ExecuteAsync(CommandLineArguments Arguments, ILogger Logger)
   at UnrealBuildTool.UnrealBuildTool.Main(String[] ArgumentsArray)
WriteFileIfChanged() wrote 1 changed files of 31 requested writes.

Timeline:
[  0.000]  +2.322 Main
   0.000          [  0.000]  +1.372 <unknown>
   1.372          [  1.372]  +0.710 Apply XmlConfig
   2.154          [  2.153]  +0.168 RegisterPlatforms
[  2.323] +62.748 BuildMode
   2.323          [  0.000]  +0.446 <unknown>
   2.769          [  0.446] +26.668 Creating MakeFile for AR_App
  29.450          [ 27.126]  +0.141 Preparing ActionGraph
  29.597          [ 27.274] +35.412 Executing ActionGraph
  65.010          [ 62.687]  +0.060 Saving caches
[ 65.148]  +0.000 TelemetryService.FlushEvents
[ 65.149]

Result: Failed (OtherCompilationError)
Total execution time: 65.15 seconds

I was running into some packaging errors. This happened after updating UE from 5.5.4 to 5.6. I created a new project to ensure the packaging errors had nothing to do with the upgrade, but of course, it did. New project worked fine. However, now when I quick-deploy for my android device, I crash during or immediately after the splash screen, as the Cesium tiles attempt to load. Something about a “FMemory::GetAllocationSize()” and “FMallocBinned … unrecognized pointer”. Unsure if this is connected to your problem, but it’s been a pain for me!

Hi @Setaro_House,

I’m not sure what might cause that error. One guess is that it’s related to some other plugin that you have enabled in your real project, but not in the test one. It might be worth trying to enable more plugins in the test project, one-by-one, to see if one causes a similar linker error.

Beyond that, if you can provide a minimal project that has this problem, I’d be happy to take a look. I realize that might not be easy to do, but I’m not sure how else we can help debug it.

Hi @CoulterMDP, welcome to the community!

Please start a new thread with more details of your problem. In particular, the call stack of the crash will be essential for us to help figure out what is going on.

1 Like

Hi Setaro,

I don’t believe this has anything to do with Cesium.

Either way, did you ever find a fix for this?

Setaro,

Here’s what fixed the clang++ AR_App-arm64.so linker error in UE 5.6:

  1. Close Unreal Engine.

  2. Completely remove the old Android toolchain.

  • Uninstall Android Studio and the Java JDK.

  • Delete related temp folders and caches.

  • Remove any Android SDK/NDK environment variables.

  1. Restart your computer.

  2. Install Java SE Development Kit 21.0.3 from the Java website.

  3. Open Unreal Engine.

  4. Go to Platforms > Android and click “Install SDK (Full Platform Installer)”.

  5. When Android Studio opens, install these components (some may already be selected):

  • SDK Platforms: Android 14.0 (API 34 rev 3)

  • NDK (Side by side)

  • Android SDK Command-line Tools

  • CMake

  • Android Emulator

  • Android Emulator Hypervisor Driver (installer)

  • Android SDK Platform-Tools

  1. Let Turnkey finish after you click Apply or OK in Android Studio.

  2. Restart your computer.

  3. Open Unreal Engine and set Project Settings:

  • Minimum SDK Version: 26

  • Target SDK Version: 34

  • Location of Android SDK: C:\Users\<your_user>\AppData\Local\Android\Sdk

  • Location of Android NDK: C:\Users\<your_user>\AppData\Local\Android\Sdk\ndk\27.2.12479018

  • Location of JAVA: C:\Program Files\Java\jdk-21

  • SDK API Level: latest

  • NDK API Level: latest

  1. Try packaging for Android.

TLDR: Do a fresh Turnkey install of the Android dependencies from UE, then confirm SDK 34, NDK 27.2.12479018, and JDK 21.0.3 in Project Settings.

Hope this helps!

Thank you for this I will try it out when I can. I was initially going to try and rebuild the libs2.a library / rebuild the S2 Geometry library to get Abseil symbols (e.g. SpinLockWait), but realized it’s just a bit too over my head and opted to just abandon Cesium for mobile until a fix was rolled out.

What you suggest makes sense that somehow my toolchain ended up missing some symbols that Cesium needs. I’m hesitate to completeley remove everything for the sake of this one project but if that’s the only option I will try when I have time as it’s not mission critical.

I will report my findings back here once I do. Thanks again I had all but given up!

No problem. I was running into this issue even when Cesium was uninstalled, on a fresh project. Hope you get this figured out :+1:

1 Like