【问题标题】:Mixing android plugins from gradle and gradle-experimental混合来自 gradle 和 gradle-experimental 的 android 插件
【发布时间】:2016-02-04 04:52:27
【问题描述】:

是否有任何方法或解决方法或只是提示使 gradle 和 gradle-experimental 的插件一起工作?

例如混合这两个版本:

com.android.tools.build:gradle:1.3.1
com.android.tools.build:gradle-experimental:0.3.0-alpha4

我有一个使用一些外部插件的现有项目 (app/build.gradle):

apply plugin: 'com.android.model.application'
apply plugin: 'com.android.databinding'
apply plugin: 'com.jakewharton.hugo'

在我的根 build.gradle 我有:

com.android.tools.build:gradle-experimental:0.3.0-alpha4

我遇到的问题:

* What went wrong:
A problem occurred evaluating project ':app'.
> Failed to apply plugin [id 'com.android.databinding']
   > java.lang.NullPointerException (no error message)

* What went wrong:
A problem occurred evaluating project ':app'.
> Failed to apply plugin [id 'com.jakewharton.hugo']
   > 'android' or 'android-library' plugin required.

如果没有其他插件,我的项目可以正常工作(我有一些从我的主项目调用的 NDK 代码的 Android 库。当我在任何其他插件上添加提到的插件时会出现问题。

问题是 - 它是 gradle-experimental 问题还是每个插件的问题(hugo、databinding、apt,可能更多)。

或者,如果有任何其他方法可以让应用程序具有当前稳定的 gradle 插件和使用 gradle-experimental 的库(带有 NDK 代码),或者您有任何提示?

我要避免的是处理 *.mk 文件和(尽可能完整)Android Studio 支持。更大的图景是使用 NDK 代码(只是简单的计算)准备 .aar 库,该库将能够插入到现有项目中。

【问题讨论】:

  • 仅供参考,要在 Gradle 中启用数据绑定,您需要这样做:dataBinding { enabled = true }
  • @froger_mcs 我知道这个问题有一个可接受的答案,但您是否设法使用gradle-experimental 插件(用于支持 NDK)和databinding 支持,或者这两个功能必须在单独的模块中?

标签: android gradle android-ndk gradle-experimental


【解决方案1】:

通过在我的项目中使用最新版本,我能够毫无问题地混合使用 gradle stable-experimental android 插件。

您应该能够在项目的 build.gradle 文件中定义这两个依赖项:

dependencies {
    classpath 'com.android.tools.build:gradle-experimental:0.3.0-alpha7'
    classpath 'com.android.tools.build:gradle:1.4.0-beta6'
}

然后使用您各个模块的 build.gradle 文件中的apply com.android.(application|library)com.android.model.(application|library)

【讨论】:

  • 谢谢,似乎解决方案只是尝试每个 beta 版本,直到找到一个可以工作的版本。 :) 还值得一提的是,插件只能与 com.android.(application|library) 一起使用。所以最后混合实验性和稳定的 gradle 插件我们应该有不同的模块(在我的例子中是重点)。
  • 我正在尝试混合 0.6.0-alpha3 和 1.5.0 但 AndroidStudio/gradle 似乎不喜欢它。我的项目由一个本机模块(产生一个 aar)组成,然后由一个 android 库使用,两者都由一个主应用程序使用。加载时它不会引发任何与项目相关的错误,但 Android Studio (1.5.1) 正在发疯(自动禁用插件,无法保存文件,无法加载 android 方面,...)。如果您有任何建议,我很感兴趣!
  • 使用最新版本0.6.0-alpha5,IDE 无法解析模块,即使使用compile project(":jni-project")。最新版本的 gradle 有这些问题吗?
  • 我使用这篇文章gist.github.com/ph0b/0575b30b67e04f2ec10f 尝试将实验性插件与 Android Studio 2.0 上的常规插件混合使用,但它以错误“Gradle 项目刷新失败错误:字符串索引超出范围: -1”。为什么 Android Studio 是个 IDE 的玩笑,还是我遗漏了一些非常明显的东西?
【解决方案2】:

还没有使用实验性插件,但我想,你可以将你的项目分成2个Gradle模块,并在应用程序模块和NDK模块中使用标准的Android Gradle插件和新的实验性插件。

【讨论】:

    【解决方案3】:

    @ph0b 是对的,我只是在更新那个答案。

    你需要在你的 gradle-wrapper.properties distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip

    在你的项目 build.gradle 中

        dependencies {
        classpath 'com.android.tools.build:gradle:2.1.3'
        classpath "com.android.tools.build:gradle-experimental:0.7.3"
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多