From 56f0a62fcc7b19b697835d2fcb8aa01a3db036a0 Mon Sep 17 00:00:00 2001 From: SOUP Date: Sat, 28 Mar 2026 22:32:13 +0900 Subject: [PATCH 1/5] Add baseline:readmore-view module with dependency-guard and manifest-shield Introduce a baseline app module to track readmore-view transitive dependencies and merged manifest changes. Create readmore.android.baseline convention plugin that applies com.android.application, dependency-guard, and manifest-shield. Move dependency tracking from sample module to the dedicated baseline module, and add manifestShield check to CI workflow. --- .github/workflows/build.yaml | 3 + baseline/readmore-view/build.gradle | 22 ++++ .../dependencies/releaseRuntimeClasspath.txt | 47 +++++++ .../manifestShield/releaseAndroidManifest.txt | 13 ++ .../src/main/AndroidManifest.xml | 2 + build-logic/convention/build.gradle.kts | 6 + .../kotlin/AndroidBaselineConventionPlugin.kt | 16 +++ build.gradle | 1 + gradle/libs.versions.toml | 4 + sample/build.gradle | 10 -- .../dependencies/releaseRuntimeClasspath.txt | 121 ------------------ settings.gradle | 1 + 12 files changed, 115 insertions(+), 131 deletions(-) create mode 100644 baseline/readmore-view/build.gradle create mode 100644 baseline/readmore-view/dependencies/releaseRuntimeClasspath.txt create mode 100644 baseline/readmore-view/manifestShield/releaseAndroidManifest.txt create mode 100644 baseline/readmore-view/src/main/AndroidManifest.xml create mode 100644 build-logic/convention/src/main/kotlin/AndroidBaselineConventionPlugin.kt delete mode 100644 sample/dependencies/releaseRuntimeClasspath.txt diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index cb2ab8b..f9c9cfb 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -38,6 +38,9 @@ jobs: - name: Check dependencyGuard run: ./gradlew dependencyGuard + - name: Check manifestShield + run: ./gradlew manifestShield + - name: Check spotless run: ./gradlew spotlessCheck --init-script gradle/init.gradle.kts --stacktrace diff --git a/baseline/readmore-view/build.gradle b/baseline/readmore-view/build.gradle new file mode 100644 index 0000000..7e01635 --- /dev/null +++ b/baseline/readmore-view/build.gradle @@ -0,0 +1,22 @@ +plugins { + id("readmore.android.baseline") +} + +android { + namespace "com.webtoonscorp.android.readmore.baseline" + defaultConfig { + applicationId "com.webtoonscorp.android.readmore.baseline" + } +} + +dependencies { + implementation projects.readmoreView +} + +dependencyGuard { + configuration("releaseRuntimeClasspath") +} + +manifestShield { + configuration("release") +} diff --git a/baseline/readmore-view/dependencies/releaseRuntimeClasspath.txt b/baseline/readmore-view/dependencies/releaseRuntimeClasspath.txt new file mode 100644 index 0000000..daff535 --- /dev/null +++ b/baseline/readmore-view/dependencies/releaseRuntimeClasspath.txt @@ -0,0 +1,47 @@ +androidx.activity:activity:1.7.0 +androidx.annotation:annotation-experimental:1.4.1 +androidx.annotation:annotation-jvm:1.8.1 +androidx.annotation:annotation:1.8.1 +androidx.appcompat:appcompat-resources:1.7.0 +androidx.appcompat:appcompat:1.7.0 +androidx.arch.core:core-common:2.2.0 +androidx.arch.core:core-runtime:2.2.0 +androidx.collection:collection-jvm:1.4.2 +androidx.collection:collection:1.4.2 +androidx.concurrent:concurrent-futures:1.1.0 +androidx.core:core-ktx:1.15.0 +androidx.core:core:1.15.0 +androidx.cursoradapter:cursoradapter:1.0.0 +androidx.customview:customview:1.0.0 +androidx.drawerlayout:drawerlayout:1.0.0 +androidx.emoji2:emoji2-views-helper:1.3.0 +androidx.emoji2:emoji2:1.3.0 +androidx.fragment:fragment:1.5.4 +androidx.interpolator:interpolator:1.0.0 +androidx.lifecycle:lifecycle-common:2.6.2 +androidx.lifecycle:lifecycle-livedata-core:2.6.2 +androidx.lifecycle:lifecycle-livedata:2.6.2 +androidx.lifecycle:lifecycle-process:2.6.2 +androidx.lifecycle:lifecycle-runtime:2.6.2 +androidx.lifecycle:lifecycle-viewmodel-savedstate:2.6.2 +androidx.lifecycle:lifecycle-viewmodel:2.6.2 +androidx.loader:loader:1.0.0 +androidx.profileinstaller:profileinstaller:1.3.1 +androidx.resourceinspection:resourceinspection-annotation:1.0.1 +androidx.savedstate:savedstate:1.2.1 +androidx.startup:startup-runtime:1.1.1 +androidx.tracing:tracing:1.2.0 +androidx.vectordrawable:vectordrawable-animated:1.1.0 +androidx.vectordrawable:vectordrawable:1.1.0 +androidx.versionedparcelable:versionedparcelable:1.1.1 +androidx.viewpager:viewpager:1.0.0 +com.google.guava:listenablefuture:1.0 +org.jetbrains.kotlin:kotlin-stdlib-common:2.0.21 +org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.21 +org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.21 +org.jetbrains.kotlin:kotlin-stdlib:2.0.21 +org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4 +org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.6.4 +org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4 +org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4 +org.jetbrains:annotations:13.0 diff --git a/baseline/readmore-view/manifestShield/releaseAndroidManifest.txt b/baseline/readmore-view/manifestShield/releaseAndroidManifest.txt new file mode 100644 index 0000000..0d88ae9 --- /dev/null +++ b/baseline/readmore-view/manifestShield/releaseAndroidManifest.txt @@ -0,0 +1,13 @@ +uses-permission: + com.webtoonscorp.android.readmore.baseline.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION + +receiver: + androidx.profileinstaller.ProfileInstallReceiver (exported) + permission: android.permission.DUMP + +provider: + +androidx.startup: + androidx.emoji2.text.EmojiCompatInitializer + androidx.lifecycle.ProcessLifecycleInitializer + androidx.profileinstaller.ProfileInstallerInitializer diff --git a/baseline/readmore-view/src/main/AndroidManifest.xml b/baseline/readmore-view/src/main/AndroidManifest.xml new file mode 100644 index 0000000..8072ee0 --- /dev/null +++ b/baseline/readmore-view/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + + diff --git a/build-logic/convention/build.gradle.kts b/build-logic/convention/build.gradle.kts index 972f7ff..4f726d1 100644 --- a/build-logic/convention/build.gradle.kts +++ b/build-logic/convention/build.gradle.kts @@ -21,6 +21,8 @@ dependencies { implementation(libs.android.pluginGradle) implementation(libs.kotlin.pluginGradle) implementation(libs.compose.compiler.pluginGradle) + implementation(libs.dependency.guard.pluginGradle) + implementation(libs.manifest.shield.pluginGradle) } gradlePlugin { @@ -37,5 +39,9 @@ gradlePlugin { id = "readmore.android.compose" implementationClass = "AndroidComposeConventionPlugin" } + register("androidBaseline") { + id = "readmore.android.baseline" + implementationClass = "AndroidBaselineConventionPlugin" + } } } diff --git a/build-logic/convention/src/main/kotlin/AndroidBaselineConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidBaselineConventionPlugin.kt new file mode 100644 index 0000000..01a83a2 --- /dev/null +++ b/build-logic/convention/src/main/kotlin/AndroidBaselineConventionPlugin.kt @@ -0,0 +1,16 @@ +import com.webtoonscorp.android.readmore.buildlogic.configureAndroid +import org.gradle.api.Plugin +import org.gradle.api.Project + +class AndroidBaselineConventionPlugin : Plugin { + override fun apply(target: Project) { + with(target) { + with(pluginManager) { + apply("com.android.application") + apply("com.dropbox.dependency-guard") + apply("io.github.fornewid.manifest-shield") + } + configureAndroid() + } + } +} diff --git a/build.gradle b/build.gradle index d444376..2807573 100644 --- a/build.gradle +++ b/build.gradle @@ -9,6 +9,7 @@ plugins { alias(libs.plugins.metalava) apply false alias(libs.plugins.maven.publish) apply false alias(libs.plugins.dependency.guard) apply false + alias(libs.plugins.manifest.shield) apply false alias(libs.plugins.jetbrains.dokka) } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index df890ab..c06cf3f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -17,6 +17,7 @@ appcompat = "1.7.0" core = "1.15.0" dependency-guard = "0.5.0" +manifest-shield = "0.1.8" androidxtest = "1.4.0" androidxtest-junit = "1.1.3" @@ -66,6 +67,8 @@ robolectric = { module = "org.robolectric:robolectric", version.ref = "robolectr android-pluginGradle = { module = "com.android.tools.build:gradle", version.ref = "agp" } kotlin-pluginGradle = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" } compose-compiler-pluginGradle = { module = "org.jetbrains.kotlin:compose-compiler-gradle-plugin", version.ref = "kotlin" } +dependency-guard-pluginGradle = { module = "com.dropbox.dependency-guard:dependency-guard", version.ref = "dependency-guard" } +manifest-shield-pluginGradle = { module = "io.github.fornewid.manifest-shield:manifest-shield", version.ref = "manifest-shield" } [plugins] android-application = { id = "com.android.application", version.ref = "agp" } @@ -77,3 +80,4 @@ jetbrains-dokka = { id = "org.jetbrains.dokka", version.ref = "dokka" } metalava = { id = "me.tylerbwong.gradle.metalava", version.ref = "metalava" } maven-publish = { id = "com.vanniktech.maven.publish", version.ref = "mavenPublish" } dependency-guard = { id = "com.dropbox.dependency-guard", version.ref = "dependency-guard" } +manifest-shield = { id = "io.github.fornewid.manifest-shield", version.ref = "manifest-shield" } diff --git a/sample/build.gradle b/sample/build.gradle index e8aa570..aba831c 100644 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -1,7 +1,6 @@ plugins { id("readmore.android.application") id("readmore.android.compose") - alias(libs.plugins.dependency.guard) } android { @@ -53,12 +52,3 @@ dependencies { implementation libs.compose.ui.preview debugImplementation libs.compose.ui.tooling } - -dependencyGuard { - // All dependencies included in Production Release APK - configuration("releaseRuntimeClasspath") -} - -task applyDependencyBaseline { - dependsOn "dependencyGuardBaseline" -} diff --git a/sample/dependencies/releaseRuntimeClasspath.txt b/sample/dependencies/releaseRuntimeClasspath.txt deleted file mode 100644 index d80d07c..0000000 --- a/sample/dependencies/releaseRuntimeClasspath.txt +++ /dev/null @@ -1,121 +0,0 @@ -androidx.activity:activity-compose:1.8.2 -androidx.activity:activity-ktx:1.8.2 -androidx.activity:activity:1.8.2 -androidx.annotation:annotation-experimental:1.4.1 -androidx.annotation:annotation-jvm:1.9.1 -androidx.annotation:annotation:1.9.1 -androidx.appcompat:appcompat-resources:1.7.0 -androidx.appcompat:appcompat:1.7.0 -androidx.arch.core:core-common:2.2.0 -androidx.arch.core:core-runtime:2.2.0 -androidx.autofill:autofill:1.0.0 -androidx.cardview:cardview:1.0.0 -androidx.collection:collection-jvm:1.5.0 -androidx.collection:collection-ktx:1.5.0 -androidx.collection:collection:1.5.0 -androidx.compose.animation:animation-android:1.9.0 -androidx.compose.animation:animation-core-android:1.9.0 -androidx.compose.animation:animation-core:1.9.0 -androidx.compose.animation:animation:1.9.0 -androidx.compose.foundation:foundation-android:1.9.0 -androidx.compose.foundation:foundation-layout-android:1.9.0 -androidx.compose.foundation:foundation-layout:1.9.0 -androidx.compose.foundation:foundation:1.9.0 -androidx.compose.material3:material3-android:1.4.0 -androidx.compose.material3:material3:1.4.0 -androidx.compose.material:material-android:1.9.0 -androidx.compose.material:material-ripple-android:1.8.2 -androidx.compose.material:material-ripple:1.8.2 -androidx.compose.material:material:1.9.0 -androidx.compose.runtime:runtime-android:1.9.0 -androidx.compose.runtime:runtime-annotation-android:1.9.0 -androidx.compose.runtime:runtime-annotation:1.9.0 -androidx.compose.runtime:runtime-saveable-android:1.9.0 -androidx.compose.runtime:runtime-saveable:1.9.0 -androidx.compose.runtime:runtime:1.9.0 -androidx.compose.ui:ui-android:1.9.0 -androidx.compose.ui:ui-geometry-android:1.9.0 -androidx.compose.ui:ui-geometry:1.9.0 -androidx.compose.ui:ui-graphics-android:1.9.0 -androidx.compose.ui:ui-graphics:1.9.0 -androidx.compose.ui:ui-text-android:1.9.0 -androidx.compose.ui:ui-text:1.9.0 -androidx.compose.ui:ui-tooling-preview-android:1.9.0 -androidx.compose.ui:ui-tooling-preview:1.9.0 -androidx.compose.ui:ui-unit-android:1.9.0 -androidx.compose.ui:ui-unit:1.9.0 -androidx.compose.ui:ui-util-android:1.9.0 -androidx.compose.ui:ui-util:1.9.0 -androidx.compose.ui:ui:1.9.0 -androidx.concurrent:concurrent-futures:1.1.0 -androidx.constraintlayout:constraintlayout-solver:2.0.1 -androidx.constraintlayout:constraintlayout:2.0.1 -androidx.coordinatorlayout:coordinatorlayout:1.1.0 -androidx.core:core-ktx:1.15.0 -androidx.core:core-viewtree:1.0.0 -androidx.core:core:1.15.0 -androidx.cursoradapter:cursoradapter:1.0.0 -androidx.customview:customview-poolingcontainer:1.0.0 -androidx.customview:customview:1.1.0 -androidx.databinding:viewbinding:8.10.1 -androidx.documentfile:documentfile:1.0.0 -androidx.drawerlayout:drawerlayout:1.1.1 -androidx.dynamicanimation:dynamicanimation:1.0.0 -androidx.emoji2:emoji2-views-helper:1.4.0 -androidx.emoji2:emoji2:1.4.0 -androidx.fragment:fragment:1.5.4 -androidx.graphics:graphics-path:1.0.1 -androidx.interpolator:interpolator:1.0.0 -androidx.legacy:legacy-support-core-utils:1.0.0 -androidx.lifecycle:lifecycle-common-java8:2.9.0 -androidx.lifecycle:lifecycle-common-jvm:2.9.0 -androidx.lifecycle:lifecycle-common:2.9.0 -androidx.lifecycle:lifecycle-livedata-core-ktx:2.9.0 -androidx.lifecycle:lifecycle-livedata-core:2.9.0 -androidx.lifecycle:lifecycle-livedata:2.9.0 -androidx.lifecycle:lifecycle-process:2.9.0 -androidx.lifecycle:lifecycle-runtime-android:2.9.0 -androidx.lifecycle:lifecycle-runtime-compose-android:2.9.0 -androidx.lifecycle:lifecycle-runtime-compose:2.9.0 -androidx.lifecycle:lifecycle-runtime-ktx-android:2.9.0 -androidx.lifecycle:lifecycle-runtime-ktx:2.9.0 -androidx.lifecycle:lifecycle-runtime:2.9.0 -androidx.lifecycle:lifecycle-viewmodel-android:2.9.0 -androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.0 -androidx.lifecycle:lifecycle-viewmodel-savedstate-android:2.9.0 -androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.0 -androidx.lifecycle:lifecycle-viewmodel:2.9.0 -androidx.loader:loader:1.0.0 -androidx.localbroadcastmanager:localbroadcastmanager:1.0.0 -androidx.print:print:1.0.0 -androidx.profileinstaller:profileinstaller:1.4.0 -androidx.recyclerview:recyclerview:1.1.0 -androidx.resourceinspection:resourceinspection-annotation:1.0.1 -androidx.savedstate:savedstate-android:1.3.0 -androidx.savedstate:savedstate-compose-android:1.3.0 -androidx.savedstate:savedstate-compose:1.3.0 -androidx.savedstate:savedstate-ktx:1.3.0 -androidx.savedstate:savedstate:1.3.0 -androidx.startup:startup-runtime:1.1.1 -androidx.tracing:tracing:1.2.0 -androidx.transition:transition:1.2.0 -androidx.vectordrawable:vectordrawable-animated:1.1.0 -androidx.vectordrawable:vectordrawable:1.1.0 -androidx.versionedparcelable:versionedparcelable:1.1.1 -androidx.viewpager2:viewpager2:1.0.0 -androidx.viewpager:viewpager:1.0.0 -com.google.android.material:material:1.5.0 -com.google.guava:listenablefuture:1.0 -org.jetbrains.kotlin:kotlin-stdlib-common:2.0.21 -org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.21 -org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.21 -org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1 -org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.8.1 -org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.1 -org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1 -org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.3 -org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.3 -org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3 -org.jetbrains:annotations:23.0.0 -org.jspecify:jspecify:1.0.0 diff --git a/settings.gradle b/settings.gradle index 24cd6e7..13445c1 100644 --- a/settings.gradle +++ b/settings.gradle @@ -24,3 +24,4 @@ include ':readmore-foundation' include ':readmore-material' include ':readmore-material3' include ':sample' +include ':baseline:readmore-view' From 0e965a8a526df3682b9227cbfa2e2a1cf2fcea12 Mon Sep 17 00:00:00 2001 From: SOUP Date: Sat, 28 Mar 2026 22:38:28 +0900 Subject: [PATCH 2/5] Add baseline:readmore-foundation module Track transitive dependencies and merged manifest for readmore-foundation library. --- baseline/readmore-foundation/build.gradle | 22 +++++ .../dependencies/releaseRuntimeClasspath.txt | 80 +++++++++++++++++++ .../manifestShield/releaseAndroidManifest.txt | 13 +++ .../src/main/AndroidManifest.xml | 2 + settings.gradle | 3 + 5 files changed, 120 insertions(+) create mode 100644 baseline/readmore-foundation/build.gradle create mode 100644 baseline/readmore-foundation/dependencies/releaseRuntimeClasspath.txt create mode 100644 baseline/readmore-foundation/manifestShield/releaseAndroidManifest.txt create mode 100644 baseline/readmore-foundation/src/main/AndroidManifest.xml diff --git a/baseline/readmore-foundation/build.gradle b/baseline/readmore-foundation/build.gradle new file mode 100644 index 0000000..8279dba --- /dev/null +++ b/baseline/readmore-foundation/build.gradle @@ -0,0 +1,22 @@ +plugins { + id("readmore.android.baseline") +} + +android { + namespace "com.webtoonscorp.android.readmore.foundation.baseline" + defaultConfig { + applicationId "com.webtoonscorp.android.readmore.foundation.baseline" + } +} + +dependencies { + implementation projects.readmoreFoundation +} + +dependencyGuard { + configuration("releaseRuntimeClasspath") +} + +manifestShield { + configuration("release") +} diff --git a/baseline/readmore-foundation/dependencies/releaseRuntimeClasspath.txt b/baseline/readmore-foundation/dependencies/releaseRuntimeClasspath.txt new file mode 100644 index 0000000..462639c --- /dev/null +++ b/baseline/readmore-foundation/dependencies/releaseRuntimeClasspath.txt @@ -0,0 +1,80 @@ +androidx.activity:activity-ktx:1.7.0 +androidx.activity:activity:1.7.0 +androidx.annotation:annotation-experimental:1.4.1 +androidx.annotation:annotation-jvm:1.9.1 +androidx.annotation:annotation:1.9.1 +androidx.arch.core:core-common:2.2.0 +androidx.arch.core:core-runtime:2.2.0 +androidx.autofill:autofill:1.0.0 +androidx.collection:collection-jvm:1.5.0 +androidx.collection:collection-ktx:1.5.0 +androidx.collection:collection:1.5.0 +androidx.compose.animation:animation-android:1.9.0 +androidx.compose.animation:animation-core-android:1.9.0 +androidx.compose.animation:animation-core:1.9.0 +androidx.compose.animation:animation:1.9.0 +androidx.compose.foundation:foundation-android:1.9.0 +androidx.compose.foundation:foundation-layout-android:1.9.0 +androidx.compose.foundation:foundation-layout:1.9.0 +androidx.compose.foundation:foundation:1.9.0 +androidx.compose.runtime:runtime-android:1.9.0 +androidx.compose.runtime:runtime-annotation-android:1.9.0 +androidx.compose.runtime:runtime-annotation:1.9.0 +androidx.compose.runtime:runtime-saveable-android:1.9.0 +androidx.compose.runtime:runtime-saveable:1.9.0 +androidx.compose.runtime:runtime:1.9.0 +androidx.compose.ui:ui-android:1.9.0 +androidx.compose.ui:ui-geometry-android:1.9.0 +androidx.compose.ui:ui-geometry:1.9.0 +androidx.compose.ui:ui-graphics-android:1.9.0 +androidx.compose.ui:ui-graphics:1.9.0 +androidx.compose.ui:ui-text-android:1.9.0 +androidx.compose.ui:ui-text:1.9.0 +androidx.compose.ui:ui-unit-android:1.9.0 +androidx.compose.ui:ui-unit:1.9.0 +androidx.compose.ui:ui-util-android:1.9.0 +androidx.compose.ui:ui-util:1.9.0 +androidx.compose.ui:ui:1.9.0 +androidx.concurrent:concurrent-futures:1.1.0 +androidx.core:core-ktx:1.15.0 +androidx.core:core-viewtree:1.0.0 +androidx.core:core:1.15.0 +androidx.customview:customview-poolingcontainer:1.0.0 +androidx.emoji2:emoji2:1.4.0 +androidx.graphics:graphics-path:1.0.1 +androidx.interpolator:interpolator:1.0.0 +androidx.lifecycle:lifecycle-common-jvm:2.9.0 +androidx.lifecycle:lifecycle-common:2.9.0 +androidx.lifecycle:lifecycle-livedata-core:2.9.0 +androidx.lifecycle:lifecycle-process:2.9.0 +androidx.lifecycle:lifecycle-runtime-android:2.9.0 +androidx.lifecycle:lifecycle-runtime-compose-android:2.9.0 +androidx.lifecycle:lifecycle-runtime-compose:2.9.0 +androidx.lifecycle:lifecycle-runtime-ktx-android:2.9.0 +androidx.lifecycle:lifecycle-runtime-ktx:2.9.0 +androidx.lifecycle:lifecycle-runtime:2.9.0 +androidx.lifecycle:lifecycle-viewmodel-android:2.9.0 +androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.0 +androidx.lifecycle:lifecycle-viewmodel-savedstate-android:2.9.0 +androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.0 +androidx.lifecycle:lifecycle-viewmodel:2.9.0 +androidx.profileinstaller:profileinstaller:1.4.0 +androidx.savedstate:savedstate-android:1.3.0 +androidx.savedstate:savedstate-compose-android:1.3.0 +androidx.savedstate:savedstate-compose:1.3.0 +androidx.savedstate:savedstate-ktx:1.3.0 +androidx.savedstate:savedstate:1.3.0 +androidx.startup:startup-runtime:1.1.1 +androidx.tracing:tracing:1.2.0 +androidx.versionedparcelable:versionedparcelable:1.1.1 +com.google.guava:listenablefuture:1.0 +org.jetbrains.kotlin:kotlin-stdlib:2.0.21 +org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1 +org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.8.1 +org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.1 +org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1 +org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.3 +org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.3 +org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3 +org.jetbrains:annotations:23.0.0 +org.jspecify:jspecify:1.0.0 diff --git a/baseline/readmore-foundation/manifestShield/releaseAndroidManifest.txt b/baseline/readmore-foundation/manifestShield/releaseAndroidManifest.txt new file mode 100644 index 0000000..8132ebe --- /dev/null +++ b/baseline/readmore-foundation/manifestShield/releaseAndroidManifest.txt @@ -0,0 +1,13 @@ +uses-permission: + com.webtoonscorp.android.readmore.foundation.baseline.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION + +receiver: + androidx.profileinstaller.ProfileInstallReceiver (exported) + permission: android.permission.DUMP + +provider: + +androidx.startup: + androidx.emoji2.text.EmojiCompatInitializer + androidx.lifecycle.ProcessLifecycleInitializer + androidx.profileinstaller.ProfileInstallerInitializer diff --git a/baseline/readmore-foundation/src/main/AndroidManifest.xml b/baseline/readmore-foundation/src/main/AndroidManifest.xml new file mode 100644 index 0000000..8072ee0 --- /dev/null +++ b/baseline/readmore-foundation/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + + diff --git a/settings.gradle b/settings.gradle index 13445c1..5da58de 100644 --- a/settings.gradle +++ b/settings.gradle @@ -25,3 +25,6 @@ include ':readmore-material' include ':readmore-material3' include ':sample' include ':baseline:readmore-view' +include ':baseline:readmore-foundation' +include ':baseline:readmore-material' +include ':baseline:readmore-material3' From 7733b780a723cbfb0af0eefea825be41db0eb7aa Mon Sep 17 00:00:00 2001 From: SOUP Date: Sat, 28 Mar 2026 22:38:38 +0900 Subject: [PATCH 3/5] Add baseline:readmore-material module Track transitive dependencies and merged manifest for readmore-material library. --- baseline/readmore-material/build.gradle | 22 +++++ .../dependencies/releaseRuntimeClasspath.txt | 85 +++++++++++++++++++ .../manifestShield/releaseAndroidManifest.txt | 13 +++ .../src/main/AndroidManifest.xml | 2 + 4 files changed, 122 insertions(+) create mode 100644 baseline/readmore-material/build.gradle create mode 100644 baseline/readmore-material/dependencies/releaseRuntimeClasspath.txt create mode 100644 baseline/readmore-material/manifestShield/releaseAndroidManifest.txt create mode 100644 baseline/readmore-material/src/main/AndroidManifest.xml diff --git a/baseline/readmore-material/build.gradle b/baseline/readmore-material/build.gradle new file mode 100644 index 0000000..ccdbc44 --- /dev/null +++ b/baseline/readmore-material/build.gradle @@ -0,0 +1,22 @@ +plugins { + id("readmore.android.baseline") +} + +android { + namespace "com.webtoonscorp.android.readmore.material.baseline" + defaultConfig { + applicationId "com.webtoonscorp.android.readmore.material.baseline" + } +} + +dependencies { + implementation projects.readmoreMaterial +} + +dependencyGuard { + configuration("releaseRuntimeClasspath") +} + +manifestShield { + configuration("release") +} diff --git a/baseline/readmore-material/dependencies/releaseRuntimeClasspath.txt b/baseline/readmore-material/dependencies/releaseRuntimeClasspath.txt new file mode 100644 index 0000000..5e90894 --- /dev/null +++ b/baseline/readmore-material/dependencies/releaseRuntimeClasspath.txt @@ -0,0 +1,85 @@ +androidx.activity:activity-ktx:1.7.0 +androidx.activity:activity:1.7.0 +androidx.annotation:annotation-experimental:1.4.1 +androidx.annotation:annotation-jvm:1.9.1 +androidx.annotation:annotation:1.9.1 +androidx.arch.core:core-common:2.2.0 +androidx.arch.core:core-runtime:2.2.0 +androidx.autofill:autofill:1.0.0 +androidx.collection:collection-jvm:1.5.0 +androidx.collection:collection-ktx:1.5.0 +androidx.collection:collection:1.5.0 +androidx.compose.animation:animation-android:1.9.0 +androidx.compose.animation:animation-core-android:1.9.0 +androidx.compose.animation:animation-core:1.9.0 +androidx.compose.animation:animation:1.9.0 +androidx.compose.foundation:foundation-android:1.9.0 +androidx.compose.foundation:foundation-layout-android:1.9.0 +androidx.compose.foundation:foundation-layout:1.9.0 +androidx.compose.foundation:foundation:1.9.0 +androidx.compose.material:material-android:1.9.0 +androidx.compose.material:material-ripple-android:1.8.2 +androidx.compose.material:material-ripple:1.8.2 +androidx.compose.material:material:1.9.0 +androidx.compose.runtime:runtime-android:1.9.0 +androidx.compose.runtime:runtime-annotation-android:1.9.0 +androidx.compose.runtime:runtime-annotation:1.9.0 +androidx.compose.runtime:runtime-saveable-android:1.9.0 +androidx.compose.runtime:runtime-saveable:1.9.0 +androidx.compose.runtime:runtime:1.9.0 +androidx.compose.ui:ui-android:1.9.0 +androidx.compose.ui:ui-geometry-android:1.9.0 +androidx.compose.ui:ui-geometry:1.9.0 +androidx.compose.ui:ui-graphics-android:1.9.0 +androidx.compose.ui:ui-graphics:1.9.0 +androidx.compose.ui:ui-text-android:1.9.0 +androidx.compose.ui:ui-text:1.9.0 +androidx.compose.ui:ui-unit-android:1.9.0 +androidx.compose.ui:ui-unit:1.9.0 +androidx.compose.ui:ui-util-android:1.9.0 +androidx.compose.ui:ui-util:1.9.0 +androidx.compose.ui:ui:1.9.0 +androidx.concurrent:concurrent-futures:1.1.0 +androidx.core:core-ktx:1.15.0 +androidx.core:core-viewtree:1.0.0 +androidx.core:core:1.15.0 +androidx.customview:customview-poolingcontainer:1.0.0 +androidx.emoji2:emoji2:1.4.0 +androidx.graphics:graphics-path:1.0.1 +androidx.interpolator:interpolator:1.0.0 +androidx.lifecycle:lifecycle-common-jvm:2.9.0 +androidx.lifecycle:lifecycle-common:2.9.0 +androidx.lifecycle:lifecycle-livedata-core:2.9.0 +androidx.lifecycle:lifecycle-process:2.9.0 +androidx.lifecycle:lifecycle-runtime-android:2.9.0 +androidx.lifecycle:lifecycle-runtime-compose-android:2.9.0 +androidx.lifecycle:lifecycle-runtime-compose:2.9.0 +androidx.lifecycle:lifecycle-runtime-ktx-android:2.9.0 +androidx.lifecycle:lifecycle-runtime-ktx:2.9.0 +androidx.lifecycle:lifecycle-runtime:2.9.0 +androidx.lifecycle:lifecycle-viewmodel-android:2.9.0 +androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.0 +androidx.lifecycle:lifecycle-viewmodel-savedstate-android:2.9.0 +androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.0 +androidx.lifecycle:lifecycle-viewmodel:2.9.0 +androidx.profileinstaller:profileinstaller:1.4.0 +androidx.savedstate:savedstate-android:1.3.0 +androidx.savedstate:savedstate-compose-android:1.3.0 +androidx.savedstate:savedstate-compose:1.3.0 +androidx.savedstate:savedstate-ktx:1.3.0 +androidx.savedstate:savedstate:1.3.0 +androidx.startup:startup-runtime:1.1.1 +androidx.tracing:tracing:1.2.0 +androidx.versionedparcelable:versionedparcelable:1.1.1 +com.google.guava:listenablefuture:1.0 +org.jetbrains.kotlin:kotlin-stdlib-common:2.0.21 +org.jetbrains.kotlin:kotlin-stdlib:2.0.21 +org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1 +org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.8.1 +org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.1 +org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1 +org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.3 +org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.3 +org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3 +org.jetbrains:annotations:23.0.0 +org.jspecify:jspecify:1.0.0 diff --git a/baseline/readmore-material/manifestShield/releaseAndroidManifest.txt b/baseline/readmore-material/manifestShield/releaseAndroidManifest.txt new file mode 100644 index 0000000..79bc2b6 --- /dev/null +++ b/baseline/readmore-material/manifestShield/releaseAndroidManifest.txt @@ -0,0 +1,13 @@ +uses-permission: + com.webtoonscorp.android.readmore.material.baseline.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION + +receiver: + androidx.profileinstaller.ProfileInstallReceiver (exported) + permission: android.permission.DUMP + +provider: + +androidx.startup: + androidx.emoji2.text.EmojiCompatInitializer + androidx.lifecycle.ProcessLifecycleInitializer + androidx.profileinstaller.ProfileInstallerInitializer diff --git a/baseline/readmore-material/src/main/AndroidManifest.xml b/baseline/readmore-material/src/main/AndroidManifest.xml new file mode 100644 index 0000000..8072ee0 --- /dev/null +++ b/baseline/readmore-material/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + + From 915edf127faf0cfcd24562118f0644c1d665386b Mon Sep 17 00:00:00 2001 From: SOUP Date: Sat, 28 Mar 2026 22:38:46 +0900 Subject: [PATCH 4/5] Add baseline:readmore-material3 module Track transitive dependencies and merged manifest for readmore-material3 library. --- baseline/readmore-material3/build.gradle | 22 +++++ .../dependencies/releaseRuntimeClasspath.txt | 87 +++++++++++++++++++ .../manifestShield/releaseAndroidManifest.txt | 13 +++ .../src/main/AndroidManifest.xml | 2 + 4 files changed, 124 insertions(+) create mode 100644 baseline/readmore-material3/build.gradle create mode 100644 baseline/readmore-material3/dependencies/releaseRuntimeClasspath.txt create mode 100644 baseline/readmore-material3/manifestShield/releaseAndroidManifest.txt create mode 100644 baseline/readmore-material3/src/main/AndroidManifest.xml diff --git a/baseline/readmore-material3/build.gradle b/baseline/readmore-material3/build.gradle new file mode 100644 index 0000000..c1c1ec7 --- /dev/null +++ b/baseline/readmore-material3/build.gradle @@ -0,0 +1,22 @@ +plugins { + id("readmore.android.baseline") +} + +android { + namespace "com.webtoonscorp.android.readmore.material3.baseline" + defaultConfig { + applicationId "com.webtoonscorp.android.readmore.material3.baseline" + } +} + +dependencies { + implementation projects.readmoreMaterial3 +} + +dependencyGuard { + configuration("releaseRuntimeClasspath") +} + +manifestShield { + configuration("release") +} diff --git a/baseline/readmore-material3/dependencies/releaseRuntimeClasspath.txt b/baseline/readmore-material3/dependencies/releaseRuntimeClasspath.txt new file mode 100644 index 0000000..3e4fabf --- /dev/null +++ b/baseline/readmore-material3/dependencies/releaseRuntimeClasspath.txt @@ -0,0 +1,87 @@ +androidx.activity:activity-compose:1.8.2 +androidx.activity:activity-ktx:1.8.2 +androidx.activity:activity:1.8.2 +androidx.annotation:annotation-experimental:1.4.1 +androidx.annotation:annotation-jvm:1.9.1 +androidx.annotation:annotation:1.9.1 +androidx.arch.core:core-common:2.2.0 +androidx.arch.core:core-runtime:2.2.0 +androidx.autofill:autofill:1.0.0 +androidx.collection:collection-jvm:1.5.0 +androidx.collection:collection-ktx:1.5.0 +androidx.collection:collection:1.5.0 +androidx.compose.animation:animation-android:1.9.0 +androidx.compose.animation:animation-core-android:1.9.0 +androidx.compose.animation:animation-core:1.9.0 +androidx.compose.animation:animation:1.9.0 +androidx.compose.foundation:foundation-android:1.9.0 +androidx.compose.foundation:foundation-layout-android:1.9.0 +androidx.compose.foundation:foundation-layout:1.9.0 +androidx.compose.foundation:foundation:1.9.0 +androidx.compose.material3:material3-android:1.4.0 +androidx.compose.material3:material3:1.4.0 +androidx.compose.material:material-ripple-android:1.8.1 +androidx.compose.material:material-ripple:1.8.1 +androidx.compose.runtime:runtime-android:1.9.0 +androidx.compose.runtime:runtime-annotation-android:1.9.0 +androidx.compose.runtime:runtime-annotation:1.9.0 +androidx.compose.runtime:runtime-saveable-android:1.9.0 +androidx.compose.runtime:runtime-saveable:1.9.0 +androidx.compose.runtime:runtime:1.9.0 +androidx.compose.ui:ui-android:1.9.0 +androidx.compose.ui:ui-geometry-android:1.9.0 +androidx.compose.ui:ui-geometry:1.9.0 +androidx.compose.ui:ui-graphics-android:1.9.0 +androidx.compose.ui:ui-graphics:1.9.0 +androidx.compose.ui:ui-text-android:1.9.0 +androidx.compose.ui:ui-text:1.9.0 +androidx.compose.ui:ui-unit-android:1.9.0 +androidx.compose.ui:ui-unit:1.9.0 +androidx.compose.ui:ui-util-android:1.9.0 +androidx.compose.ui:ui-util:1.9.0 +androidx.compose.ui:ui:1.9.0 +androidx.concurrent:concurrent-futures:1.1.0 +androidx.core:core-ktx:1.15.0 +androidx.core:core-viewtree:1.0.0 +androidx.core:core:1.15.0 +androidx.customview:customview-poolingcontainer:1.0.0 +androidx.emoji2:emoji2:1.4.0 +androidx.graphics:graphics-path:1.0.1 +androidx.interpolator:interpolator:1.0.0 +androidx.lifecycle:lifecycle-common-java8:2.9.0 +androidx.lifecycle:lifecycle-common-jvm:2.9.0 +androidx.lifecycle:lifecycle-common:2.9.0 +androidx.lifecycle:lifecycle-livedata-core:2.9.0 +androidx.lifecycle:lifecycle-process:2.9.0 +androidx.lifecycle:lifecycle-runtime-android:2.9.0 +androidx.lifecycle:lifecycle-runtime-compose-android:2.9.0 +androidx.lifecycle:lifecycle-runtime-compose:2.9.0 +androidx.lifecycle:lifecycle-runtime-ktx-android:2.9.0 +androidx.lifecycle:lifecycle-runtime-ktx:2.9.0 +androidx.lifecycle:lifecycle-runtime:2.9.0 +androidx.lifecycle:lifecycle-viewmodel-android:2.9.0 +androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.0 +androidx.lifecycle:lifecycle-viewmodel-savedstate-android:2.9.0 +androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.0 +androidx.lifecycle:lifecycle-viewmodel:2.9.0 +androidx.profileinstaller:profileinstaller:1.4.0 +androidx.savedstate:savedstate-android:1.3.0 +androidx.savedstate:savedstate-compose-android:1.3.0 +androidx.savedstate:savedstate-compose:1.3.0 +androidx.savedstate:savedstate-ktx:1.3.0 +androidx.savedstate:savedstate:1.3.0 +androidx.startup:startup-runtime:1.1.1 +androidx.tracing:tracing:1.2.0 +androidx.versionedparcelable:versionedparcelable:1.1.1 +com.google.guava:listenablefuture:1.0 +org.jetbrains.kotlin:kotlin-stdlib-common:2.0.21 +org.jetbrains.kotlin:kotlin-stdlib:2.0.21 +org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1 +org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.8.1 +org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.1 +org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1 +org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.3 +org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.3 +org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3 +org.jetbrains:annotations:23.0.0 +org.jspecify:jspecify:1.0.0 diff --git a/baseline/readmore-material3/manifestShield/releaseAndroidManifest.txt b/baseline/readmore-material3/manifestShield/releaseAndroidManifest.txt new file mode 100644 index 0000000..e51279b --- /dev/null +++ b/baseline/readmore-material3/manifestShield/releaseAndroidManifest.txt @@ -0,0 +1,13 @@ +uses-permission: + com.webtoonscorp.android.readmore.material3.baseline.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION + +receiver: + androidx.profileinstaller.ProfileInstallReceiver (exported) + permission: android.permission.DUMP + +provider: + +androidx.startup: + androidx.emoji2.text.EmojiCompatInitializer + androidx.lifecycle.ProcessLifecycleInitializer + androidx.profileinstaller.ProfileInstallerInitializer diff --git a/baseline/readmore-material3/src/main/AndroidManifest.xml b/baseline/readmore-material3/src/main/AndroidManifest.xml new file mode 100644 index 0000000..8072ee0 --- /dev/null +++ b/baseline/readmore-material3/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + + From 02c4c53d6a378f9e5b4816acdb0fd66ae1928512 Mon Sep 17 00:00:00 2001 From: SOUP Date: Sun, 29 Mar 2026 01:31:10 +0900 Subject: [PATCH 5/5] Update manifest-shield to 0.1.9 Picks up default changes: startup=false, permissionProtected=false, and empty provider section fix. Baselines now only track uses-permission. --- .../manifestShield/releaseAndroidManifest.txt | 11 ----------- .../manifestShield/releaseAndroidManifest.txt | 11 ----------- .../manifestShield/releaseAndroidManifest.txt | 11 ----------- .../manifestShield/releaseAndroidManifest.txt | 11 ----------- gradle/libs.versions.toml | 2 +- 5 files changed, 1 insertion(+), 45 deletions(-) diff --git a/baseline/readmore-foundation/manifestShield/releaseAndroidManifest.txt b/baseline/readmore-foundation/manifestShield/releaseAndroidManifest.txt index 8132ebe..edf4b9f 100644 --- a/baseline/readmore-foundation/manifestShield/releaseAndroidManifest.txt +++ b/baseline/readmore-foundation/manifestShield/releaseAndroidManifest.txt @@ -1,13 +1,2 @@ uses-permission: com.webtoonscorp.android.readmore.foundation.baseline.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION - -receiver: - androidx.profileinstaller.ProfileInstallReceiver (exported) - permission: android.permission.DUMP - -provider: - -androidx.startup: - androidx.emoji2.text.EmojiCompatInitializer - androidx.lifecycle.ProcessLifecycleInitializer - androidx.profileinstaller.ProfileInstallerInitializer diff --git a/baseline/readmore-material/manifestShield/releaseAndroidManifest.txt b/baseline/readmore-material/manifestShield/releaseAndroidManifest.txt index 79bc2b6..44ca5a8 100644 --- a/baseline/readmore-material/manifestShield/releaseAndroidManifest.txt +++ b/baseline/readmore-material/manifestShield/releaseAndroidManifest.txt @@ -1,13 +1,2 @@ uses-permission: com.webtoonscorp.android.readmore.material.baseline.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION - -receiver: - androidx.profileinstaller.ProfileInstallReceiver (exported) - permission: android.permission.DUMP - -provider: - -androidx.startup: - androidx.emoji2.text.EmojiCompatInitializer - androidx.lifecycle.ProcessLifecycleInitializer - androidx.profileinstaller.ProfileInstallerInitializer diff --git a/baseline/readmore-material3/manifestShield/releaseAndroidManifest.txt b/baseline/readmore-material3/manifestShield/releaseAndroidManifest.txt index e51279b..061da72 100644 --- a/baseline/readmore-material3/manifestShield/releaseAndroidManifest.txt +++ b/baseline/readmore-material3/manifestShield/releaseAndroidManifest.txt @@ -1,13 +1,2 @@ uses-permission: com.webtoonscorp.android.readmore.material3.baseline.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION - -receiver: - androidx.profileinstaller.ProfileInstallReceiver (exported) - permission: android.permission.DUMP - -provider: - -androidx.startup: - androidx.emoji2.text.EmojiCompatInitializer - androidx.lifecycle.ProcessLifecycleInitializer - androidx.profileinstaller.ProfileInstallerInitializer diff --git a/baseline/readmore-view/manifestShield/releaseAndroidManifest.txt b/baseline/readmore-view/manifestShield/releaseAndroidManifest.txt index 0d88ae9..82c9112 100644 --- a/baseline/readmore-view/manifestShield/releaseAndroidManifest.txt +++ b/baseline/readmore-view/manifestShield/releaseAndroidManifest.txt @@ -1,13 +1,2 @@ uses-permission: com.webtoonscorp.android.readmore.baseline.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION - -receiver: - androidx.profileinstaller.ProfileInstallReceiver (exported) - permission: android.permission.DUMP - -provider: - -androidx.startup: - androidx.emoji2.text.EmojiCompatInitializer - androidx.lifecycle.ProcessLifecycleInitializer - androidx.profileinstaller.ProfileInstallerInitializer diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index c06cf3f..5fd7494 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -17,7 +17,7 @@ appcompat = "1.7.0" core = "1.15.0" dependency-guard = "0.5.0" -manifest-shield = "0.1.8" +manifest-shield = "0.1.9" androidxtest = "1.4.0" androidxtest-junit = "1.1.3"