Skip to content

Commit 3cee293

Browse files
committed
Add R8 shrinker support, update gradle wrapper and android plugin
1 parent ab55102 commit 3cee293

File tree

4 files changed

+27
-10
lines changed

4 files changed

+27
-10
lines changed

README.md

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Gradle Plugin that generates randomized dictionaries for proguard
22

3-
**Tested on latest (3.3) Android Gradle Plugin.**
3+
**Tested on latest (3.3.2) Android Gradle Plugin.**
44

55
# How to add
66
In your root project's `build.gradle`
@@ -10,7 +10,7 @@ buildscript {
1010
gradlePluginPortal()
1111
1212
dependencies {
13-
classpath "gradle.plugin.ru.cleverpumpkin.proguard-dictionaries-generator:plugin:1.0.1"
13+
classpath "gradle.plugin.ru.cleverpumpkin.proguard-dictionaries-generator:plugin:1.0.2"
1414
}
1515
}
1616
```
@@ -71,6 +71,11 @@ In your `proguard-rules.pro` file
7171
Plugin runs automatically when android plugin executes proguard task,
7272
so you don't need anything special to get it work.
7373

74+
Also plugin supports R8, new code shrinker. If you'd apply it in
75+
your gradle properties file
76+
(`android.enableR8=true` or `android.enableR8.fullMode=true`),
77+
the plugin will take it in account automatically.
78+
7479
White space, punctuation characters, duplicate words,
7580
and comments after a # sign are ignored in dictionaries by Proguard.
7681
So generated file could contains any symbols except above.

buildSrc/src/main/kotlin/Dependencies.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ import Versions.projectVer
55

66
object Versions {
77
const val kotlinVer = "1.3.11"
8-
const val projectVer = "1.0.1"
8+
const val projectVer = "1.0.2"
99
const val androidXVer = "1.0.0"
10-
const val gradlePluginVer = "3.3.0"
10+
const val gradlePluginVer = "3.3.2"
1111
}
1212

1313
object BuildScriptPlugins {

gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
33
distributionPath=wrapper/dists
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists
6-
distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip
6+
distributionUrl=https\://services.gradle.org/distributions/gradle-5.3-all.zip

plugin/src/main/java/ru/cleverpumpkin/plugin/ProguardDictionaryGeneratorPlugin.kt

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,13 @@ import org.gradle.api.Task
1111
class ProguardDictionaryGeneratorPlugin : Plugin<Project> {
1212

1313
private companion object {
14-
// Task on which we depends on.
14+
// Tasks on which we depends on.
15+
const val TARGET_R8_TASK = "transformClassesAndResourcesWithR8For"
1516
const val TARGET_PROGUARD_TASK = "transformClassesAndResourcesWithProguardFor"
1617

1718
const val LOG_TAG = "ProguardDictionaryGenerator"
19+
20+
val PROP_R8 = listOf("android.enableR8", "android.enableR8.fullMode")
1821
}
1922

2023
override fun apply(project: Project) {
@@ -33,10 +36,11 @@ class ProguardDictionaryGeneratorPlugin : Plugin<Project> {
3336
private fun Project.setupPlugin() {
3437
val pluginExtension = findPluginExtension()
3538

36-
val proguardTask = findProguardTransformTask()
39+
val targetTaskName = getTargetTaskName()
40+
val proguardTask = findTransformTask(targetTaskName)
3741
if (proguardTask == null) {
3842
logger.lifecycle(
39-
"$LOG_TAG: proguard task ($TARGET_PROGUARD_TASK) not found"
43+
"$LOG_TAG: proguard task ($targetTaskName) not found"
4044
)
4145
return
4246
}
@@ -59,8 +63,16 @@ class ProguardDictionaryGeneratorPlugin : Plugin<Project> {
5963
proguardTask.dependsOn(createGeneratorTask)
6064
}
6165

62-
private fun Project.findProguardTransformTask(): Task? {
63-
return tasks.find { task -> task.name.startsWith(TARGET_PROGUARD_TASK) }
66+
private fun Project.getTargetTaskName(): String {
67+
return if (isR8Enabled()) TARGET_R8_TASK else TARGET_PROGUARD_TASK
68+
}
69+
70+
private fun Project.isR8Enabled(): Boolean {
71+
return properties.any { (key) -> key in PROP_R8 }
72+
}
73+
74+
private fun Project.findTransformTask(taskName: String): Task? {
75+
return tasks.find { task -> task.name.startsWith(taskName) }
6476
}
6577

6678
private fun Project.findPluginExtension(): ProguardDictionaryPluginExtension {

0 commit comments

Comments
 (0)