Take a list of classes for the main dex (that was computed before obfuscation), a proguard-generated mapping file and create a new list of classes with the new obfuscated names.
Fields inherited from class | Fields |
---|---|
class org.gradle.api.DefaultTask |
TASK_NAME, TASK_DESCRIPTION, TASK_GROUP, TASK_TYPE, TASK_DEPENDS_ON, TASK_OVERWRITE, TASK_ACTION |
class org.gradle.api.internal.AbstractTask |
TASK_NAME, TASK_DESCRIPTION, TASK_GROUP, TASK_TYPE, TASK_DEPENDS_ON, TASK_OVERWRITE, TASK_ACTION |
Type | Name and description |
---|---|
static Map<String, String> |
createDict(List<String> lines) |
File |
getMappingFileInput() Gradle doesn't really handle optional inputs as being a file that doesn't exist. |
void |
retrace() |
Methods inherited from class | Name |
---|---|
class org.gradle.api.DefaultTask |
org.gradle.api.DefaultTask#setProperty(java.lang.String, java.lang.Object), org.gradle.api.DefaultTask#toString(), org.gradle.api.DefaultTask#compareTo(java.lang.Object), org.gradle.api.DefaultTask#compareTo(org.gradle.api.Task), org.gradle.api.DefaultTask#getName(), org.gradle.api.DefaultTask#getActions(), org.gradle.api.DefaultTask#setName(java.lang.String), org.gradle.api.DefaultTask#getState(), org.gradle.api.DefaultTask#getState(), org.gradle.api.DefaultTask#getPath(), org.gradle.api.DefaultTask#getLogger(), org.gradle.api.DefaultTask#leftShift(groovy.lang.Closure), org.gradle.api.DefaultTask#execute(), org.gradle.api.DefaultTask#isEnabled(), org.gradle.api.DefaultTask#configure(groovy.lang.Closure), org.gradle.api.DefaultTask#configure(groovy.lang.Closure), org.gradle.api.DefaultTask#property(java.lang.String), org.gradle.api.DefaultTask#getDescription(), org.gradle.api.DefaultTask#getGroup(), org.gradle.api.DefaultTask#setDescription(java.lang.String), org.gradle.api.DefaultTask#getProject(), org.gradle.api.DefaultTask#getStandardOutputCapture(), org.gradle.api.DefaultTask#getExtensions(), org.gradle.api.DefaultTask#setGroup(java.lang.String), org.gradle.api.DefaultTask#getAnt(), org.gradle.api.DefaultTask#getConvention(), org.gradle.api.DefaultTask#hasProperty(java.lang.String), org.gradle.api.DefaultTask#getLogging(), org.gradle.api.DefaultTask#getLogging(), org.gradle.api.DefaultTask#getAsDynamicObject(), org.gradle.api.DefaultTask#setActions(java.util.List), org.gradle.api.DefaultTask#getTaskDependencies(), org.gradle.api.DefaultTask#getTaskDependencies(), org.gradle.api.DefaultTask#getDependsOn(), org.gradle.api.DefaultTask#setDependsOn(java.lang.Iterable), org.gradle.api.DefaultTask#dependsOn([Ljava.lang.Object;), org.gradle.api.DefaultTask#onlyIf(groovy.lang.Closure), org.gradle.api.DefaultTask#onlyIf(org.gradle.api.specs.Spec), org.gradle.api.DefaultTask#setOnlyIf(org.gradle.api.specs.Spec), org.gradle.api.DefaultTask#setOnlyIf(groovy.lang.Closure), org.gradle.api.DefaultTask#setDidWork(boolean), org.gradle.api.DefaultTask#getDidWork(), org.gradle.api.DefaultTask#doFirst(org.gradle.api.Action), org.gradle.api.DefaultTask#doFirst(groovy.lang.Closure), org.gradle.api.DefaultTask#doLast(groovy.lang.Closure), org.gradle.api.DefaultTask#doLast(org.gradle.api.Action), org.gradle.api.DefaultTask#deleteAllActions(), org.gradle.api.DefaultTask#getEnabled(), org.gradle.api.DefaultTask#setEnabled(boolean), org.gradle.api.DefaultTask#dependsOnTaskDidWork(), org.gradle.api.DefaultTask#getInputs(), org.gradle.api.DefaultTask#getOutputs(), org.gradle.api.DefaultTask#getOutputs(), org.gradle.api.DefaultTask#getTemporaryDir(), org.gradle.api.DefaultTask#mustRunAfter([Ljava.lang.Object;), org.gradle.api.DefaultTask#setMustRunAfter(java.lang.Iterable), org.gradle.api.DefaultTask#getMustRunAfter(), org.gradle.api.DefaultTask#finalizedBy([Ljava.lang.Object;), org.gradle.api.DefaultTask#setFinalizedBy(java.lang.Iterable), org.gradle.api.DefaultTask#getFinalizedBy(), org.gradle.api.DefaultTask#shouldRunAfter([Ljava.lang.Object;), org.gradle.api.DefaultTask#setShouldRunAfter(java.lang.Iterable), org.gradle.api.DefaultTask#getShouldRunAfter(), org.gradle.api.DefaultTask#getTaskActions(), org.gradle.api.DefaultTask#getOnlyIf(), org.gradle.api.DefaultTask#executeWithoutThrowingTaskFailure(), org.gradle.api.DefaultTask#getExecuter(), org.gradle.api.DefaultTask#setExecuter(org.gradle.api.internal.tasks.TaskExecuter), org.gradle.api.DefaultTask#getValidators(), org.gradle.api.DefaultTask#addValidator(org.gradle.api.internal.tasks.execution.TaskValidator), org.gradle.api.DefaultTask#getImpliesSubProjects(), org.gradle.api.DefaultTask#setImpliesSubProjects(boolean), org.gradle.api.DefaultTask#getTemporaryDirFactory(), org.gradle.api.DefaultTask#setProject(org.gradle.api.Project), org.gradle.api.DefaultTask#injectIntoNewInstance(org.gradle.api.internal.project.ProjectInternal, java.lang.String, java.util.concurrent.Callable), org.gradle.api.DefaultTask#wait(), org.gradle.api.DefaultTask#wait(long), org.gradle.api.DefaultTask#wait(long, int), org.gradle.api.DefaultTask#equals(java.lang.Object), org.gradle.api.DefaultTask#hashCode(), org.gradle.api.DefaultTask#getClass(), org.gradle.api.DefaultTask#notify(), org.gradle.api.DefaultTask#notifyAll() |
class org.gradle.api.internal.AbstractTask |
org.gradle.api.internal.AbstractTask#setProperty(java.lang.String, java.lang.Object), org.gradle.api.internal.AbstractTask#toString(), org.gradle.api.internal.AbstractTask#compareTo(java.lang.Object), org.gradle.api.internal.AbstractTask#compareTo(org.gradle.api.Task), org.gradle.api.internal.AbstractTask#getName(), org.gradle.api.internal.AbstractTask#getActions(), org.gradle.api.internal.AbstractTask#setName(java.lang.String), org.gradle.api.internal.AbstractTask#getState(), org.gradle.api.internal.AbstractTask#getState(), org.gradle.api.internal.AbstractTask#getPath(), org.gradle.api.internal.AbstractTask#getLogger(), org.gradle.api.internal.AbstractTask#leftShift(groovy.lang.Closure), org.gradle.api.internal.AbstractTask#execute(), org.gradle.api.internal.AbstractTask#isEnabled(), org.gradle.api.internal.AbstractTask#configure(groovy.lang.Closure), org.gradle.api.internal.AbstractTask#configure(groovy.lang.Closure), org.gradle.api.internal.AbstractTask#property(java.lang.String), org.gradle.api.internal.AbstractTask#getDescription(), org.gradle.api.internal.AbstractTask#getGroup(), org.gradle.api.internal.AbstractTask#setDescription(java.lang.String), org.gradle.api.internal.AbstractTask#getProject(), org.gradle.api.internal.AbstractTask#getStandardOutputCapture(), org.gradle.api.internal.AbstractTask#getExtensions(), org.gradle.api.internal.AbstractTask#setGroup(java.lang.String), org.gradle.api.internal.AbstractTask#getAnt(), org.gradle.api.internal.AbstractTask#getConvention(), org.gradle.api.internal.AbstractTask#hasProperty(java.lang.String), org.gradle.api.internal.AbstractTask#getLogging(), org.gradle.api.internal.AbstractTask#getLogging(), org.gradle.api.internal.AbstractTask#getAsDynamicObject(), org.gradle.api.internal.AbstractTask#setActions(java.util.List), org.gradle.api.internal.AbstractTask#getTaskDependencies(), org.gradle.api.internal.AbstractTask#getTaskDependencies(), org.gradle.api.internal.AbstractTask#getDependsOn(), org.gradle.api.internal.AbstractTask#setDependsOn(java.lang.Iterable), org.gradle.api.internal.AbstractTask#dependsOn([Ljava.lang.Object;), org.gradle.api.internal.AbstractTask#onlyIf(groovy.lang.Closure), org.gradle.api.internal.AbstractTask#onlyIf(org.gradle.api.specs.Spec), org.gradle.api.internal.AbstractTask#setOnlyIf(org.gradle.api.specs.Spec), org.gradle.api.internal.AbstractTask#setOnlyIf(groovy.lang.Closure), org.gradle.api.internal.AbstractTask#setDidWork(boolean), org.gradle.api.internal.AbstractTask#getDidWork(), org.gradle.api.internal.AbstractTask#doFirst(org.gradle.api.Action), org.gradle.api.internal.AbstractTask#doFirst(groovy.lang.Closure), org.gradle.api.internal.AbstractTask#doLast(groovy.lang.Closure), org.gradle.api.internal.AbstractTask#doLast(org.gradle.api.Action), org.gradle.api.internal.AbstractTask#deleteAllActions(), org.gradle.api.internal.AbstractTask#getEnabled(), org.gradle.api.internal.AbstractTask#setEnabled(boolean), org.gradle.api.internal.AbstractTask#dependsOnTaskDidWork(), org.gradle.api.internal.AbstractTask#getInputs(), org.gradle.api.internal.AbstractTask#getOutputs(), org.gradle.api.internal.AbstractTask#getOutputs(), org.gradle.api.internal.AbstractTask#getTemporaryDir(), org.gradle.api.internal.AbstractTask#mustRunAfter([Ljava.lang.Object;), org.gradle.api.internal.AbstractTask#setMustRunAfter(java.lang.Iterable), org.gradle.api.internal.AbstractTask#getMustRunAfter(), org.gradle.api.internal.AbstractTask#finalizedBy([Ljava.lang.Object;), org.gradle.api.internal.AbstractTask#setFinalizedBy(java.lang.Iterable), org.gradle.api.internal.AbstractTask#getFinalizedBy(), org.gradle.api.internal.AbstractTask#shouldRunAfter([Ljava.lang.Object;), org.gradle.api.internal.AbstractTask#setShouldRunAfter(java.lang.Iterable), org.gradle.api.internal.AbstractTask#getShouldRunAfter(), org.gradle.api.internal.AbstractTask#getTaskActions(), org.gradle.api.internal.AbstractTask#getOnlyIf(), org.gradle.api.internal.AbstractTask#executeWithoutThrowingTaskFailure(), org.gradle.api.internal.AbstractTask#getExecuter(), org.gradle.api.internal.AbstractTask#setExecuter(org.gradle.api.internal.tasks.TaskExecuter), org.gradle.api.internal.AbstractTask#getValidators(), org.gradle.api.internal.AbstractTask#addValidator(org.gradle.api.internal.tasks.execution.TaskValidator), org.gradle.api.internal.AbstractTask#getImpliesSubProjects(), org.gradle.api.internal.AbstractTask#setImpliesSubProjects(boolean), org.gradle.api.internal.AbstractTask#getTemporaryDirFactory(), org.gradle.api.internal.AbstractTask#setProject(org.gradle.api.Project), org.gradle.api.internal.AbstractTask#injectIntoNewInstance(org.gradle.api.internal.project.ProjectInternal, java.lang.String, java.util.concurrent.Callable), org.gradle.api.internal.AbstractTask#wait(), org.gradle.api.internal.AbstractTask#wait(long), org.gradle.api.internal.AbstractTask#wait(long, int), org.gradle.api.internal.AbstractTask#equals(java.lang.Object), org.gradle.api.internal.AbstractTask#hashCode(), org.gradle.api.internal.AbstractTask#getClass(), org.gradle.api.internal.AbstractTask#notify(), org.gradle.api.internal.AbstractTask#notifyAll() |
Gradle doesn't really handle optional inputs as being a file that doesn't exist. Optional means the task field is null. So we do some custom logic to return null if the file doesn't exist since we cannot know ahead of time without parsing the proguard config rule files.