插件编译不过
wanggangroger opened this issue · comments
AndroidJunkCode版本:1.3.3
gradle版本:7.2
AGP版本:4.2.2
JDK版本:11
productFlavors配置:
productFlavors {
developDev {
dimension "SolesPresta"
}
developTest {
dimension "SolesPresta"
}
paysentePre {
dimension "SolesPresta"
}
paysenteProd {
dimension "SolesPresta"
}
}
androidJunkCode配置:
androidJunkCode {
def config = {
//注意:这里的release是变体名称,如果没有设置productFlavors就是buildType名称,如果有设置productFlavors就是flavor+buildType,例如(freeRelease、proRelease)
packageBase = "com.v.c.ui" //生成java类根包名
resPrefix = "k_" //生成的layout、drawable、string等资源名前缀
packageCount = 2 //生成包数量
activityCountPerPackage = 4 //每个包下生成Activity类数量
excludeActivityJavaFile = false
//是否排除生成Activity的Java文件,默认false(layout和写入AndroidManifest.xml还会执行),主要用于处理类似神策全埋点编译过慢问题
otherCountPerPackage = 2 //每个包下生成其它类的数量
methodCountPerClass = 2 //每个类下生成方法数量
drawableCount = 40 //生成drawable资源数量
stringCount = 50 //生成string数量
methodGenerator = { methodBuilder ->
switch (random.nextInt(6)) {
case 0:
methodBuilder.returns(String.class)
.addParameter(Long.class, "time")
.addStatement("long now = \$T.currentTimeMillis()", System.class)
.beginControlFlow("if (time < now)")
.addStatement("return \$S", "now")
.nextControlFlow("else if (time == now)")
.addStatement("return \$S", "stop")
.nextControlFlow("else")
.addStatement("return \$S", "forwart")
.endControlFlow()
break
case 1:
methodBuilder.returns(Integer.class)
.addCode(""
+ "int total = 0;\n"
+ "for (int i = 0; i < 10; i++) {\n"
+ " total += i;\n"
+ "}\n")
.addStatement("return total")
break
case 2:
methodBuilder.returns(Boolean.class)
.addParameter(File.class, "dir")
.beginControlFlow("try")
.beginControlFlow("if (dir.exists())")
.addStatement("dir.delete()")
.addStatement("return true")
.nextControlFlow("else")
.addStatement("throw new Exception(\$S)", "Failed")
.endControlFlow()
.nextControlFlow("catch (\$T e)", Exception.class)
.addStatement("throw new \$T(e)", RuntimeException.class)
.endControlFlow()
break
case 3:
methodBuilder.returns(Date.class)
.addStatement("return new \$T()", Date.class)
break
case 4:
methodBuilder.addModifiers(Modifier.PUBLIC, Modifier.STATIC)
.returns(void.class)
.addParameter(String.class, "message")
.addStatement("\$T.out.println(message)", System.class)
break
default:
methodBuilder.addModifiers(Modifier.PUBLIC, Modifier.STATIC)
.returns(void.class)
.addParameter(String[].class, "args")
.addStatement("\$T.out.println(\$S)", System.class, "Hello")
}
}
}
variantConfig {
developTestRelease config
paysentePreReleasePre config
paysenteProdReleaseProd config
}
}
bug描述:
Failed to apply plugin 'io.github.qq549631030.android-junk-code'.
No signature of method: cn.hx.plugin.junkcode.plugin.AndroidJunkCodePlugin.IllegalArgumentException() is applicable for argument types: (String) values: [must apply this plugin after 'com.android.application']
但是我的com.android.application就是在前面
plugins {
id 'com.android.application'
id 'stringfog'
id 'com.google.gms.google-services'
id 'io.github.qq549631030.android-junk-code' version '1.3.3'
}
这样用:
根目录的build.gradle中:
plugins {
//插件id和前面mavenCentral的不一样
//开头是io.github不是com.github
id "io.github.qq549631030.android-junk-code" version "x.x.x" apply false
}
app目录的build.gradle模块中:
plugins {
id "io.github.qq549631030.android-junk-code"
}
androidJunkCode {
variantConfig {
release {
//...
}
}
}