从 Eclipse 生成 Gradle 构建文件,出现错误:需要 Gradle 版本 1.10
Posted
技术标签:
【中文标题】从 Eclipse 生成 Gradle 构建文件,出现错误:需要 Gradle 版本 1.10【英文标题】:Generated Gradle build files from Eclipse, getting error: Gradle version 1.10 is required 【发布时间】: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 的方法。 【参考方案1】:我终于用 Gradle Wrapper 构建了它。
由于gradle wrapper
也会失败并显示相同的错误消息(有 2.10,想要 1.10),我只是从我之前成功构建的另一个项目中复制了 gradlew
、gradlew.bat
和 gradle
子目录.
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 保持向后兼容性的内容非常多……
【讨论】:
以上是关于从 Eclipse 生成 Gradle 构建文件,出现错误:需要 Gradle 版本 1.10的主要内容,如果未能解决你的问题,请参考以下文章
apply plugin: 'idea' --- gradle idea
如何让 Eclipse 使用 Gradle 生成 MapStruct 映射器
如何使用 Gradle 为 Android 项目生成 Eclipse 和 Intellij 项目文件