亲爱的Flutter社区成员们,
我正在苦思冥想一个看似简单的任务。我想在我的应用程序中添加Firebase身份验证。它在iOS上有效,但是当我尝试在Android上实现时,我总是会遇到以下错误:
使用x86编译的Android SDK模式下启动lib/main.dart... 初始化gradle... 解析依赖项... 运行 'gradlew assembleDebug'... 在项目 ':app'中的配置“compile”已过时,请改用“implementation”。registerResGeneratingTask已过时,请使用registerGeneratedFolders(FileCollection)registerResGeneratingTask已过时,请使用registerGeneratedFolders(FileCollection)registerResGeneratingTask已过时,请使用registerGeneratedFolders(FileCollection)项目':google_sign_in'中的配置“compile”已过时,请改用“implementation”。
失败: 任务执行失败 ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'。
出错了:java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
尝试: 运行--stacktrace选项可获取堆栈跟踪。运行--info或--debug选项以获取更多日志输出。
获取更多帮助请参考https://help.gradle.org
Gradle构建失败,共用时34秒,已结束: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
}
应用程序 build.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 Doctor的输出:
[✓] Flutter(在Mac OS X 10.13.2 17C88,区域设置为fr-BE,渠道为master) • Flutter位于 /Users/sergebesnard/flutter • Framework修订版4d2c2aaaa1(6天前),2017年12月27日07:30:31 -0800 • Engine修订版7c126001d8 • Tools Dart版本1.25.0-dev.11.0 • Engine 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 Runtime Environment(build 1.8.0_152-release-915-b08)
[✓] iOS工具链 - 用于iOS设备的开发(Xcode 9.2) • Xcode位于 /Applications/Xcode.app/Contents/Developer • Xcode 9.2,构建版本9C40b • ios-deploy 1.9.2 • CocoaPods版本1.3.1
[✓] Android Studio(版本3.0) • Android Studio位于 /Applications/Android Studio.app/Contents • Java版本OpenJDK Runtime Environment(build 1.8.0_152-release-915-b08)
[✓] IntelliJ IDEA Community Edition(版本2017.2.5) • Flutter插件版本18.0 • Dart插件版本172.4155.35
[✓] 连接的设备 • Android SDK为x86构建• emulator-5554• android-x86•Android 8.0.0(API 26)(模拟器)
显然,我对Android开发很新,并且不想成为专家才能使教程工作。我找到的每个解决方案都需要修改.gradle文件
,仅适用于react-native
。
感谢您的帮助!
build.gradle
的依赖在哪里? - Aditya