【问题标题】:Generated Gradle build files from Eclipse, getting error: Gradle version 1.10 is required从 Eclipse 生成 Gradle 构建文件,出现错误:需要 Gradle 版本 1.10
【发布时间】:2017-12-21 07:50:21
【问题描述】:

我从一个 Eclipse 项目生成了一个 Gradle 构建文件,然后在源根目录中运行 gradle build,这产生了以下错误:

FAILURE: Build failed with an exception.

* Where:
Build file '/home/me/src/myproject/build.gradle' line: 11

* What went wrong:
A problem occurred evaluating project ':src:myproject'.
> Failed to apply plugin [id 'com.android.application']
   > Gradle version 1.10 is required. Current version is 2.10. If using the gradle wrapper, try editing the distributionUrl in /home/me/src/myproject/gradle/wrapper/gradle-wrapper.properties to gradle-1.10-all.zip

这是自动生成的build.gradle

apply plugin: 'com.android.application'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile project(':tools:android-sdk-linux_86:extras:android:support:v7:appcompat')
}

android {
    compileSdkVersion 25
    buildToolsVersion "23.0.3"

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }

        instrumentTest.setRoot('tests')

        debug.setRoot('build-types/debug')
        release.setRoot('build-types/release')
    }
}

另一方面,this project 的构建没有任何问题。

我尝试复制buildscript 块以及android 的任何缺失子块,以及注释掉顶级dependencies 块,但无济于事。

如果重要的话,操作系统是 Ubuntu 16.04(64 位),gradle 2.10。

什么给了?

【问题讨论】:

  • 你为什么不用android studio IDE?
  • Android Studio 不会构建我用 C 编写的桌面应用程序(Eclipse 会这样做,这要归功于 CDT),这使得 AS 只是朝着更加碎片化的方向迈出了一步。因此,我正在寻找一种可以让我保留 Eclipse 的方法。

标签: java android eclipse gradle build.gradle


【解决方案1】:

我终于用 Gradle Wrapper 构建了它。

由于gradle wrapper 也会失败并显示相同的错误消息(有 2.10,想要 1.10),我只是从我之前成功构建的另一个项目中复制了 gradlewgradlew.batgradle 子目录.

gradlew build 仍然会抱怨版本,所以我按照错误消息的指示在gradle-wrapper.properties 中编辑了版本。

然后对build.gradle 进行一些修改(并非所有这些都是必要的):

在顶部添加一个新块:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.2'
    }
}

除其他外,这将指定 JCenter 作为依赖项的存储库。对于 Maven Central,请指定 mavenCentral() 而不是 jcenter(),这样也可以。

修改 dependencies 块:由于我们从存储库中提取 Android 支持库,因此禁用本地构建。删除以下行:

compile project(':tools:android-sdk-linux_86:extras:android:support:v7:appcompat')

如果您没有要包含的任何本地 jar,请同时删除另一行(在这种情况下,您可以删除整个部分)。我有一个要包含的 jar(除了 appcompat),所以我保留了这条线并将 *.jar 更改为我需要的 jar 的名称。 (或者,从您的 libs 目录中删除重复的 jar,但这会直接从 Eclipse 破坏 ant 构建。)

android 块中,添加以下子项:

defaultConfig {
    minSdkVersion 11
    targetSdkVersion 23
}

lintOptions {
    abortOnError false
}

dependencies {
    compile 'com.android.support:support-v4:23.1.+'
    compile 'com.android.support:appcompat-v7:23.1.+'
}

defaultConfig 中的 API 版本应与您的应用清单中的版本相匹配。

如果您的项目包含一些非关键问题(未使用的声明、使用已弃用的 API 等),lintOptions 很重要,否则这些将导致构建失败。

dependencies 可能会因您通过 JCenter 包含的库而异。我注意到 appcompat-v7 v23.2 及更高版本会给我编译错误(这可能是一个单独的问题),所以我坚持使用最后一个有效的。

有了所有这些,项目终于建立起来了。关于 Google 保持向后兼容性的内容非常多……

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-01
    • 2014-08-08
    • 2015-11-06
    • 2016-04-21
    • 1970-01-01
    • 2016-04-08
    • 2018-09-06
    相关资源
    最近更新 更多