UPDATE GRADLE到4+之后的Android Studio 3.0 NoClassDefFoundError

时间:2017-11-01 11:34:36

标签: gradle

我创建了一个包含两个模块的项目 - 一个Android应用程序和一个java库。将studio升级到v3.0之后,只有当我从java-lib模块运行main()方法时,才会得到NoClassDefFoundError。

我没有对build.gradle文件进行任何更改,一切都是自动的。 implementation / api / compileOnly / runtimeOnly方法不会更改。

我看到有关切换到新插件的信息,它说"声明风味尺寸"。我对此翻译有疑问,很快就会生气。

我试过了:

classpath 'com.android.tools.build:gradle:3.0.0'
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-4.2.1-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-4.3-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-4.3-rc-4-all.zip

帮我迁移到GRADLE 4 +。

2 个答案:

答案 0 :(得分:0)

你知道,我可能已经找到了自己问题的答案。我相信很多人都有一个有两个模块的项目。 Android模块适用于新的GRADLE 4+,第二个模块作为java项目(不是库)不适用于新的GRADLE 4 +。

搜索答案的结果:LibGDX - GitHub

答案 1 :(得分:0)

Android Developer Documentation中所述:

  

在某些情况下,您可能希望组合多种产品口味的配置。例如,您可能希望为"完整"创建不同的配置。和"演示"基于API级别的产品风味。为此,Gradle的Android插件允许您创建称为风味维度的产品风格组。构建应用程序时,Gradle会合并您定义的每个flavor大小的产品flavor配置以及构建类型配置,以创建最终的构建变体。 Gradle不会合并属于相同风味维度的产品风味。

您必须为Android Studio 3.0&amp ;;指定至少一个flavorDimension Gradle 4 +

最重要的是,即使您没有不同的口味,也必须指定至少一个flavorDimension&将其应用于您的所有productFlavors。这将解决您的错误。在build.gradle文件中:

flavorDimensions "dummy"
productFlavors {
demo {
    // Assigns this product flavor to the "dummy" flavor dimension.
    dimension "dummy"
    ...
}

full {
    dimension "dummy"
    ...
}