4

将 compile "com.google.firebase:firebase-firestore:11.4.2" 添加到我的构建后出现问题。

一旦我添加它,它还会将 com.google.common 等添加到我的 dex 文件中,该文件大约有 27k 额外引用,从而突破了 64k dex 限制。

有谁知道这是为什么或者我做错了什么?

4

3 回答 3

7

尝试将这些行添加到您的build.gradle

android {
    defaultConfig {
        ...
        minSdkVersion 21 
        targetSdkVersion 26
        multiDexEnabled true
    }
    ...
}

这将启用 multidex 模式,这将允许您超过 64k 限制。(在这里阅读更多)

API 低于 21

如果您使用的 API 级别低于 21,那么您还需要添加支持库

gradle.build:

dependencies {
    compile 'com.android.support:multidex:1.0.1'
}

android.manafest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapp">
    <application
            android:name="android.support.multidex.MultiDexApplication" >
        ...
    </application>
</manifest>

如果您使用自定义Application类,请尝试使用以下之一

解决方案 1

只需覆盖 MultiDexApplication 类

public class MyApplication extends MultiDexApplication { ... }

解决方案 2

使用该函数覆盖attachBaseContext并安装 MultiDexinstall(Application)

public class MyApplication extends SomeOtherApplication {
  @Override
  protected void attachBaseContext(Context base) {
     super.attachBaseContext(base);
     MultiDex.install(this);
  }
}
于 2017-10-06T22:02:48.613 回答
3

您没有做错任何事:Cloud Firestore 的 Android API 很大。我们将致力于在通向 GA 的道路上减少 SDK 大小。

同时,如果您的应用程序不平凡,则需要启用 multidex来构建。

我们实际上很少使用 com.google.common,因此您也可以通过保护您的应用程序来保证 64k 方法限制。

于 2017-10-06T22:00:39.887 回答
1

更新到 11.6.0 修复了这个问题

于 2017-11-17T10:22:52.630 回答