我找到了两个 gradle android 插件 - 两者之间有啥关系吗?

Posted

技术标签:

【中文标题】我找到了两个 gradle android 插件 - 两者之间有啥关系吗?【英文标题】:I find two gradle android plugin - Is there any relation between the two?我找到了两个 gradle android 插件 - 两者之间有什么关系吗? 【发布时间】:2012-10-31 05:15:35 【问题描述】:

我试图了解如何使用 Gradle 构建 android 应用程序。令我惊讶的是,我找到了两份参考资料,一份来自jvoegele,另一份来自Android Tools Project 网站。从表面上看,它们似乎是不同的。所以我的问题是为什么有两种变体?两者之间有什么关系吗?他们目前的状态如何?我应该使用哪一个 - 它们的优点和缺点?安卓的好像才刚刚开始。

我期待有使用 Gradle 构建 Android 应用程序的第一手经验的人提供一些有价值的意见。

感谢和问候

桑塔努

【问题讨论】:

我急切地等待得到一些反馈。人们通常使用哪个 Gradle 插件来构建 Android 项目?提前致谢。 【参考方案1】:

我只是在使用 android 工具项目网站上的 gradle 插件,感觉很难弄清楚事情应该如何工作。它不是很好地集成到 eclipse 开发工作流程中,甚至 eclipse 的默认项目配置对我来说也不起作用。可以通过扩展项目和类路径文件的创建并修改 gradle 构建文件中的项目布局来解决此问题。

为了修复 eclipse 项目的创建,我受到了 jvoegele 插件的启发(学分去那里):

eclipse
    project 
        natures "com.android.ide.eclipse.adt.AndroidNature"

        def builders = new LinkedList(buildCommands)
        builders.addFirst(new BuildCommand("com.android.ide.eclipse.adt.PreCompilerBuilder"))
        builders.addFirst(new BuildCommand("com.android.ide.eclipse.adt.ResourceManagerBuilder"))
        builders.addLast(new BuildCommand("com.android.ide.eclipse.adt.ApkBuilder"))
        buildCommands = new ArrayList(builders)
    
    classpath 
        containers.removeAll  it == "org.eclipse.jdt.launching.JRE_CONTAINER" 
        containers "com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"

        plusConfigurations += configurations.compile

        file 
            whenMerged  classpath ->
                classpath.entries.removeAll  it instanceof SourceFolder && (it.dir?.path == "gen" || it.dir?.path == "src") 
                classpath.entries.add(new SourceFolder("gen", null))
                classpath.entries.add(new SourceFolder("src", null))
            
        
    

如果你想让你的项目快速高效,这个插件不适合你。

【讨论】:

感谢您的反馈 0x0me! Android 工具项目在我看来也是“进行中的工作”。我不想与 Eclipse 集成,我只想为我的 Android 项目提供一个命令行构建系统。所以看来我应该使用 jvoegele 的插件。但令我惊讶的是,为什么 Android 团队和 jvoegele 没有提出一些计划来合并这两个插件,以便只有一个适用于 Android 的 gradle 插件。这是有道理的,因为 jvoegele 在创建插件方面付出了很大的努力。【参考方案2】:

jvoegele 最初的 Android gradle 插件是no longer supported,但com.android.tools.build 插件之间的功能差距正在缩小。

【讨论】:

【参考方案3】:

从长远来看,我肯定会选择 Android 工具项目;它确实在进行中,但 android 工具组正在非常积极地致力于它。他们打算将此作为当前 ant 构建系统的替代方案

【讨论】:

以上是关于我找到了两个 gradle android 插件 - 两者之间有啥关系吗?的主要内容,如果未能解决你的问题,请参考以下文章

Android 基于Gradle 7.4.2,自定义插件示例

Gradle 无法安装 - Gradlew InstallDebug 失败插件,ID 为“...”未找到

Android开发--Gradle--tasks(三)

在android studio中将firebase添加到flutter时出错:插件项目:firebase_core_web未找到。请更新 settings.gradle [重复]

错误:无法找到带有 Gradle 路径“:capacitor-cordova-android-plugins”的模块

未找到 Gradle DSL 方法:android()