我正在我的应用中采用 google Places sdk 的新更新。我使用以下版本。但我遇到了问题。我不知道问题的原因是什么。我不知道错误中提到的 FinalizableReferenceQueue 是什么。
dependencies {
implementation 'com.google.android.libraries.places:places:1.0.0'
}
构建项目时没有错误。只有运行项目时才会显示错误。我正在使用 Android Studio。
Multiple dex files define Lcom/google/common/base/FinalizableReferenceQueue;
答案1
经过反复试验,每次评论一个依赖项,我终于找到了问题所在。
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
useLibrary 'org.apache.http.legacy'
defaultConfig {
applicationId "xxx.com.xxx"
minSdkVersion 15
targetSdkVersion 26
versionCode 201811141
versionName "2018.11.14.1"
multiDexEnabled true
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation 'com.google.android.libraries.places:places:1.0.0'
implementation 'com.android.support:multidex:1.0.3'
implementation 'com.google.maps.android:android-maps-utils:0.4+'
implementation files('libs/acra-4.5.0.jar')
implementation 'com.squareup.retrofit2:retrofit:2.3.0'
implementation 'com.squareup.okhttp3:logging-interceptor:3.6.0'
implementation 'com.squareup.okhttp3:okhttp:3.6.0'
implementation 'com.squareup.retrofit2:converter-gson:2.0.2'
implementation 'com.android.support:cardview-v7:26.+'
implementation 'com.android.support:recyclerview-v7:26.+'
implementation 'com.android.support:design:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
// App's dependencies, including test
implementation 'com.android.support:support-annotations:27.1.1'
implementation 'org.apache.httpcomponents:httpcore:4.4.1'
implementation 'com.toptoche.searchablespinner:searchablespinnerlibrary:1.3.1'
implementation project(':aFileChooser')
}
//This are all the libraries that I commented to fixed the issue.
//implementation fileTree(include: ['*.jar'], dir: 'libs')//this will give mutidex error
//implementation files('libs/droid-fu-1.0-SNAPSHOT.jar')
//implementation files('libs/android-async-http-1.4.9.jar')
//compile 'com.squareup.retrofit2:converter-scalars:2.0.0'
//implementation 'cz.msebera.android:httpclient:4.3.6' //this will give error if use
答案2
如果其他人遇到这个问题,我会提供更多的解释......
根本原因是项目将 DroidFu 预编译为 JAR 并将其作为依赖项包含在内,这会打包一些 Guava 类而无需重新标记包路径,从而导致与 Places SDK 库中的 Guava 依赖项发生版本冲突。
想要注意这一点,因为这可能是依赖 Guava 的其他项目的一个问题。