混合来自 gradle 和 gradle 的 android 插件-实验性

Mixing android plugins from gradle and gradle-experimental

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

例如混合这两个版本:

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.

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

问题是 - 它是 gradle- 实验性问题还是每个插件的问题(hugo、数据绑定、apt,可能更多)。

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

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

我已经能够混合使用 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)

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

@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"
}