Skip to content

Commit

Permalink
Merge pull request #16 from 2BAB/dev_v2
Browse files Browse the repository at this point in the history
Upgrade Polyfill to 0.5.0 with new `variant.artifactsPolyfill.*` API
  • Loading branch information
2BAB committed Mar 19, 2022
2 parents e8c9baa + 8fb0f23 commit 83430bf
Show file tree
Hide file tree
Showing 12 changed files with 67 additions and 71 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Expand Up @@ -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
Expand Down
7 changes: 4 additions & 3 deletions README.md
Expand Up @@ -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
}
}
```
Expand Down Expand Up @@ -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
Expand Down
8 changes: 4 additions & 4 deletions README_zh.md
Expand Up @@ -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
}
}
```
Expand Down Expand Up @@ -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
Expand Down
8 changes: 4 additions & 4 deletions 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]
Expand Down
2 changes: 1 addition & 1 deletion 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
2 changes: 1 addition & 1 deletion publish_to_local.sh
@@ -1 +1 @@
./gradlew clean :scratch-paper:plugin:assemble :scratch-paper:plugin:publishToMavenLocal
./gradlew clean :scratch-paper:plugin:assemble :scratch-paper:plugin:publishSPPluginPublicationToMavenLocal
2 changes: 1 addition & 1 deletion 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"
}

}
2 changes: 0 additions & 2 deletions scratch-paper/plugin/build.gradle.kts
@@ -1,5 +1,4 @@
plugins {
kotlin("jvm")
id("java-gradle-plugin")
`kotlin-dsl`
`github-release`
Expand Down Expand Up @@ -36,7 +35,6 @@ dependencies {
compileOnly(deps.android.tools.sdklib)

implementation(deps.polyfill.main)
implementation(deps.polyfill.res)
implementation(deps.jfreesvg)

testImplementation(gradleTestKit())
Expand Down
Expand Up @@ -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<Project> {
Expand All @@ -21,59 +19,60 @@ class ScratchPaperPlugin : Plugin<Project> {

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<ScratchPaperExtension>(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<AddIconOverlayTask>(
"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<AddIconOverlayTask>(
"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 }
}
}
Expand Down
@@ -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<File>
Expand Down
@@ -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
Expand Down
4 changes: 2 additions & 2 deletions test-app/build.gradle.kts
Expand Up @@ -11,7 +11,7 @@ android {
minSdk = 23
targetSdk = 31
versionCode = 1
versionName = "3.0.0"
versionName = "3.1.0"
}

buildTypes {
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 83430bf

Please sign in to comment.