Android build failed

error: undefined symbol: cesium_sqlite3_open
error: undefined symbol: cesium_sqlite3_close_v2
error: undefined symbol: cesium_sqlite3_exec
error: undefined symbol: cesium_sqlite3_finalize
error: undefined symbol: cesium_sqlite3_errstr

how to fix it ? :smiley:

We’re going to need more context. What were you doing when you get these errors? Building the plugin? Packaging a game? Something else? Also please provide more of the build output, not just the errors.

The Cesium sample builds well for Android.
But my project fails to build.

The shipping build error is as follows.

UATHelper: Packaging (Android (ASTC)): ld.lld: error: undefined symbol: cesium_sqlite3_open
UATHelper: Packaging (Android (ASTC)): >>> referenced by SqliteCache.cpp
UATHelper: Packaging (Android (ASTC)): >>> SqliteCache.cpp.o:(CesiumAsync::SqliteCache::createConnection() const) in archive


Most likely the problem is that you’re targeting ARM7. That’s a 32-bit platform, and Cesium for Unreal only supports 64-bit platforms. Change the target to ARMv8 and I think you’ll be set.

I am using UE 5.1.

built with arm64 [aka arm64-8a]

(UE 5.1 doesn’t seem to support 32-bit Android)

Based on the path in your build log, it looks like Cesium for Unreal is embedded in your project. Since you’ve done that, you also must properly build and install cesium-native for Android before you can package a plugin for Android. Have you done that?

It may help to see how our CI system does it:

hi song_mars ,did u fix it?

For anyone finding this later on I had the same problem when building to a quest headset (Android) the answer turned out to be a version mismatch between the plugin and engine.

So if the .uplugin file says “EngineVersion”: “5.2.0”
and you are running Engine: 5.2.1

you will get all kinds of errors cause none of the files are being included correctly. A quick fix is just to eliminate the last number in the plugin. so change: “EngineVersion”: “5.2.0”, to “EngineVersion”: “5.2” in the .uplugin file and you should be fine.