将 compile "com.google.firebase:firebase-firestore:11.4.2" 添加到我的构建后出现问题。
一旦我添加它,它还会将 com.google.common 等添加到我的 dex 文件中,该文件大约有 27k 额外引用,从而突破了 64k dex 限制。
有谁知道这是为什么或者我做错了什么?
将 compile "com.google.firebase:firebase-firestore:11.4.2" 添加到我的构建后出现问题。
一旦我添加它,它还会将 com.google.common 等添加到我的 dex 文件中,该文件大约有 27k 额外引用,从而突破了 64k dex 限制。
有谁知道这是为什么或者我做错了什么?
尝试将这些行添加到您的build.gradle
android {
defaultConfig {
...
minSdkVersion 21
targetSdkVersion 26
multiDexEnabled true
}
...
}
这将启用 multidex 模式,这将允许您超过 64k 限制。(在这里阅读更多)
如果您使用的 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
类,请尝试使用以下之一
只需覆盖 MultiDexApplication 类
public class MyApplication extends MultiDexApplication { ... }
使用该函数覆盖attachBaseContext
并安装 MultiDexinstall(Application)
public class MyApplication extends SomeOtherApplication {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
您没有做错任何事:Cloud Firestore 的 Android API 很大。我们将致力于在通向 GA 的道路上减少 SDK 大小。
同时,如果您的应用程序不平凡,则需要启用 multidex来构建。
我们实际上很少使用 com.google.common,因此您也可以通过保护您的应用程序来保证 64k 方法限制。
更新到 11.6.0 修复了这个问题