混合Android插件从gradle和gradle-experimental

时间:2015-11-03 21:18:44

标签: android gradle android-ndk gradle-experimental

是否有任何方法或变通方法或只是提示从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.

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

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

或许你有任何提示,如果有任何其他方法可以使用当前稳定的gradle插件和库(使用NDK代码)使用gradle-experimental?

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

3 个答案:

答案 0 :(得分:4)

通过在我的项目中使用最新版本,我能够毫无问题地混合使用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)

答案 1 :(得分:0)

尚未使用实验性插件,但我想,您可以将项目划分为2个Gradle模块,并为NDK模块中的应用程序模块和新实验插件使用标准Android Gradle插件。

答案 2 :(得分:0)

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