Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Gradle插件向android.defaultConfig添加函数?_Android_Groovy_Android Gradle Plugin_Gradle Plugin - Fatal编程技术网

如何使用Gradle插件向android.defaultConfig添加函数?

如何使用Gradle插件向android.defaultConfig添加函数?,android,groovy,android-gradle-plugin,gradle-plugin,Android,Groovy,Android Gradle Plugin,Gradle Plugin,我想创建一个Gradle插件,将函数添加到。我想添加一个getGreeting函数到android.defaultConfig,如下所述-但是通过一个插件: // build.gradle android { defaultConfig { def getGreeting = { name -> return "Hello ${name}" } } } 我开始准备Groovy项目。现在我在这一点上: package

我想创建一个Gradle插件,将函数添加到。我想添加一个
getGreeting
函数到
android.defaultConfig
,如下所述-但是通过一个插件:

// build.gradle
android {
    defaultConfig {
        def getGreeting = { name ->
            return "Hello ${name}"
        }
    }
}
我开始准备Groovy项目。现在我在这一点上:

package com.example.myexample

import com.android.build.gradle.AppPlugin
import com.android.build.gradle.LibraryPlugin
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.tasks.StopExecutionException


class MyExamplePlugin implements Plugin<Project> {

    @Override
    void apply(Project project) {
        if (hasAndroidPlugin(project)) {
            throw new StopExecutionException(
                "Must be applied before 'android' or 'android-library' plugin.")
        }
        // def extension = project.android.extensions.create("foobar", MyExamplePlugin, project)
        // def AppPlugin androidPlugin = project.plugins.getPlugin("android")
    }

    static def hasAndroidPlugin(Project project) {
        return project.plugins.hasPlugin(AppPlugin) || 
               project.plugins.hasPlugin(LibraryPlugin)
    }

}
package com.example.myexample
导入com.android.build.gradle.AppPlugin
导入com.android.build.gradle.LibraryPlugin
导入org.gradle.api.Plugin
导入org.gradle.api.Project
导入org.gradle.api.tasks.StopExecutionException
类MyExamplePlugin实现插件{
@凌驾
无效申请(项目){
if(HasandoidPlugin(项目)){
抛出新的StopExecutionException异常(
“必须在“android”或“android library”插件之前应用。”)
}
//def extension=project.android.extensions.create(“foobar”,MyExamplePlugin,project)
//def AppPlugin androidPlugin=project.plugins.getPlugin(“android”)
}
静态def hasAndroidPlugin(项目){
返回project.plugins.hasPlugin(AppPlugin)|
project.plugins.hasPlugin(LibraryPlugin)
}
}

因为我从未使用过Groovy,所以我甚至不知道如何调试到类中。注释行可能是访问
android.defaultConfig
块的一种方式。如何在那里添加函数?

我不确定添加函数是否是您真正想要的(或可能的)。getGreeting函数的作用是什么?它的用途是什么?@a或者它是多个更复杂函数的占位符,我不想在我正在处理的每个项目中添加到每个build.gradle。因此,我想把这些函数放到一个“库”中。@JJD:你有没有想过这个问题?在我的例子中,我想写一些字符串资源(使用
resValue
)-我目前正在
defaultConfig
中做这件事,但是现在我想把逻辑转移到另一个项目,所以我想写一个插件。…。@david.mihola不,我不知道怎么做。但现在,我会研究那些应该有助于提取功能的方法。您甚至可以使用Kotlin而不是Groovy。@JJD:谢谢您的回复-我想我现在有了一个基本上可以使用的解决方案。还有,是的,我在周末将我们主要项目的Gradle配置转换为Kotlin,感觉非常好!