diff --git a/app/README.md b/app/README.md
index 2a4eb51bd..186f7442f 100644
--- a/app/README.md
+++ b/app/README.md
@@ -54,7 +54,7 @@ graph TB
end
subgraph :feature:settings
direction TB
- :feature:settings:api[api]:::android-library
+ :feature:settings:impl[impl]:::android-library
end
subgraph :sync
direction TB
@@ -78,7 +78,7 @@ graph TB
:app -.-> :feature:interests:impl
:app -.-> :feature:search:api
:app -.-> :feature:search:impl
- :app -.-> :feature:settings:api
+ :app -.-> :feature:settings:impl
:app -.-> :feature:topic:api
:app -.-> :feature:topic:impl
:app -.-> :sync:work
@@ -129,9 +129,9 @@ graph TB
:feature:search:impl -.-> :feature:interests:api
:feature:search:impl -.-> :feature:search:api
:feature:search:impl -.-> :feature:topic:api
- :feature:settings:api -.-> :core:data
- :feature:settings:api -.-> :core:designsystem
- :feature:settings:api -.-> :core:ui
+ :feature:settings:impl -.-> :core:data
+ :feature:settings:impl -.-> :core:designsystem
+ :feature:settings:impl -.-> :core:ui
:feature:topic:api -.-> :core:designsystem
:feature:topic:api --> :core:navigation
:feature:topic:api -.-> :core:ui
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 819000247..2f0253943 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -78,7 +78,7 @@ dependencies {
implementation(projects.feature.topic.impl)
implementation(projects.feature.search.api)
implementation(projects.feature.search.impl)
- implementation(projects.feature.settings.api)
+ implementation(projects.feature.settings.impl)
implementation(projects.core.common)
implementation(projects.core.ui)
diff --git a/app/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/ui/NavigationTest.kt b/app/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/ui/NavigationTest.kt
index 14454a360..5b12c5b4a 100644
--- a/app/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/ui/NavigationTest.kt
+++ b/app/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/ui/NavigationTest.kt
@@ -53,7 +53,7 @@ import javax.inject.Inject
import com.google.samples.apps.nowinandroid.feature.bookmarks.api.R as BookmarksR
import com.google.samples.apps.nowinandroid.feature.foryou.api.R as FeatureForyouR
import com.google.samples.apps.nowinandroid.feature.search.api.R as FeatureSearchR
-import com.google.samples.apps.nowinandroid.feature.settings.api.R as SettingsR
+import com.google.samples.apps.nowinandroid.feature.settings.impl.R as SettingsR
/**
* Tests all the navigation flows that are handled by the navigation library.
diff --git a/app/src/main/kotlin/com/google/samples/apps/nowinandroid/ui/NiaApp.kt b/app/src/main/kotlin/com/google/samples/apps/nowinandroid/ui/NiaApp.kt
index 16aefd455..bfaa27fa6 100644
--- a/app/src/main/kotlin/com/google/samples/apps/nowinandroid/ui/NiaApp.kt
+++ b/app/src/main/kotlin/com/google/samples/apps/nowinandroid/ui/NiaApp.kt
@@ -81,10 +81,10 @@ import com.google.samples.apps.nowinandroid.feature.foryou.impl.navigation.forYo
import com.google.samples.apps.nowinandroid.feature.interests.impl.navigation.interestsEntry
import com.google.samples.apps.nowinandroid.feature.search.api.navigation.SearchNavKey
import com.google.samples.apps.nowinandroid.feature.search.impl.navigation.searchEntry
-import com.google.samples.apps.nowinandroid.feature.settings.api.SettingsDialog
+import com.google.samples.apps.nowinandroid.feature.settings.impl.SettingsDialog
import com.google.samples.apps.nowinandroid.feature.topic.impl.navigation.topicEntry
import com.google.samples.apps.nowinandroid.navigation.TOP_LEVEL_NAV_ITEMS
-import com.google.samples.apps.nowinandroid.feature.settings.api.R as settingsR
+import com.google.samples.apps.nowinandroid.feature.settings.impl.R as settingsR
@Composable
fun NiaApp(
@@ -230,11 +230,11 @@ internal fun NiaApp(
titleRes = destination.titleTextId,
navigationIcon = NiaIcons.Search,
navigationIconContentDescription = stringResource(
- id = settingsR.string.feature_settings_top_app_bar_navigation_icon_description,
+ id = settingsR.string.feature_settings_impl_top_app_bar_navigation_icon_description,
),
actionIcon = NiaIcons.Settings,
actionIconContentDescription = stringResource(
- id = settingsR.string.feature_settings_top_app_bar_action_icon_description,
+ id = settingsR.string.feature_settings_impl_top_app_bar_action_icon_description,
),
colors = TopAppBarDefaults.topAppBarColors(
containerColor = Color.Transparent,
diff --git a/benchmarks/README.md b/benchmarks/README.md
index 8f3f2cc8b..6ccf01e15 100644
--- a/benchmarks/README.md
+++ b/benchmarks/README.md
@@ -54,7 +54,7 @@ graph TB
end
subgraph :feature:settings
direction TB
- :feature:settings:api[api]:::android-library
+ :feature:settings:impl[impl]:::android-library
end
subgraph :sync
direction TB
@@ -78,7 +78,7 @@ graph TB
:app -.-> :feature:interests:impl
:app -.-> :feature:search:api
:app -.-> :feature:search:impl
- :app -.-> :feature:settings:api
+ :app -.-> :feature:settings:impl
:app -.-> :feature:topic:api
:app -.-> :feature:topic:impl
:app -.-> :sync:work
@@ -129,9 +129,9 @@ graph TB
:feature:search:impl -.-> :feature:interests:api
:feature:search:impl -.-> :feature:search:api
:feature:search:impl -.-> :feature:topic:api
- :feature:settings:api -.-> :core:data
- :feature:settings:api -.-> :core:designsystem
- :feature:settings:api -.-> :core:ui
+ :feature:settings:impl -.-> :core:data
+ :feature:settings:impl -.-> :core:designsystem
+ :feature:settings:impl -.-> :core:ui
:feature:topic:api -.-> :core:designsystem
:feature:topic:api --> :core:navigation
:feature:topic:api -.-> :core:ui
diff --git a/feature/settings/api/src/main/res/values/strings.xml b/feature/settings/api/src/main/res/values/strings.xml
deleted file mode 100644
index 887539bd5..000000000
--- a/feature/settings/api/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-
-
-
- Settings
- Search
- Settings
- Loading…
- Privacy policy
- Licenses
- Brand Guidelines
- Feedback
- Theme
- Default
- Android
- Dark mode preference
- System default
- Light
- Dark
- Use Dynamic Color
- Yes
- No
- OK
-
diff --git a/feature/settings/api/.gitignore b/feature/settings/impl/.gitignore
similarity index 100%
rename from feature/settings/api/.gitignore
rename to feature/settings/impl/.gitignore
diff --git a/feature/settings/api/README.md b/feature/settings/impl/README.md
similarity index 93%
rename from feature/settings/api/README.md
rename to feature/settings/impl/README.md
index 2f909979e..ee6e91e47 100644
--- a/feature/settings/api/README.md
+++ b/feature/settings/impl/README.md
@@ -27,7 +27,7 @@ graph TB
end
subgraph :feature:settings
direction TB
- :feature:settings:api[api]:::android-library
+ :feature:settings:impl[impl]:::android-library
end
:core:data -.-> :core:analytics
@@ -47,9 +47,9 @@ graph TB
:core:ui --> :core:analytics
:core:ui --> :core:designsystem
:core:ui --> :core:model
- :feature:settings:api -.-> :core:data
- :feature:settings:api -.-> :core:designsystem
- :feature:settings:api -.-> :core:ui
+ :feature:settings:impl -.-> :core:data
+ :feature:settings:impl -.-> :core:designsystem
+ :feature:settings:impl -.-> :core:ui
classDef android-application fill:#CAFFBF,stroke:#000,stroke-width:2px,color:#000;
classDef android-feature fill:#FFD6A5,stroke:#000,stroke-width:2px,color:#000;
diff --git a/feature/settings/api/build.gradle.kts b/feature/settings/impl/build.gradle.kts
similarity index 98%
rename from feature/settings/api/build.gradle.kts
rename to feature/settings/impl/build.gradle.kts
index 16ef6cc08..d398e6103 100644
--- a/feature/settings/api/build.gradle.kts
+++ b/feature/settings/impl/build.gradle.kts
@@ -21,7 +21,7 @@ plugins {
}
android {
- namespace = "com.google.samples.apps.nowinandroid.feature.settings.api"
+ namespace = "com.google.samples.apps.nowinandroid.feature.settings.impl"
}
dependencies {
diff --git a/feature/settings/api/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/feature/settings/api/SettingsDialogTest.kt b/feature/settings/impl/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/feature/settings/impl/SettingsDialogTest.kt
similarity index 96%
rename from feature/settings/api/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/feature/settings/api/SettingsDialogTest.kt
rename to feature/settings/impl/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/feature/settings/impl/SettingsDialogTest.kt
index c92894ee0..5d221be6a 100644
--- a/feature/settings/api/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/feature/settings/api/SettingsDialogTest.kt
+++ b/feature/settings/impl/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/feature/settings/impl/SettingsDialogTest.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.google.samples.apps.nowinandroid.feature.settings.api
+package com.google.samples.apps.nowinandroid.feature.settings.impl
import androidx.activity.ComponentActivity
import androidx.compose.ui.test.assertIsSelected
@@ -23,8 +23,8 @@ import androidx.compose.ui.test.onNodeWithText
import com.google.samples.apps.nowinandroid.core.model.data.DarkThemeConfig.DARK
import com.google.samples.apps.nowinandroid.core.model.data.ThemeBrand.ANDROID
import com.google.samples.apps.nowinandroid.core.model.data.ThemeBrand.DEFAULT
-import com.google.samples.apps.nowinandroid.feature.settings.api.SettingsUiState.Loading
-import com.google.samples.apps.nowinandroid.feature.settings.api.SettingsUiState.Success
+import com.google.samples.apps.nowinandroid.feature.settings.impl.SettingsUiState.Loading
+import com.google.samples.apps.nowinandroid.feature.settings.impl.SettingsUiState.Success
import org.junit.Rule
import org.junit.Test
diff --git a/feature/settings/api/src/main/AndroidManifest.xml b/feature/settings/impl/src/main/AndroidManifest.xml
similarity index 100%
rename from feature/settings/api/src/main/AndroidManifest.xml
rename to feature/settings/impl/src/main/AndroidManifest.xml
diff --git a/feature/settings/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/api/SettingsDialog.kt b/feature/settings/impl/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/impl/SettingsDialog.kt
similarity index 88%
rename from feature/settings/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/api/SettingsDialog.kt
rename to feature/settings/impl/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/impl/SettingsDialog.kt
index e6eef27e1..b2758e286 100644
--- a/feature/settings/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/api/SettingsDialog.kt
+++ b/feature/settings/impl/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/impl/SettingsDialog.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 The Android Open Source Project
+ * Copyright 2025 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,7 +16,7 @@
@file:Suppress("ktlint:standard:max-line-length")
-package com.google.samples.apps.nowinandroid.feature.settings.api
+package com.google.samples.apps.nowinandroid.feature.settings.impl
import android.content.Intent
import androidx.compose.animation.AnimatedVisibility
@@ -66,9 +66,9 @@ import com.google.samples.apps.nowinandroid.core.model.data.ThemeBrand
import com.google.samples.apps.nowinandroid.core.model.data.ThemeBrand.ANDROID
import com.google.samples.apps.nowinandroid.core.model.data.ThemeBrand.DEFAULT
import com.google.samples.apps.nowinandroid.core.ui.TrackScreenViewEvent
-import com.google.samples.apps.nowinandroid.feature.settings.api.R.string
-import com.google.samples.apps.nowinandroid.feature.settings.api.SettingsUiState.Loading
-import com.google.samples.apps.nowinandroid.feature.settings.api.SettingsUiState.Success
+import com.google.samples.apps.nowinandroid.feature.settings.impl.R.string
+import com.google.samples.apps.nowinandroid.feature.settings.impl.SettingsUiState.Loading
+import com.google.samples.apps.nowinandroid.feature.settings.impl.SettingsUiState.Success
@Composable
fun SettingsDialog(
@@ -109,7 +109,7 @@ fun SettingsDialog(
onDismissRequest = { onDismiss() },
title = {
Text(
- text = stringResource(string.feature_settings_title),
+ text = stringResource(string.feature_settings_impl_title),
style = MaterialTheme.typography.titleLarge,
)
},
@@ -119,7 +119,7 @@ fun SettingsDialog(
when (settingsUiState) {
Loading -> {
Text(
- text = stringResource(string.feature_settings_loading),
+ text = stringResource(string.feature_settings_impl_loading),
modifier = Modifier.padding(vertical = 16.dp),
)
}
@@ -145,7 +145,7 @@ fun SettingsDialog(
modifier = Modifier.padding(horizontal = 8.dp),
) {
Text(
- text = stringResource(string.feature_settings_dismiss_dialog_button_text),
+ text = stringResource(string.feature_settings_impl_dismiss_dialog_button_text),
style = MaterialTheme.typography.labelLarge,
color = MaterialTheme.colorScheme.primary,
)
@@ -163,50 +163,50 @@ private fun ColumnScope.SettingsPanel(
onChangeDynamicColorPreference: (useDynamicColor: Boolean) -> Unit,
onChangeDarkThemeConfig: (darkThemeConfig: DarkThemeConfig) -> Unit,
) {
- SettingsDialogSectionTitle(text = stringResource(string.feature_settings_theme))
+ SettingsDialogSectionTitle(text = stringResource(string.feature_settings_impl_theme))
Column(Modifier.selectableGroup()) {
SettingsDialogThemeChooserRow(
- text = stringResource(string.feature_settings_brand_default),
+ text = stringResource(string.feature_settings_impl_brand_default),
selected = settings.brand == DEFAULT,
onClick = { onChangeThemeBrand(DEFAULT) },
)
SettingsDialogThemeChooserRow(
- text = stringResource(string.feature_settings_brand_android),
+ text = stringResource(string.feature_settings_impl_brand_android),
selected = settings.brand == ANDROID,
onClick = { onChangeThemeBrand(ANDROID) },
)
}
AnimatedVisibility(visible = settings.brand == DEFAULT && supportDynamicColor) {
Column {
- SettingsDialogSectionTitle(text = stringResource(string.feature_settings_dynamic_color_preference))
+ SettingsDialogSectionTitle(text = stringResource(string.feature_settings_impl_dynamic_color_preference))
Column(Modifier.selectableGroup()) {
SettingsDialogThemeChooserRow(
- text = stringResource(string.feature_settings_dynamic_color_yes),
+ text = stringResource(string.feature_settings_impl_dynamic_color_yes),
selected = settings.useDynamicColor,
onClick = { onChangeDynamicColorPreference(true) },
)
SettingsDialogThemeChooserRow(
- text = stringResource(string.feature_settings_dynamic_color_no),
+ text = stringResource(string.feature_settings_impl_dynamic_color_no),
selected = !settings.useDynamicColor,
onClick = { onChangeDynamicColorPreference(false) },
)
}
}
}
- SettingsDialogSectionTitle(text = stringResource(string.feature_settings_dark_mode_preference))
+ SettingsDialogSectionTitle(text = stringResource(string.feature_settings_impl_dark_mode_preference))
Column(Modifier.selectableGroup()) {
SettingsDialogThemeChooserRow(
- text = stringResource(string.feature_settings_dark_mode_config_system_default),
+ text = stringResource(string.feature_settings_impl_dark_mode_config_system_default),
selected = settings.darkThemeConfig == FOLLOW_SYSTEM,
onClick = { onChangeDarkThemeConfig(FOLLOW_SYSTEM) },
)
SettingsDialogThemeChooserRow(
- text = stringResource(string.feature_settings_dark_mode_config_light),
+ text = stringResource(string.feature_settings_impl_dark_mode_config_light),
selected = settings.darkThemeConfig == LIGHT,
onClick = { onChangeDarkThemeConfig(LIGHT) },
)
SettingsDialogThemeChooserRow(
- text = stringResource(string.feature_settings_dark_mode_config_dark),
+ text = stringResource(string.feature_settings_impl_dark_mode_config_dark),
selected = settings.darkThemeConfig == DARK,
onClick = { onChangeDarkThemeConfig(DARK) },
)
@@ -262,7 +262,7 @@ private fun LinksPanel() {
NiaTextButton(
onClick = { uriHandler.openUri(PRIVACY_POLICY_URL) },
) {
- Text(text = stringResource(string.feature_settings_privacy_policy))
+ Text(text = stringResource(string.feature_settings_impl_privacy_policy))
}
val context = LocalContext.current
NiaTextButton(
@@ -270,17 +270,17 @@ private fun LinksPanel() {
context.startActivity(Intent(context, OssLicensesMenuActivity::class.java))
},
) {
- Text(text = stringResource(string.feature_settings_licenses))
+ Text(text = stringResource(string.feature_settings_impl_licenses))
}
NiaTextButton(
onClick = { uriHandler.openUri(BRAND_GUIDELINES_URL) },
) {
- Text(text = stringResource(string.feature_settings_brand_guidelines))
+ Text(text = stringResource(string.feature_settings_impl_brand_guidelines))
}
NiaTextButton(
onClick = { uriHandler.openUri(FEEDBACK_URL) },
) {
- Text(text = stringResource(string.feature_settings_feedback))
+ Text(text = stringResource(string.feature_settings_impl_feedback))
}
}
}
diff --git a/feature/settings/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/api/SettingsViewModel.kt b/feature/settings/impl/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/impl/SettingsViewModel.kt
similarity index 92%
rename from feature/settings/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/api/SettingsViewModel.kt
rename to feature/settings/impl/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/impl/SettingsViewModel.kt
index f34c72f0c..274f916d1 100644
--- a/feature/settings/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/api/SettingsViewModel.kt
+++ b/feature/settings/impl/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/impl/SettingsViewModel.kt
@@ -14,15 +14,15 @@
* limitations under the License.
*/
-package com.google.samples.apps.nowinandroid.feature.settings.api
+package com.google.samples.apps.nowinandroid.feature.settings.impl
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.google.samples.apps.nowinandroid.core.data.repository.UserDataRepository
import com.google.samples.apps.nowinandroid.core.model.data.DarkThemeConfig
import com.google.samples.apps.nowinandroid.core.model.data.ThemeBrand
-import com.google.samples.apps.nowinandroid.feature.settings.api.SettingsUiState.Loading
-import com.google.samples.apps.nowinandroid.feature.settings.api.SettingsUiState.Success
+import com.google.samples.apps.nowinandroid.feature.settings.impl.SettingsUiState.Loading
+import com.google.samples.apps.nowinandroid.feature.settings.impl.SettingsUiState.Success
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.SharingStarted.Companion.WhileSubscribed
import kotlinx.coroutines.flow.StateFlow
diff --git a/feature/settings/impl/src/main/res/values/strings.xml b/feature/settings/impl/src/main/res/values/strings.xml
new file mode 100644
index 000000000..18e0dcf18
--- /dev/null
+++ b/feature/settings/impl/src/main/res/values/strings.xml
@@ -0,0 +1,37 @@
+
+
+
+ Settings
+ Search
+ Settings
+ Loading…
+ Privacy policy
+ Licenses
+ Brand Guidelines
+ Feedback
+ Theme
+ Default
+ Android
+ Dark mode preference
+ System default
+ Light
+ Dark
+ Use Dynamic Color
+ Yes
+ No
+ OK
+
diff --git a/feature/settings/api/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/settings/api/SettingsViewModelTest.kt b/feature/settings/impl/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/settings/impl/SettingsViewModelTest.kt
similarity index 90%
rename from feature/settings/api/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/settings/api/SettingsViewModelTest.kt
rename to feature/settings/impl/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/settings/impl/SettingsViewModelTest.kt
index 31b73df5b..1d275f745 100644
--- a/feature/settings/api/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/settings/api/SettingsViewModelTest.kt
+++ b/feature/settings/impl/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/settings/impl/SettingsViewModelTest.kt
@@ -14,14 +14,14 @@
* limitations under the License.
*/
-package com.google.samples.apps.nowinandroid.feature.settings.api
+package com.google.samples.apps.nowinandroid.feature.settings.impl
import com.google.samples.apps.nowinandroid.core.model.data.DarkThemeConfig.DARK
import com.google.samples.apps.nowinandroid.core.model.data.ThemeBrand.ANDROID
import com.google.samples.apps.nowinandroid.core.testing.repository.TestUserDataRepository
import com.google.samples.apps.nowinandroid.core.testing.util.MainDispatcherRule
-import com.google.samples.apps.nowinandroid.feature.settings.api.SettingsUiState.Loading
-import com.google.samples.apps.nowinandroid.feature.settings.api.SettingsUiState.Success
+import com.google.samples.apps.nowinandroid.feature.settings.impl.SettingsUiState.Loading
+import com.google.samples.apps.nowinandroid.feature.settings.impl.SettingsUiState.Success
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.launch
import kotlinx.coroutines.test.UnconfinedTestDispatcher
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 11a8d7e79..729f9b480 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -17,7 +17,7 @@ androidxCoreSplashscreen = "1.0.1"
androidxDataStore = "1.2.0"
androidxEspresso = "3.6.1"
androidxHiltLifecycleViewModelCompose = "1.3.0-alpha02"
-androidxLifecycle = "2.8.7"
+androidxLifecycle = "2.10.0"
androidxLintGradle = "1.0.0-alpha03"
androidxLifecycleViewModelNavigation3 = "2.10.0"
androidxMacroBenchmark = "1.4.1"
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 03adf46ee..73a1d9d6a 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -76,7 +76,7 @@ include(":feature:topic:api")
include(":feature:topic:impl")
include(":feature:search:api")
include(":feature:search:impl")
-include(":feature:settings:api")
+include(":feature:settings:impl")
include(":lint")
include(":sync:work")
include(":sync:sync-test")