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'