【发布时间】:2018-06-12 03:45:25
【问题描述】:
亲爱的 Flutter 社区,
我正在努力完成一项看似简单的任务。
我想在我的应用程序中添加firebase 身份验证。它适用于iOS,但当我尝试为android 实现它时,我系统地得到了错误:
在为 x86 构建的 Android SDK 上以调试模式启动 lib/main.dart... 正在初始化 gradle... 解决依赖关系... 运行 'gradlew assembleDebug'... 项目 ':app' 中的配置 'compile' 是 已弃用。请改用“实施”。 registerResGeneratingTask 是 已弃用,使用 registerGeneratedFolders(FileCollection) registerResGeneratingTask 已弃用,请使用 registerGeneratedFolders(FileCollection) registerResGeneratingTask 是 已弃用,使用 registerGeneratedFolders(FileCollection) 配置 项目“:google_sign_in”中的“编译”已弃用。采用 改为“实施”。
FAILURE:构建失败并出现异常。
出了什么问题:任务 ':app:transformDexArchiveWithExternalLibsDexMergerForDebug' 执行失败。
java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: 无法合并 索引
尝试:使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。
通过https://help.gradle.org获得更多帮助
BUILD FAILED in 34s Finished with error: Gradle build failed: 1
我使用'flutter create' 重现了错误,然后在codelab 之后添加Firebase 功能
https://codelabs.developers.google.com/codelabs/flutter-firebase/#4
这里是对pubspec.yaml的唯一修改
dependencies:
flutter:
sdk: flutter
google_sign_in: 0.3.1 # ONLY MODIFICATION
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^0.1.0
一般build.gradle:
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
classpath 'com.google.gms:google-services:3.1.0' #ONLY MODIF
}
}
allprojects {
repositories {
google()
jcenter()
}
}
rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
project.evaluationDependsOn(':app')
}
task clean(type: Delete) {
delete rootProject.buildDir
}
应用构建.gradle:
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withInputStream { stream ->
localProperties.load(stream)
}
}
def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}
apply plugin: 'com.android.application'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
android {
compileSdkVersion 26
buildToolsVersion '26.0.3'
lintOptions {
disable 'InvalidPackage'
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.mycompany.test"
minSdkVersion 16
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig signingConfigs.debug
}
}
}
flutter {
source '../..'
}
dependencies {
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}
apply plugin: 'com.google.gms.google-services'
这是颤振医生的输出:
[✓] Flutter(在 Mac OS X 10.13.2 17C88 上,语言环境 fr-BE,频道主控) • Flutter 在 /Users/sergebesnard/flutter • 框架修订 4d2c2aaaa1(6 天前),2017-12-27 07:30:31 -0800 • 引擎修订版 7c126001d8 • 工具 Dart 版本 1.25.0-dev.11.0 • 引擎 Dart 版本 2.0.0-edge.9e8a3e2d31621c1bdf6139d068e7898a2ac2ab5a
[✓] Android 工具链 - 为 Android 设备开发(Android SDK 27.0.2) • Android SDK 位于 /Users/sergebesnard/Library/Android/sdk • 未配置 Android NDK 位置(可选;对原生分析支持有用) • 平台 android-27,构建工具 27.0.2 • Java 二进制文件位于:/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java • Java 版 OpenJDK 运行时环境(内部版本 1.8.0_152-release-915-b08)
[✓] iOS 工具链 - 为 iOS 设备开发 (Xcode 9.2) • Xcode 位于 /Applications/Xcode.app/Contents/Developer • Xcode 9.2,内部版本 9C40b • ios 部署 1.9.2 • CocoaPods 1.3.1 版
[✓] Android Studio(3.0版) • Android Studio 位于 /Applications/Android Studio.app/Contents • Java 版 OpenJDK 运行时环境(内部版本 1.8.0_152-release-915-b08)
[✓] IntelliJ IDEA 社区版(2017.2.5 版) • Flutter 插件版本 18.0 • Dart 插件版本 172.4155.35
[✓] 连接的设备 • 为 x86 构建的 Android SDK • emulator-5554 • android-x86 • Android 8.0.0 (API 26)(模拟器)
我显然是 Android 开发的新手,并且不希望成为专家来使教程正常工作。我发现的每个解决方案都需要修改.gradle files,并且仅适用于react-native。
感谢您的帮助!
【问题讨论】:
-
build.gradle的依赖在哪里? -
我应该补充一下我还没有修改源代码,在上面的修改之前它就像一个魅力。
-
@Heisen-Berg,你指的是什么?我复制了整个内容,每个文件都有依赖关系。
-
我遇到了这个问题,尽管我使用了所有最新的库,我发现特别是在应用程序 build.gradle 底部包含应用插件行是导致失败
标签: android firebase android-gradle-plugin flutter