遇到问题迁移到 Android gradle plugin 3.0 。
项目根目录上的build.gradle文件
buildscript {
repositories {
jcenter()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
}
}
Android 应用程序模块build.gradle
buildscript {
repositories {
maven { url 'https://maven.fabric.io/public' }
mavenCentral()
}
dependencies {
classpath 'io.fabric.tools:gradle:1.+'
classpath testDependencies.spoon
}
}
repositories {
maven { url 'https://maven.fabric.io/public' }
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
spoon {
debug = true
grantAllPermissions = true
shard = true
}
android {
compileSdkVersion 25
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
尝试编译项目。我收到了编译错误。
但是一旦再次添加 retrolambda ,项目就会成功编译和构建。阅读“已知问题”部分,但没有找到解决方法。我希望有人能够体验到这一点,并能提供帮助。
答案 0 :(得分:5)
如果您在更新插件后遇到构建错误,只需搜索this page以获取错误输出或导航到相关主题,然后按照说明解决问题。
例如,请考虑主项目的build.gradle文件中包含的以下类路径依赖项:
buildscript {
...
dependencies {
classpath "com.android.tools.build:gradle:3.0.1"
classpath "me.tatarka:gradle-retrolambda:3.7.0"
}
}
现在考虑以下build.gradle文件,用于复合构建中包含的另一个项目:
buildscript {
dependencies {
// Note that the order of plugins differs from that
// of the main project's build.gradle file. This results
// in a build error because Gradle registers this as a
// different classloader.
classpath "me.tatarka:gradle-retrolambda:3.7.0"
classpath "com.android.tools.build:gradle:3.0.1"
}
}
答案 1 :(得分:3)
你有没有设置
apply plugin: 'me.tatarka.retrolambda'
将me.tatarka:gradle-retrolambda
插件作为依赖项添加到 build.gradle
文件中。
buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
classpath "com.android.tools.build:gradle:3.0.1"
classpath 'me.tatarka:gradle-retrolambda:3.7.0'
}
}
// Required because retrolambda is on maven central
repositories {
mavenCentral()
}
然后将源和目标兼容性添加到 Java 8
,并在 app/build.gradle
文件中应用新插件。
apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda' // Add this
android {
compileSdkVersion 27
buildToolsVersion "27.0.0"
defaultConfig {
applicationId " "
minSdkVersion //
targetSdkVersion //
versionCode //
versionName //
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
<强> FYI 强>
如果您使用 Gradle 3.0.0 or higher
的Android插件,您的项目会自动使用插件指定的默认版本的构建工具。要使用不同版本的构建工具,请使用模块的 build.gradle
中的buildToolsVersion
进行指定,如下所示:
/**
* buildToolsVersion specifies the version of the SDK build tools, command-line
* utilities, and compiler that Gradle should use to build your app. You need to
* download the build tools using the SDK Manager.
*
* If you're using Android plugin 3.0.0 or higher, this property is optional—
* the plugin uses a recommended version of the build tools by default.
*/
android {
compileSdkVersion 26
buildToolsVersion "26.0.2"
}
您应该 upgrade
您的buildToolsVersion
版本。
android {
compileSdkVersion 27
buildToolsVersion "27.0.0"
然后 Clean-Rebuild-Restart-Run
。
阅读
答案 2 :(得分:2)
确保您的BuildToolsVersion已启用26
新的android studio 3.0经过必要的最小buildToolsVersion 26.0.0更新此版本的应用内模块gradle。
android {
compileSdkVersion 25
buildToolsVersion "26.0.3"
}
如果您看到buildtool not found错误,则需要安装此构建工具。
答案 3 :(得分:1)
确保这些行在App(模块)级别gradle文件中
buildToolsVersion
defaultConfig for App Configuration
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "com.example.app"
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
multiDexEnabled true
}
}