Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

插件编译不过 #85

Open
wanggangroger opened this issue Mar 19, 2024 · 1 comment
Open

插件编译不过 #85

wanggangroger opened this issue Mar 19, 2024 · 1 comment

Comments

@wanggangroger
Copy link

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'
}

@qq549631030
Copy link
Owner

这样用:
根目录的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 {
            //...
        }
    }
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants