Java 从Eclipse生成的Gradle构建文件,获取错误:需要Gradle版本1.10
我从Eclipse项目生成了一个Gradle构建文件,然后在源根目录中运行了Java 从Eclipse生成的Gradle构建文件,获取错误:需要Gradle版本1.10,java,android,eclipse,gradle,build.gradle,Java,Android,Eclipse,Gradle,Build.gradle,我从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'. >
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')
}
}
另一方面,构建没有任何问题
我试着复制buildscript
块以及android
中任何缺失的子块,并注释掉顶级依赖项
块,但没有成功
如果有必要的话,操作系统是Ubuntu 16.04(64位),gradle 2.10
有什么好处?我终于用Gradle包装器构建了它 由于
gradle包装器
也会失败,并显示相同的错误消息(have 2.10,want 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()
,这同样适用
修改依赖项
块:因为我们正在从存储库中提取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等),则选项非常重要,否则将导致生成失败
依赖项
可能因您通过JCenter包含的库而异。我注意到appcompat-V7V23.2和更高版本会给我带来编译错误(这可能是一个单独的问题),所以我坚持使用最后一个有效的版本
有了所有这些,项目最终得以构建。关于谷歌维护向后兼容性的内容太多了…为什么不使用android studio IDE?android studio不会构建我用C编写的桌面应用程序(Eclipse会这样做,这要归功于CDT),这只是迈向更碎片化的又一步。因此,我正在寻找一种方法,使我能够保持Eclipse。