![JAR search and dependency download from the Maven repository](/logo.png)
cn.hx.plugin.junkcode.task.GenerateJunkCodeTask.groovy Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of android-junk-code Show documentation
Show all versions of android-junk-code Show documentation
generate junk code for android
package cn.hx.plugin.junkcode.task
import cn.hx.plugin.junkcode.ext.JunkCodeConfig
import cn.hx.plugin.junkcode.utils.JunkUtil
import org.gradle.api.DefaultTask
import org.gradle.api.file.DirectoryProperty
import org.gradle.api.file.RegularFileProperty
import org.gradle.api.provider.Property
import org.gradle.api.tasks.*
abstract class GenerateJunkCodeTask extends DefaultTask {
@Nested
abstract JunkCodeConfig config
@Input
abstract Property getNamespace()
@OutputDirectory
abstract DirectoryProperty getOutputFolder()
@OutputDirectory
abstract DirectoryProperty getJavaOutputFolder()
@OutputDirectory
abstract DirectoryProperty getResOutputFolder()
@OutputFile
abstract RegularFileProperty getManifestOutputFile()
@OutputFile
abstract RegularFileProperty getProguardOutputFile()
private List packageList = new ArrayList<>()
private List activityList = new ArrayList<>()
GenerateJunkCodeTask() {
getJavaOutputFolder().convention(getOutputFolder().dir("java"))
getResOutputFolder().convention(getOutputFolder().dir("res"))
getManifestOutputFile().convention(getOutputFolder().file("AndroidManifest.xml"))
getProguardOutputFile().convention(getOutputFolder().file("proguard-rules.pro"))
}
@TaskAction
void taskAction() {
def javaDir = getJavaOutputFolder().get().asFile
def resDir = getResOutputFolder().get().asFile
javaDir.deleteDir()
resDir.deleteDir()
if (config.javaGenerator) {
config.javaGenerator.execute(javaDir)
} else {
for (int i = 0; i < config.packageCount; i++) {
String packageName
if (config.packageCreator) {
def packageNameBuilder = new StringBuffer()
config.packageCreator.execute(new Tuple2(i, packageNameBuilder))
packageName = packageNameBuilder.toString()
} else {
if (config.packageBase.isEmpty()) {
packageName = JunkUtil.generateName(i)
} else {
packageName = config.packageBase + "." + JunkUtil.generateName(i)
}
}
def list = JunkUtil.generateActivity(javaDir, resDir, getNamespace().get(), packageName, config)
activityList.addAll(list)
JunkUtil.generateJava(javaDir, packageName, config)
packageList.add(packageName)
}
//生成混淆文件
JunkUtil.generateProguard(getProguardOutputFile().get().asFile, packageList, config)
}
if (config.resGenerator) {
config.resGenerator.execute(resOutDir)
} else {
JunkUtil.generateDrawableFiles(resDir, config)
JunkUtil.generateStringsFile(resDir, config)
JunkUtil.generateKeep(resDir, config)
}
if (config.manifestGenerator) {
config.manifestGenerator.execute(getManifestOutputFile().get().asFile)
} else {
JunkUtil.generateManifest(getManifestOutputFile().get().asFile, activityList)
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy