diff options
| author | 2023-06-08 16:11:22 +0800 | |
|---|---|---|
| committer | 2023-06-09 07:30:11 +0000 | |
| commit | 4c18b35802017149a27e163cb0b97d20821212ef (patch) | |
| tree | 52e0e04103f33d651cb47f647f27142ed9d926c0 | |
| parent | f4c17a175d643669b7ec02bdc13860704ba4efc3 (diff) | |
Migrate Spa to Kotlin DSL
Also the following changes,
- Upgrade gradle to 8.1
- Upgrade AGP to 8.0.2
- Enable Version Catalog
- Set target SDK to 34
Bug: 284913888
Test: Gradle Sync
Test: Run Gallery
Test: Unit test
Change-Id: I08e1f0517277f176d94c36b1cf18015c988d2a0d
| -rw-r--r-- | packages/SettingsLib/Spa/build.gradle.kts | 66 | ||||
| -rw-r--r-- | packages/SettingsLib/Spa/gallery/build.gradle | 58 | ||||
| -rw-r--r-- | packages/SettingsLib/Spa/gallery/build.gradle.kts (renamed from packages/SettingsLib/Spa/build.gradle) | 43 | ||||
| -rw-r--r-- | packages/SettingsLib/Spa/gradle/libs.versions.toml | 30 | ||||
| -rw-r--r-- | packages/SettingsLib/Spa/gradle/wrapper/gradle-wrapper.properties | 3 | ||||
| -rw-r--r-- | packages/SettingsLib/Spa/settings.gradle.kts (renamed from packages/SettingsLib/Spa/settings.gradle) | 17 | ||||
| -rw-r--r-- | packages/SettingsLib/Spa/spa/build.gradle | 119 | ||||
| -rw-r--r-- | packages/SettingsLib/Spa/spa/build.gradle.kts | 110 | ||||
| -rw-r--r-- | packages/SettingsLib/Spa/testutils/build.gradle | 60 | ||||
| -rw-r--r-- | packages/SettingsLib/Spa/testutils/build.gradle.kts | 46 |
10 files changed, 289 insertions, 263 deletions
diff --git a/packages/SettingsLib/Spa/build.gradle.kts b/packages/SettingsLib/Spa/build.gradle.kts new file mode 100644 index 000000000000..64b67d7fe4f1 --- /dev/null +++ b/packages/SettingsLib/Spa/build.gradle.kts @@ -0,0 +1,66 @@ +/* + * Copyright 2022 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import com.android.build.gradle.BaseExtension +import com.android.build.gradle.api.AndroidBasePlugin +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + +plugins { + alias(libs.plugins.android.application) apply false + alias(libs.plugins.android.library) apply false + alias(libs.plugins.kotlin.android) apply false +} + +allprojects { + extra["jetpackComposeVersion"] = "1.4.0-beta01" +} + +subprojects { + plugins.withType<AndroidBasePlugin> { + configure<BaseExtension> { + compileSdkVersion(33) + + defaultConfig { + minSdk = 21 + targetSdk = 34 + } + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } + } + } + + afterEvaluate { + plugins.withType<AndroidBasePlugin> { + configure<BaseExtension> { + if (buildFeatures.compose == true) { + composeOptions { + kotlinCompilerExtensionVersion = "1.4.4" + } + } + } + } + } + + tasks.withType<KotlinCompile> { + kotlinOptions { + jvmTarget = "17" + freeCompilerArgs = listOf("-Xjvm-default=all") + } + } +} diff --git a/packages/SettingsLib/Spa/gallery/build.gradle b/packages/SettingsLib/Spa/gallery/build.gradle deleted file mode 100644 index 212aa7b7851d..000000000000 --- a/packages/SettingsLib/Spa/gallery/build.gradle +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2022 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -plugins { - id 'com.android.application' - id 'kotlin-android' -} - -android { - namespace 'com.android.settingslib.spa.gallery' - compileSdk TARGET_SDK - buildToolsVersion = BUILD_TOOLS_VERSION - - defaultConfig { - applicationId "com.android.settingslib.spa.gallery" - minSdk MIN_SDK - targetSdk TARGET_SDK - versionCode 1 - versionName "1.0" - } - - sourceSets { - main { - kotlin { - srcDir "src" - } - res.srcDirs = ["res"] - manifest.srcFile "AndroidManifest.xml" - } - } - compileOptions { - sourceCompatibility JavaVersion.VERSION_17 - targetCompatibility JavaVersion.VERSION_17 - } - buildFeatures { - compose true - } - composeOptions { - kotlinCompilerExtensionVersion jetpack_compose_compiler_version - } -} - -dependencies { - implementation project(":spa") -} diff --git a/packages/SettingsLib/Spa/build.gradle b/packages/SettingsLib/Spa/gallery/build.gradle.kts index e68ef85cd43d..7f689c16b7ed 100644 --- a/packages/SettingsLib/Spa/build.gradle +++ b/packages/SettingsLib/Spa/gallery/build.gradle.kts @@ -14,27 +14,32 @@ * limitations under the License. */ -import org.jetbrains.kotlin.gradle.tasks.KotlinCompile - -buildscript { - ext { - BUILD_TOOLS_VERSION = "30.0.3" - MIN_SDK = 21 - TARGET_SDK = 33 - jetpack_compose_version = '1.4.0-beta01' - jetpack_compose_compiler_version = '1.4.4' - } -} plugins { - id 'com.android.application' version '8.0.0' apply false - id 'com.android.library' version '8.0.0' apply false - id 'org.jetbrains.kotlin.android' version '1.8.10' apply false + alias(libs.plugins.android.application) + alias(libs.plugins.kotlin.android) } -subprojects { - tasks.withType(KotlinCompile).configureEach { - kotlinOptions { - jvmTarget = "17" - freeCompilerArgs = ["-Xjvm-default=all"] + +android { + namespace = "com.android.settingslib.spa.gallery" + + defaultConfig { + applicationId = "com.android.settingslib.spa.gallery" + versionCode = 1 + versionName = "1.0" + } + + sourceSets { + sourceSets.getByName("main") { + java.setSrcDirs(listOf("src")) + res.setSrcDirs(listOf("res")) + manifest.srcFile("AndroidManifest.xml") } } + buildFeatures { + compose = true + } +} + +dependencies { + implementation(project(":spa")) } diff --git a/packages/SettingsLib/Spa/gradle/libs.versions.toml b/packages/SettingsLib/Spa/gradle/libs.versions.toml new file mode 100644 index 000000000000..9a16df8c834c --- /dev/null +++ b/packages/SettingsLib/Spa/gradle/libs.versions.toml @@ -0,0 +1,30 @@ +# +# Copyright (C) 2023 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. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +[versions] +agp = "8.0.2" +dexmaker-mockito = "2.28.3" +kotlin = "1.8.10" +truth = "1.1" + +[libraries] +dexmaker-mockito = { module = "com.linkedin.dexmaker:dexmaker-mockito", version.ref = "dexmaker-mockito" } +truth = { module = "com.google.truth:truth", version.ref = "truth" } + +[plugins] +android-application = { id = "com.android.application", version.ref = "agp" } +android-library = { id = "com.android.library", version.ref = "agp" } +kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } diff --git a/packages/SettingsLib/Spa/gradle/wrapper/gradle-wrapper.properties b/packages/SettingsLib/Spa/gradle/wrapper/gradle-wrapper.properties index ed85e33ca8a6..33f49e33a47e 100644 --- a/packages/SettingsLib/Spa/gradle/wrapper/gradle-wrapper.properties +++ b/packages/SettingsLib/Spa/gradle/wrapper/gradle-wrapper.properties @@ -14,9 +14,8 @@ # limitations under the License. # -#Thu Jul 14 10:36:06 CST 2022 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.1-bin.zip distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME diff --git a/packages/SettingsLib/Spa/settings.gradle b/packages/SettingsLib/Spa/settings.gradle.kts index 1c5a1ceda34a..9909781b0623 100644 --- a/packages/SettingsLib/Spa/settings.gradle +++ b/packages/SettingsLib/Spa/settings.gradle.kts @@ -16,20 +16,27 @@ pluginManagement { repositories { - gradlePluginPortal() google() mavenCentral() + gradlePluginPortal() } } dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + rulesMode.set(RulesMode.FAIL_ON_PROJECT_RULES) + repositories { google() mavenCentral() - maven { url "https://jitpack.io"} + maven { + url = uri("https://jitpack.io") + content { + includeGroup("com.github.PhilJay") + } + } } } rootProject.name = "SpaLib" -include ':spa' -include ':gallery' -include ':testutils' +include(":spa") +include(":gallery") +include(":testutils") diff --git a/packages/SettingsLib/Spa/spa/build.gradle b/packages/SettingsLib/Spa/spa/build.gradle deleted file mode 100644 index a591366cd63f..000000000000 --- a/packages/SettingsLib/Spa/spa/build.gradle +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright 2022 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -plugins { - id 'com.android.library' - id 'kotlin-android' -} - -android { - namespace 'com.android.settingslib.spa' - compileSdk TARGET_SDK - buildToolsVersion = BUILD_TOOLS_VERSION - - defaultConfig { - minSdk MIN_SDK - targetSdk TARGET_SDK - - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - } - - sourceSets { - main { - kotlin { - srcDir "src" - } - res.srcDirs = ["res"] - manifest.srcFile "AndroidManifest.xml" - } - androidTest { - kotlin { - srcDir "../tests/src" - } - res.srcDirs = ["../tests/res"] - manifest.srcFile "../tests/AndroidManifest.xml" - } - } - compileOptions { - sourceCompatibility JavaVersion.VERSION_17 - targetCompatibility JavaVersion.VERSION_17 - } - buildFeatures { - compose true - } - composeOptions { - kotlinCompilerExtensionVersion jetpack_compose_compiler_version - } - buildTypes { - debug { - testCoverageEnabled = true - } - } -} - -dependencies { - api "androidx.appcompat:appcompat:1.7.0-alpha02" - api "androidx.slice:slice-builders:1.1.0-alpha02" - api "androidx.slice:slice-core:1.1.0-alpha02" - api "androidx.slice:slice-view:1.1.0-alpha02" - api "androidx.compose.material3:material3:1.1.0-alpha06" - api "androidx.compose.material:material-icons-extended:$jetpack_compose_version" - api "androidx.compose.runtime:runtime-livedata:$jetpack_compose_version" - api "androidx.compose.ui:ui-tooling-preview:$jetpack_compose_version" - api "androidx.lifecycle:lifecycle-livedata-ktx" - api "androidx.lifecycle:lifecycle-runtime-compose" - api "androidx.navigation:navigation-compose:2.6.0-alpha08" - api "com.github.PhilJay:MPAndroidChart:v3.1.0-alpha" - api "com.google.android.material:material:1.7.0-alpha03" - debugApi "androidx.compose.ui:ui-tooling:$jetpack_compose_version" - implementation "com.airbnb.android:lottie-compose:5.2.0" - - androidTestImplementation project(":testutils") - androidTestImplementation 'androidx.lifecycle:lifecycle-runtime-testing' - androidTestImplementation "com.linkedin.dexmaker:dexmaker-mockito:2.28.3" -} - -task coverageReport(type: JacocoReport, dependsOn: "connectedDebugAndroidTest") { - group = "Reporting" - description = "Generate Jacoco coverage reports after running tests." - - sourceDirectories.from = files("src") - classDirectories.from = fileTree( - dir: "$buildDir/tmp/kotlin-classes/debug", - excludes: [ - "com/android/settingslib/spa/debug/**", - - // Excludes files forked from AndroidX. - "com/android/settingslib/spa/widget/scaffold/CustomizedAppBar*", - "com/android/settingslib/spa/widget/scaffold/TopAppBarColors*", - - // Excludes files forked from Accompanist. - "com/android/settingslib/spa/framework/compose/DrawablePainter*", - - // Excludes inline functions, which is not covered in Jacoco reports. - "com/android/settingslib/spa/framework/util/Collections*", - "com/android/settingslib/spa/framework/util/Flows*", - - // Excludes debug functions - "com/android/settingslib/spa/framework/compose/TimeMeasurer*", - - // Excludes slice demo presenter & provider - "com/android/settingslib/spa/slice/presenter/Demo*", - "com/android/settingslib/spa/slice/provider/Demo*", - ], - ) - executionData.from = fileTree(dir: "$buildDir/outputs/code_coverage/debugAndroidTest/connected") -} diff --git a/packages/SettingsLib/Spa/spa/build.gradle.kts b/packages/SettingsLib/Spa/spa/build.gradle.kts new file mode 100644 index 000000000000..fac63361fc1e --- /dev/null +++ b/packages/SettingsLib/Spa/spa/build.gradle.kts @@ -0,0 +1,110 @@ +/* + * Copyright 2022 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +plugins { + id(libs.plugins.android.library.get().pluginId) + id(libs.plugins.kotlin.android.get().pluginId) + jacoco +} + +val jetpackComposeVersion: String? by extra + +android { + namespace = "com.android.settingslib.spa" + + defaultConfig { + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } + + sourceSets { + sourceSets.getByName("main") { + kotlin.setSrcDirs(listOf("src")) + res.setSrcDirs(listOf("res")) + manifest.srcFile("AndroidManifest.xml") + } + sourceSets.getByName("androidTest") { + kotlin.setSrcDirs(listOf("../tests/src")) + res.setSrcDirs(listOf("../tests/res")) + manifest.srcFile("../tests/AndroidManifest.xml") + } + } + buildFeatures { + compose = true + } + buildTypes { + getByName("debug") { + enableAndroidTestCoverage = true + } + } +} + +dependencies { + api("androidx.appcompat:appcompat:1.7.0-alpha02") + api("androidx.slice:slice-builders:1.1.0-alpha02") + api("androidx.slice:slice-core:1.1.0-alpha02") + api("androidx.slice:slice-view:1.1.0-alpha02") + api("androidx.compose.material3:material3:1.1.0-alpha06") + api("androidx.compose.material:material-icons-extended:$jetpackComposeVersion") + api("androidx.compose.runtime:runtime-livedata:$jetpackComposeVersion") + api("androidx.compose.ui:ui-tooling-preview:$jetpackComposeVersion") + api("androidx.lifecycle:lifecycle-livedata-ktx") + api("androidx.lifecycle:lifecycle-runtime-compose") + api("androidx.navigation:navigation-compose:2.6.0-alpha08") + api("com.github.PhilJay:MPAndroidChart:v3.1.0-alpha") + api("com.google.android.material:material:1.7.0-alpha03") + debugApi("androidx.compose.ui:ui-tooling:$jetpackComposeVersion") + implementation("com.airbnb.android:lottie-compose:5.2.0") + + androidTestImplementation(project(":testutils")) + androidTestImplementation("androidx.lifecycle:lifecycle-runtime-testing") +} + +tasks.register<JacocoReport>("coverageReport") { + group = "Reporting" + description = "Generate Jacoco coverage reports after running tests." + dependsOn("connectedDebugAndroidTest") + sourceDirectories.setFrom(files("src")) + classDirectories.setFrom( + fileTree(layout.buildDirectory.dir("tmp/kotlin-classes/debug")) { + setExcludes( + listOf( + "com/android/settingslib/spa/debug/**", + + // Excludes files forked from AndroidX. + "com/android/settingslib/spa/widget/scaffold/CustomizedAppBar*", + "com/android/settingslib/spa/widget/scaffold/TopAppBarColors*", + + // Excludes files forked from Accompanist. + "com/android/settingslib/spa/framework/compose/DrawablePainter*", + + // Excludes inline functions, which is not covered in Jacoco reports. + "com/android/settingslib/spa/framework/util/Collections*", + "com/android/settingslib/spa/framework/util/Flows*", + + // Excludes debug functions + "com/android/settingslib/spa/framework/compose/TimeMeasurer*", + + // Excludes slice demo presenter & provider + "com/android/settingslib/spa/slice/presenter/Demo*", + "com/android/settingslib/spa/slice/provider/Demo*", + ) + ) + } + ) + executionData.setFrom( + fileTree(layout.buildDirectory.dir("outputs/code_coverage/debugAndroidTest/connected")) + ) +} diff --git a/packages/SettingsLib/Spa/testutils/build.gradle b/packages/SettingsLib/Spa/testutils/build.gradle deleted file mode 100644 index 23a9add79d50..000000000000 --- a/packages/SettingsLib/Spa/testutils/build.gradle +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright 2022 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -plugins { - id 'com.android.library' - id 'kotlin-android' -} - -android { - namespace 'com.android.settingslib.spa.testutils' - compileSdk TARGET_SDK - buildToolsVersion = BUILD_TOOLS_VERSION - - defaultConfig { - minSdk MIN_SDK - targetSdk TARGET_SDK - } - - sourceSets { - main { - kotlin { - srcDir "src" - } - manifest.srcFile "AndroidManifest.xml" - } - } - compileOptions { - sourceCompatibility JavaVersion.VERSION_17 - targetCompatibility JavaVersion.VERSION_17 - } - buildFeatures { - compose true - } - composeOptions { - kotlinCompilerExtensionVersion jetpack_compose_compiler_version - } -} - -dependencies { - api project(":spa") - - api "androidx.arch.core:core-testing:2.2.0-alpha01" - api "androidx.compose.ui:ui-test-junit4:$jetpack_compose_version" - api "com.google.truth:truth:1.1.3" - api "org.mockito:mockito-core:2.21.0" - debugApi "androidx.compose.ui:ui-test-manifest:$jetpack_compose_version" -} diff --git a/packages/SettingsLib/Spa/testutils/build.gradle.kts b/packages/SettingsLib/Spa/testutils/build.gradle.kts new file mode 100644 index 000000000000..c3df9bc80628 --- /dev/null +++ b/packages/SettingsLib/Spa/testutils/build.gradle.kts @@ -0,0 +1,46 @@ +/* + * Copyright 2022 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +plugins { + id(libs.plugins.android.library.get().pluginId) + id(libs.plugins.kotlin.android.get().pluginId) +} + +val jetpackComposeVersion: String? by extra + +android { + namespace = "com.android.settingslib.spa.testutils" + + sourceSets { + sourceSets.getByName("main") { + java.setSrcDirs(listOf("src")) + manifest.srcFile("AndroidManifest.xml") + } + } + buildFeatures { + compose = true + } +} + +dependencies { + api(project(":spa")) + + api("androidx.arch.core:core-testing:2.2.0-alpha01") + api("androidx.compose.ui:ui-test-junit4:$jetpackComposeVersion") + api(libs.truth) + api(libs.dexmaker.mockito) + debugApi("androidx.compose.ui:ui-test-manifest:$jetpackComposeVersion") +} |