# SQLCipher and Firebase SPM symbol conflicts can disable encryption in Kotlin Multiplatform Room databases

DevFeed: [SQLCipher and Firebase SPM symbol conflicts can disable encryption in Kotlin Multiplatform Room databases](<https://devfeed.tech/articles/sqlcipher-firebase-in-kmp-when-spm-import-symbol-conflicts-break-your-encryption-properly-encrypt-your-room-database-in-kmp-22964.md>)

Original publisher: [Read original article](<https://funkymuse.github.io/posts/encrypt-kmp-database-with-firebase-in-project/>)

Author: FunkyMuse

Published: 2026-05-12T13:30:00Z

Content type: tutorial

Language: en

Sources: [FunkyMuse](<https://devfeed.tech/sources/funkymuse.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Encryption](<https://devfeed.tech/topics/encryption.md>), [Firebase](<https://devfeed.tech/topics/firebase.md>), [SQLite](<https://devfeed.tech/topics/sqlite.md>), [iOS](<https://devfeed.tech/topics/ios.md>)

Tags: [cocoapods](<https://devfeed.tech/tags/cocoapods.md>), [encryption](<https://devfeed.tech/tags/encryption.md>), [firebase](<https://devfeed.tech/tags/firebase.md>), [ios](<https://devfeed.tech/tags/ios.md>), [kmp](<https://devfeed.tech/tags/kmp.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [sqlite](<https://devfeed.tech/tags/sqlite.md>)

## AI overview

This tutorial explains how adding Firebase iOS SDK packages through Kotlin's experimental Swift Package Manager integration caused a Kotlin Multiplatform Room database to use Apple's unencrypted sqlite3 instead of SQLCipher. It attributes the issue to identical SQLite symbols and linker precedence in statically linked frameworks.

## Source excerpt

The Starting Point I know, long title... my creativity turned into lengthy title I recently needed encrypted database storage in my Kotlin Multiplatform app using AndroidX Room. After some research, i found Paris Tsiogas's excellent guide on Encrypted Room Database in KMP which walks through the full setup, Gradle dependencies, platform-specific implementations, and a custom SQLCipherNativeDriv...