32
Tôi đang sử dụng thư viện Retrofit2
.NoClassDefFoundError: Độ phân giải không thành công: Lokhttp3/internal/Platform
Tôi đã cố gắng để cập nhật phiên bản mới nhất: Retrofit2, Gson, Rxjava, OKHttp, HttpLoggingInterceptor ... trong build.gradle
tập tin
build.grade
trong ứng dụng
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
// Default - Android Component
testCompile 'junit:junit:4.12'
compile 'com.android.support:design:24.2.1'
compile 'com.android.support:appcompat-v7:24.2.1'
// Retrofit2 + Gson
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.google.code.gson:gson:2.6.2'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
compile 'com.squareup.okhttp3:logging-interceptor:3.3.0'
compile 'com.squareup.okhttp3:okhttp:3.4.1'
// RxJva
compile 'io.reactivex:rxandroid:1.2.0'
compile 'io.reactivex:rxjava:1.1.4'
}
Nhưng tôi đã nhận lỗi
> Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lokhttp3/internal/Platform;
at okhttp3.logging.HttpLoggingInterceptor$Logger$1.log(HttpLoggingInterceptor.java:112)
at okhttp3.logging.HttpLoggingInterceptor.intercept(HttpLoggingInterceptor.java:160)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
at internal.NetworkModule$1.intercept(NetworkModule.java:150)
ở bên dưới mã
Interceptor provideInterceptor(final Context context, final PreferenceStore preferenceStore) {
Interceptor headerAuthorizationInterceptor = new Interceptor() {
@Override
public okhttp3.Response intercept(Interceptor.Chain chain) throws IOException {
// Get Android ID
String android_id = Settings.Secure.getString(context.getContentResolver(),
Settings.Secure.ANDROID_ID);
// Get Application Version
String appVersion = "";
try {
PackageInfo packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
appVersion = packageInfo.versionName;
} catch (PackageManager.NameNotFoundException e) {
Timber.e("Cannot get app version");
}
/**
* Add header with following attributes as agree with Web Server
* - Token
* - "Android"
* - Release version
* - Model
* - App version
* - Android ID
*/
String token = preferenceStore.getAuthToken();
Timber.i("X-Asukabu-Token: %s", token);
// Add header to request
Request request = chain.request();
if (token != null)
request.headers().newBuilder()
.add("X-Asukabu-Token", token)
.add("X-Asukabu-Client-OS", "Android")
.add("X-Asukabu-Client-OS-Version", Build.VERSION.RELEASE)
.add("X-Asukabu-Client-Device", Build.MODEL)
.add("X-Asukabu-Client-App-Version", appVersion)
.add("X-Asukabu-Client-Device-ID", android_id)
.add("Accept","*/*")
.build();
else
request.headers().newBuilder()
.add("X-Asukabu-Client-OS", "Android")
.add("X-Asukabu-Client-OS-Version", Build.VERSION.RELEASE)
.add("X-Asukabu-Client-Device", Build.MODEL)
.add("X-Asukabu-Client-App-Version", appVersion)
.add("X-Asukabu-Client-Device-ID", android_id)
.add("Accept","*/*")
.build();
// ERROR IN THIS LINE : LINE 150
return chain.proceed(request);
}
};
return headerAuthorizationInterceptor;
}
build.gradle
trong dự án:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.0-rc2'
// Dagger 2
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
Những người biết lý do tại sao tôi đã nhận lỗi này?
Xin vui lòng cho tôi làm thế nào để sửa chữa nó,
Cảm ơn bạn,
Just thêm cùng một phiên bản trong cả hai thư viện. –
Nó không làm việc cho tôi! Tôi không có 'compile 'com.squareup.okhttp3: okhttp: 3.4.1'' –
Có thể, bạn có thư viện okhttp bên trong một thư viện khác. Có thể, trang bị thêm –