0

我的项目工作正常,直到昨天我决定使用 SendBird 作为聊天 API,所以我已经阅读了它的文档并添加到 gradle,登录工作正常,它编译并且运行没有错误,但是当我去一个活动时发出一个 http 请求(带改造),我的应用程序因这个堆栈跟踪而崩溃:

java.lang.NoClassDefFoundError:retrofit2.Utils

如果将 Sendbird 添加到 gradle,我只会收到此错误,如果我删除了 gradle 依赖项的 SendBird,则不会发生此错误。我不知道为什么会这样,但这是我的 build.gradle(应用程序级别):

apply plugin: 'com.android.application'

android {
compileSdkVersion 24
buildToolsVersion "24"
useLibrary 'org.apache.http.legacy'

defaultConfig {
    applicationId "com.testdevelop.app.br"
    minSdkVersion 14
    multiDexEnabled true
    targetSdkVersion 24
    versionCode 91
    versionName "2.0.4"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    debug {
        debuggable true
        minifyEnabled false
    }
}


dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:24.1.1'
compile 'com.android.support:design:24.1.1'
compile 'com.android.support:support-v4:24.1.1'
compile 'com.android.support:multidex:1.0.1'
compile 'com.google.android:flexbox:0.2.2'
compile 'com.google.android.gms:play-services-gcm:9.2.1'
compile 'com.google.android.gms:play-services-analytics:9.2.1'
compile 'com.google.android.gms:play-services-appindexing:9.2.1'
compile 'com.google.android.gms:play-services-auth:9.2.1'
compile 'com.google.code.gson:gson:2.7'
compile 'com.daimajia.swipelayout:library:1.2.0@aar'
compile 'com.afollestad.material-dialogs:core:0.8.6.1'
compile 'com.mixpanel.android:mixpanel-android:4.9.1'
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
compile 'com.facebook.android:facebook-android-sdk:4.5.0'
compile 'joda-time:joda-time:2.9.4'
compile 'com.nispok:snackbar:2.11.+'
compile 'com.sendbird.sdk:sendbird-android-sdk:3.0.0'
compile files('libs/universal-image-loader-1.9.1.jar')
}

提前致谢。

4

1 回答 1

1

通过创建包含 SendBird 和 Retrofit 库的简单 Android 项目,我已经使用 Retrofit 测试了 SendBird SDK。

我没有发现任何错误来运行它。

您似乎忘记为您的 Retrofit 库更新 Proguard 规则。

这是改造建议的 Proguard 规则。http://square.github.io/retrofit/

# Platform calls Class.forName on types which do not exist on Android to determine platform.
-dontnote retrofit2.Platform
# Platform used when running on RoboVM on iOS. Will not be used at runtime.
-dontnote retrofit2.Platform$IOS$MainThreadExecutor
# Platform used when running on Java 8 VMs. Will not be used at runtime.
-dontwarn retrofit2.Platform$Java8
# Retain generic type information for use by reflection by converters and adapters.
-keepattributes Signature
# Retain declared checked exceptions for use by a Proxy instance.
-keepattributes Exceptions
于 2016-09-12T11:35:56.920 回答