Зачем нужна абстракция настроек
Единый API поверх SharedPreferences и NSUserDefaults
«Зачем нужна абстракция настроек» — бесплатный урок Kotlin Multiplatform Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Kotlin Multiplatform Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Kotlin Multiplatform Academy содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
The Storage Gap
Android and iOS each ship their own way to save small values. Without a shared layer, you would write that code twice. Let's fix that. 🔑
Two Native Stores
Android stores small key-value data in SharedPreferences, while iOS uses NSUserDefaults. Same idea, two very different APIs.
One API to Rule Them
A Settings abstraction wraps both native stores behind a single Kotlin interface, so your shared code calls one method everywhere.
Meet Multiplatform Settings
The community library multiplatform-settings gives you exactly that: one Settings type backed by the right native store on each platform.
Add the Dependency
You add the multiplatform-settings artifact to your shared module's commonMain so every target can use it.
commonMain.dependencies {
implementation("com.russhwolf:multiplatform-settings:1.1.1")
}The Settings Interface
At its core sits the Settings interface. Your shared code depends on this type, never on the platform store directly.
interface Settings {
fun putString(key: String, value: String)
fun getString(key: String, defaultValue: String): String
}Why Abstract at All
Abstraction keeps your shared logic portable. Swap the backing store or add a platform later, and the calling code never changes.
Perfect for Small Data
Settings is built for small values: flags, a username, a theme choice. For big or relational data, reach for SQLDelight instead.
Inject, Don't Create
Each platform builds its own Settings instance and passes it into shared code, so commonMain stays free of platform dependencies.
Call It from Common
Once injected, your shared code just calls Settings methods. The same line runs on Android and iOS without a single change.
fun saveTheme(settings: Settings, theme: String) {
settings.putString("theme", theme)
}Test-Friendly by Design
Because it's an interface, you can drop in a fake in-memory Settings during tests, no device or emulator needed. 🧪
Quick Check
Let's make sure the abstraction's purpose is clear.
Recap
You learned why KMP wraps native key-value stores behind one Settings interface: portable, testable, and written once. Next, real reads and writes. 🎉
Часто задаваемые вопросы
Урок «Зачем нужна абстракция настроек» бесплатный?
Да — полный текст урока «Зачем нужна абстракция настроек» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Kotlin Multiplatform Academy, подпишись на CoddyKit PRO. Курс Kotlin Multiplatform Academy содержит 4 уроков всего.
Чему я научусь в уроке «Зачем нужна абстракция настроек»?
Единый API поверх SharedPreferences и NSUserDefaults Ты практикуешь Kotlin Multiplatform Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Kotlin Multiplatform Academy?
Предыдущий опыт не требуется. Kotlin Multiplatform Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Зачем нужна абстракция настроек»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Kotlin Multiplatform Academy?
Да. Каждый урок Kotlin Multiplatform Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Зачем нужна абстракция настроек
- Чтение и запись типизированных значений
- Значения по умолчанию и очистка ключей
- Безопасное хранение токена аутентификации