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-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..edf4b9f --- /dev/null +++ b/baseline/readmore-foundation/manifestShield/releaseAndroidManifest.txt @@ -0,0 +1,2 @@ +uses-permission: + com.webtoonscorp.android.readmore.foundation.baseline.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION 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/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..44ca5a8 --- /dev/null +++ b/baseline/readmore-material/manifestShield/releaseAndroidManifest.txt @@ -0,0 +1,2 @@ +uses-permission: + com.webtoonscorp.android.readmore.material.baseline.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION 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 @@ + + 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/sample/dependencies/releaseRuntimeClasspath.txt b/baseline/readmore-material3/dependencies/releaseRuntimeClasspath.txt similarity index 70% rename from sample/dependencies/releaseRuntimeClasspath.txt rename to baseline/readmore-material3/dependencies/releaseRuntimeClasspath.txt index d80d07c..3e4fabf 100644 --- a/sample/dependencies/releaseRuntimeClasspath.txt +++ b/baseline/readmore-material3/dependencies/releaseRuntimeClasspath.txt @@ -4,12 +4,9 @@ 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 @@ -23,10 +20,8 @@ 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.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 @@ -40,39 +35,23 @@ 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 @@ -85,12 +64,7 @@ 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 @@ -98,17 +72,9 @@ 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 diff --git a/baseline/readmore-material3/manifestShield/releaseAndroidManifest.txt b/baseline/readmore-material3/manifestShield/releaseAndroidManifest.txt new file mode 100644 index 0000000..061da72 --- /dev/null +++ b/baseline/readmore-material3/manifestShield/releaseAndroidManifest.txt @@ -0,0 +1,2 @@ +uses-permission: + com.webtoonscorp.android.readmore.material3.baseline.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION 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 @@ + + 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..82c9112 --- /dev/null +++ b/baseline/readmore-view/manifestShield/releaseAndroidManifest.txt @@ -0,0 +1,2 @@ +uses-permission: + com.webtoonscorp.android.readmore.baseline.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION 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..5fd7494 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.9" 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/settings.gradle b/settings.gradle index 24cd6e7..5da58de 100644 --- a/settings.gradle +++ b/settings.gradle @@ -24,3 +24,7 @@ include ':readmore-foundation' include ':readmore-material' include ':readmore-material3' include ':sample' +include ':baseline:readmore-view' +include ':baseline:readmore-foundation' +include ':baseline:readmore-material' +include ':baseline:readmore-material3'