Mar*_*hov 23 android gradle firebase build.gradle android-gradle-plugin
我遇到了Firebase集成的问题.首先,我在根级build.gradle文件中添加了规则:
buildscript {
repositories {
maven { url "http://dl.bintray.com/populov/maven" }
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.2'
classpath 'com.google.gms:google-services:3.0.0'
}
}
allprojects {
repositories {
maven { url "http://dl.bintray.com/populov/maven" }
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
Run Code Online (Sandbox Code Playgroud)
和模块Gradle文件:
apply plugin: 'com.android.application'
android {
compileSdkVersion 24
buildToolsVersion "24"
defaultConfig {
applicationId "com.example.app"
minSdkVersion 14
targetSdkVersion 24
versionCode 2
versionName "0.9"
}
buildTypes {
///
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.google.firebase:firebase-core:9.0.2'
compile 'com.google.firebase:firebase-crash:9.0.2'
}
apply plugin: 'com.google.gms.google-services'
Run Code Online (Sandbox Code Playgroud)
在项目构建期间,我收到错误:
错误:将字节码转换为dex时出错:原因:com.android.dex.DexException:多个dex文件定义Lcom/google/firebase/FirebaseException;
错误原因很明显,但我没有编译任何库两次.我应该FirebaseException手动从构建过程中排除类吗?如果是这样,怎么样?也许这是Firebase依赖项中的一个错误?
谢谢.
mp3*_*415 13
我有react-native-google-signin模块这个问题.由于指令如何修改build.gradle通常不是最新的,不完整的或仅在多个不相关的项目中定义,项目仅在从react-native-google-signin示例项目复制设置后编译.事实证明,语句的顺序和exclude group命令都很重要.最终结果如下(in app/build.gradle):
dependencies {
...
compile 'com.google.android.gms:play-services-auth:9.2.1'
compile(project(":react-native-google-signin")) {
exclude group: "com.google.android.gms"
}
}
task copyDownloadableDepsToLibs(type: Copy) {
from configurations.compile
into 'libs'
}
apply plugin: 'com.google.gms.google-services'
Run Code Online (Sandbox Code Playgroud)
顶部像往常一样build.gradle包含一个额外的gms类路径:
buildscript {
repositories {
jcenter()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.2'
classpath 'com.google.gms:google-services:3.0.0'
}
}
Run Code Online (Sandbox Code Playgroud)
完成这些更改后,没有任何Multiple dex错误.
FireBase 是一个庞大的库,因此您需要在您的应用程序中启用多索引支持。
dependencies {
compile ('com.google.firebase:firebase-core:9.0.2') {
exclude module: 'play-services-base'
exclude module: 'support-v4'
exclude module: 'support-annotations'
}
compile 'com.android.support:multidex:1.0.1'
}
defaultConfig {
// Enabling multidex support.
multiDexEnabled true
}
Run Code Online (Sandbox Code Playgroud)
看起来您已达到方法计数限制。尝试删除firebase依赖项并检查应用程序的方法计数(例如,使用此 gradle 插件(如果不删除这些依赖项,您将根本无法构建项目,因此,要使用方法计数插件) 。
Firebase是一个巨大的库- 超过 17k 个方法。这取决于很多东西。您可以做的一件事是通过单击“methodscount.com”上的此按钮来检查依赖项列表:

如果您的项目中已经有其中一些,您可以尝试排除它们:
compile ('com.google.firebase:firebase-core:9.0.2') {
exclude module: 'play-services-base'
exclude module: 'support-v4'
exclude module: 'support-annotations'
}
Run Code Online (Sandbox Code Playgroud)
如果这没有帮助,那么您可能需要为您的项目配置 multidex。
| 归档时间: |
|
| 查看次数: |
20149 次 |
| 最近记录: |