diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 415f077..9eb36e3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -74,7 +74,7 @@ jobs: AGP_VERSION: ${{ matrix.agp-version }} strategy: matrix: - agp-version: [ 7.0.3, 7.1.0-beta04 ] + agp-version: [ 7.1.2, 7.2.0-beta04 ] steps: - uses: actions/checkout@v2 diff --git a/README.md b/README.md index 6d346aa..801fd86 100644 --- a/README.md +++ b/README.md @@ -40,8 +40,8 @@ buildscript { mavenCentral() // Since 2.5.4, the publish repository has been shifted from Jcenter to Maven Central. } dependencies { - classpath 'com.android.tools.build:gradle:7.0.4' - classpath 'me.2bab:scratchpaper:3.0.0' // Since 2.5.4, the artifactId of ScratchPaper changed from scratch-paper to scratchpaper + classpath 'com.android.tools.build:gradle:7.1.2' + classpath 'me.2bab:scratchpaper:3.1.0' // Since 2.5.4, the artifactId of ScratchPaper changed from scratch-paper to scratchpaper } } ``` @@ -101,7 +101,8 @@ ScratchPaper is only supported & tested on LATEST ONE Minor versions of Android AGP Version|Latest Support Version -----------|----------------- -7.0.x | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/me.2bab/scratchpaper/badge.svg)](https://search.maven.org/artifact/me.2bab/scratchpaper) +7.1.x | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/me.2bab/scratchpaper/badge.svg)](https://search.maven.org/artifact/me.2bab/scratchpaper) +7.0.x | 3.0.0 4.2.x | 2.6.0 4.1.x | 2.5.4 4.0.x | 2.5.3 diff --git a/README_zh.md b/README_zh.md index ec3e18a..b83b38d 100644 --- a/README_zh.md +++ b/README_zh.md @@ -38,8 +38,8 @@ buildscript { mavenCentral() // 从 2.5.4 开始,ScratchPaper 从 Jcenter 迁移到了 Maven Central } dependencies { - classpath 'com.android.tools.build:gradle:7.0.4' - classpath 'me.2bab:scratchpaper:3.0.0' // 从 2.5.4 开始,ScratchPaper 的 artifactId 从 scratch-paper 改为 scratchpaper + classpath 'com.android.tools.build:gradle:7.1.2' + classpath 'me.2bab:scratchpaper:3.1.0' // 从 2.5.4 开始,ScratchPaper 的 artifactId 从 scratch-paper 改为 scratchpaper } } ``` @@ -99,8 +99,8 @@ scratchPaper { AGP Version|Latest Support Version -----------|----------------- -7.0.x | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/me.2bab/scratchpaper/badge.svg)](https://search.maven.org/artifact/me.2bab/scratchpaper) -4.2.x | 2.6.0 +7.1.x | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/me.2bab/scratchpaper/badge.svg)](https://search.maven.org/artifact/me.2bab/scratchpaper) +7.0.x | 3.0.0 4.1.x | 2.5.4 4.0.x | 2.5.3 3.6.x | 2.5.1 diff --git a/deps.versions.toml b/deps.versions.toml index 12433d9..92440d8 100644 --- a/deps.versions.toml +++ b/deps.versions.toml @@ -1,10 +1,10 @@ [versions] -kotlinVer = "1.5.31" -# 7.1.0-beta04 -agpVer = "7.0.4" +kotlinVer = "1.6.10" +# 7.2.0-beta04 +agpVer = "7.1.2" # 30.1.0-beta04 androidToolVer = "30.0.4" -polyfillVer = "0.4.1" +polyfillVer = "0.5.0" mockitoVer = "3.9.0" [libraries] diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 7eb7300..bea8f64 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Sun Sep 13 20:38:33 SGT 2020 distributionBase=GRADLE_USER_HOME -distributionUrl=https://services.gradle.org/distributions/gradle-7.3.1-bin.zip +distributionUrl=https://services.gradle.org/distributions/gradle-7.4.1-bin.zip distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME diff --git a/publish_to_local.sh b/publish_to_local.sh index 41517e0..fba387f 100755 --- a/publish_to_local.sh +++ b/publish_to_local.sh @@ -1 +1 @@ -./gradlew clean :scratch-paper:plugin:assemble :scratch-paper:plugin:publishToMavenLocal \ No newline at end of file +./gradlew clean :scratch-paper:plugin:assemble :scratch-paper:plugin:publishSPPluginPublicationToMavenLocal \ No newline at end of file diff --git a/scratch-paper/buildSrc/src/main/kotlin/BuildConfig.kt b/scratch-paper/buildSrc/src/main/kotlin/BuildConfig.kt index 4ce16e7..4065914 100644 --- a/scratch-paper/buildSrc/src/main/kotlin/BuildConfig.kt +++ b/scratch-paper/buildSrc/src/main/kotlin/BuildConfig.kt @@ -1,7 +1,7 @@ object BuildConfig { object Versions { - const val scratchPaperVersion = "3.0.0" + const val scratchPaperVersion = "3.1.0" } } \ No newline at end of file diff --git a/scratch-paper/plugin/build.gradle.kts b/scratch-paper/plugin/build.gradle.kts index d314fdd..9279e19 100644 --- a/scratch-paper/plugin/build.gradle.kts +++ b/scratch-paper/plugin/build.gradle.kts @@ -1,5 +1,4 @@ plugins { - kotlin("jvm") id("java-gradle-plugin") `kotlin-dsl` `github-release` @@ -36,7 +35,6 @@ dependencies { compileOnly(deps.android.tools.sdklib) implementation(deps.polyfill.main) - implementation(deps.polyfill.res) implementation(deps.jfreesvg) testImplementation(gradleTestKit()) diff --git a/scratch-paper/plugin/src/main/kotlin/me/xx2bab/scratchpaper/ScratchPaperPlugin.kt b/scratch-paper/plugin/src/main/kotlin/me/xx2bab/scratchpaper/ScratchPaperPlugin.kt index 829180b..2b060de 100644 --- a/scratch-paper/plugin/src/main/kotlin/me/xx2bab/scratchpaper/ScratchPaperPlugin.kt +++ b/scratch-paper/plugin/src/main/kotlin/me/xx2bab/scratchpaper/ScratchPaperPlugin.kt @@ -2,16 +2,14 @@ package me.xx2bab.scratchpaper import com.android.build.api.variant.ApplicationAndroidComponentsExtension import com.android.build.api.variant.VariantOutput -import me.xx2bab.polyfill.ApplicationVariantPolyfill -import me.xx2bab.polyfill.agp.provider.BuildToolInfoProvider -import me.xx2bab.polyfill.agp.tool.toTaskContainer -import me.xx2bab.polyfill.res.ResourcesBeforeMergeAction -import me.xx2bab.polyfill.res.ResourcesMergeInputProvider +import me.xx2bab.polyfill.* import me.xx2bab.scratchpaper.icon.AddIconOverlayTask import me.xx2bab.scratchpaper.utils.CacheLocation import me.xx2bab.scratchpaper.utils.Logger import org.gradle.api.Plugin import org.gradle.api.Project +import org.gradle.kotlin.dsl.apply +import org.gradle.kotlin.dsl.create import org.gradle.kotlin.dsl.register class ScratchPaperPlugin : Plugin { @@ -21,59 +19,60 @@ class ScratchPaperPlugin : Plugin { override fun apply(project: Project) { Logger.init(project) - val config = project.extensions.create(extensionName, ScratchPaperExtension::class.java) + project.apply(plugin = "me.2bab.polyfill") + val config = project.extensions.create(extensionName) val androidExt = project.extensions.getByType(ApplicationAndroidComponentsExtension::class.java) androidExt.onVariants { variant -> - val variantName = variant.name.capitalize() + val variantName = variant.getCapitalizedName() // TODO: find a better way to support both SINGLE and MULTI APKs version names val mainOutput: VariantOutput = variant.outputs[0] - val polyfill = ApplicationVariantPolyfill(project, variant) // For icon overlay - project.afterEvaluate { - // Check feature flag - if (!ScratchPaperExtension.isFeatureEnabled( - variant, - config.kotlinEnableByVariant, - config.groovyEnableByVariant - ) - ) { - return@afterEvaluate - } + // Check feature flag + if (!ScratchPaperExtension.isFeatureEnabled( + variant, + config.kotlinEnableByVariant, + config.groovyEnableByVariant + ) + ) { + return@onVariants + } - // Add icon overlay - val addIconOverlayTaskProvider = project.tasks.register( - "add${variantName}IconsOverlay" - ) { - group = groupName - versionNameProvider.set(mainOutput.versionName) - variantNameProvider.set(variantName) - iconNamesProvider.set(config.iconNames) - enableXmlIconsRemovalProvider.set(config.enableXmlIconsRemoval) - mergedResourceDirProvider.set(variant.toTaskContainer().mergeResourcesTask.flatMap { it.outputDir }) - iconCacheDirProvider.set( - CacheLocation.getCacheDir( - project, - "icons-${variant.name}" - ) - ) - allInputResourcesProvider.set( - polyfill.newProvider(ResourcesMergeInputProvider::class.java).obtain() + // Add icon overlay + val addIconOverlayTaskProvider = project.tasks.register( + "add${variantName}IconsOverlay" + ) { + group = groupName + versionNameProvider.set(mainOutput.versionName) + variantNameProvider.set(variantName) + iconNamesProvider.set(config.iconNames) + enableXmlIconsRemovalProvider.set(config.enableXmlIconsRemoval) + iconCacheDirProvider.set( + CacheLocation.getCacheDir( + project, + "icons-${variant.name}" ) - buildToolInfoProvider.set( - polyfill.newProvider(BuildToolInfoProvider::class.java).obtain() - ) - styleConfigProvider.set(config.style) - contentConfigProvider.set(config.content) - } - polyfill.addAGPTaskAction(ResourcesBeforeMergeAction(addIconOverlayTaskProvider)) + ) + allInputResourcesProvider.set( + variant.artifactsPolyfill.getAll(PolyfilledMultipleArtifact.ALL_RESOURCES) + ) + buildToolInfoProvider.set(variant.getBuildToolInfo()) + styleConfigProvider.set(config.style) + contentConfigProvider.set(config.content) + } + variant.artifactsPolyfill.use( + taskProvider = addIconOverlayTaskProvider, + wiredWith = AddIconOverlayTask::mergedResourceDirProvider, + toInPlaceUpdate = PolyfilledSingleArtifact.MERGED_RESOURCES + ) - // To decide whether the merge task should always run for - // collecting the latest icons that con contain timestamp update. - if (config.forceUpdateIcons) { - val mergeTask = variant.toTaskContainer().mergeResourcesTask.get() + // To decide whether the merge task should always run for + // collecting the latest icons that con contain timestamp update. + if (config.forceUpdateIcons) { + project.afterEvaluate { + val mergeTask = variant.getTaskContainer().mergeResourcesTask.get() mergeTask.outputs.upToDateWhen { false } } } diff --git a/scratch-paper/plugin/src/main/kotlin/me/xx2bab/scratchpaper/icon/Aapt2Operations.kt b/scratch-paper/plugin/src/main/kotlin/me/xx2bab/scratchpaper/icon/Aapt2Operations.kt index 3a8c990..1fd30a7 100644 --- a/scratch-paper/plugin/src/main/kotlin/me/xx2bab/scratchpaper/icon/Aapt2Operations.kt +++ b/scratch-paper/plugin/src/main/kotlin/me/xx2bab/scratchpaper/icon/Aapt2Operations.kt @@ -1,8 +1,7 @@ -package me.xx2bab.scratchpaper.iconprocessor +package me.xx2bab.scratchpaper.icon -import me.xx2bab.polyfill.matrix.tool.CommandLineKit +import me.xx2bab.polyfill.tools.CommandLineKit import java.io.File -import java.util.* fun compileResDir( aapt2ExecutorPath: String, targetDir: File, resFiles: List diff --git a/scratch-paper/plugin/src/main/kotlin/me/xx2bab/scratchpaper/icon/AddIconOverlayTask.kt b/scratch-paper/plugin/src/main/kotlin/me/xx2bab/scratchpaper/icon/AddIconOverlayTask.kt index 56c3c29..c317039 100644 --- a/scratch-paper/plugin/src/main/kotlin/me/xx2bab/scratchpaper/icon/AddIconOverlayTask.kt +++ b/scratch-paper/plugin/src/main/kotlin/me/xx2bab/scratchpaper/icon/AddIconOverlayTask.kt @@ -1,11 +1,10 @@ package me.xx2bab.scratchpaper.icon import com.android.sdklib.BuildToolInfo -import me.xx2bab.polyfill.matrix.tool.CommandLineKit +import me.xx2bab.polyfill.tools.CommandLineKit import me.xx2bab.scratchpaper.IconOverlayContent import me.xx2bab.scratchpaper.IconOverlayStyle import me.xx2bab.scratchpaper.ScratchPaperExtension -import me.xx2bab.scratchpaper.iconprocessor.compileResDir import org.gradle.api.DefaultTask import org.gradle.api.file.DirectoryProperty import org.gradle.api.file.FileSystemLocation diff --git a/test-app/build.gradle.kts b/test-app/build.gradle.kts index 3635f2f..f66bc36 100644 --- a/test-app/build.gradle.kts +++ b/test-app/build.gradle.kts @@ -11,7 +11,7 @@ android { minSdk = 23 targetSdk = 31 versionCode = 1 - versionName = "3.0.0" + versionName = "3.1.0" } buildTypes { @@ -63,7 +63,7 @@ android { dependencies { implementation(deps.kotlin.std) - implementation("androidx.appcompat:appcompat:1.4.0") + implementation("androidx.appcompat:appcompat:1.4.1") } // Run `./gradlew clean assembleFullDebug` for testing