Применить плагин Android для всех проектов Android с Initscript - PullRequest
0 голосов
/ 11 ноября 2019

Я хочу создать конкретный плагин и применить его для всех проектов Android. Поэтому я создаю определенный файл Gradle, как показано ниже: my.gralde:

initscript {
    repositories {
        maven { url "E:\\My\\repo" }
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.0'
        classpath group: 'my',name: 'plugin', version: '2.0-SNAPSHOT'           
    }
}
allprojects {
    afterEvaluate { p ->
        boolean isApp = p.plugins.hasPlugin('com.android.application')
        boolean isLib = p.plugins.hasPlugin('com.android.library')
        if (isApp || isLib) {
            p.android { 
                defaultConfig { multiDexEnabled true }
                dexOptions { javaMaxHeapSize "4g" }
            }
            p.apply plugin: my.plugin.InstrumentJarPlugin
        }
    }
}

, а мой класс плагинов представлен ниже (несвязанный код был удален):

public class InstrumentJarPlugin implements Plugin<Project> {

    @Override
    void apply(Project project) {
        def transform = new AllClassTransformation(project)
        if (project.plugins.hasPlugin("com.android.application")) {
            println "Apply in project: " + project.name
            project.android.registerTransform(transform)
        } else {
            println "Not apply in project: " + project.name
        }
    }
}

Когда я объединяю содержимоефайла Gradle с файлом build.gradle в проекте, он нормально работает с плагином.

Но когда я разделяю его и собираю с помощью команды gradle.bat -I my.gradle assembleDebug. Возникает следующая ошибка:

Caused by: org.gradle.internal.metaobject.AbstractDynamicObject$CustomMessageMissingMethodException: Could not find method registerTransform() for arguments [svmc.paco.plugin.AllClassTransformation@5b404fe2] on object of type com.android.build.gradle.internal.dsl.BaseAppModuleExtension.
        at org.gradle.internal.metaobject.AbstractDynamicObject.methodMissingException(AbstractDynamicObject.java:179)
        at org.gradle.internal.metaobject.AbstractDynamicObject.invokeMethod(AbstractDynamicObject.java:164)
        at com.android.build.gradle.internal.dsl.BaseAppModuleExtension_Decorated.invokeMethod(Unknown Source)
        at svmc.paco.plugin.InstrumentJarPlugin.apply(InstrumentJarPlugin.groovy:45)
        at svmc.paco.plugin.InstrumentJarPlugin.apply(InstrumentJarPlugin.groovy)
        at org.gradle.api.internal.plugins.ImperativeOnlyPluginTarget.applyImperative(ImperativeOnlyPluginTarget.java:42)
        at org.gradle.api.internal.plugins.RuleBasedPluginTarget.applyImperative(RuleBasedPluginTarget.java:50)
        at org.gradle.api.internal.plugins.DefaultPluginManager.addPlugin(DefaultPluginManager.java:177)
        at org.gradle.api.internal.plugins.DefaultPluginManager.access$300(DefaultPluginManager.java:51)
        at org.gradle.api.internal.plugins.DefaultPluginManager$AddPluginBuildOperation.run(DefaultPluginManager.java:267)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:301)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:293)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:175)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
        at org.gradle.api.internal.plugins.DefaultPluginManager$2.execute(DefaultPluginManager.java:155)
        at org.gradle.api.internal.plugins.DefaultPluginManager$2.execute(DefaultPluginManager.java:152)
        at org.gradle.configuration.internal.DefaultUserCodeApplicationContext.apply(DefaultUserCodeApplicationContext.java:48)
        at org.gradle.api.internal.plugins.DefaultPluginManager.doApply(DefaultPluginManager.java:152)
        ... 137 more

Любое предложение здесь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...