Android Gradleプラグインを3.1.4から3.2.xにアップグレードした後、次のような複数の警告が表示されます。
D8: Type `com.google.gson.reflect.TypeToken` was not found, it is required for default or static interface methods desugaring of `com.google.gson.reflect.TypeToken org.springframework.http.converter.json.GsonHttpMessageConverter.getTypeToken(Java.lang.reflect.Type)`
D8: Type `com.squareup.okhttp.MediaType` was not found, it is required for default or static interface methods desugaring of `com.squareup.okhttp.MediaType org.springframework.http.client.OkHttpClientHttpRequest.getContentType(org.springframework.http.HttpHeaders)`
D8: Type `org.Apache.http.impl.client.HttpClients` was not found, it is required for default or static interface methods desugaring of `void org.springframework.http.client.HttpComponentsClientHttpRequestFactory.<init>()`
D8: Interface `org.Apache.http.HttpEntity` not found. It's needed to make sure desugaring of `org.springframework.http.client.HttpComponentsStreamingClientHttpRequest$StreamingHttpEntity` is correct. Desugaring will assume that this interface has no default method.
D8: Type `org.conscrypt.Conscrypt` was not found, it is required for default or static interface methods desugaring of `okhttp3.internal.platform.Platform okhttp3.internal.platform.ConscryptPlatform.buildIfSupported()`
...
プロジェクトはJava 1.8ソース互換性(ラムダ)を使用しており、Android 3.2でデフォルトで有効になっているAGP gradleクラスdexerからの警告のようです.0。
次の行を使用してproguard-rules.pro
のこれらの警告を抑制しようとしましたが、何も機能しないようです。
-dontwarn com.google.gson.reflect.TypeToken
-keep class com.google.gson.reflect.TypeToken { *; }
-dontwarn org.Apache.http.**
-keep class com.squareup.okhttp.** { *; }
-dontwarn com.squareup.okhttp.**
-keep class org.springframework.http.client.** { *; }
-dontwarn org.springframework.http.client.**
消える警告を作成できる唯一の方法は、build.gradle
ファイルでminifyEnabled
およびuseProguard
をfalse
に設定することです
AGP 3.3.0-alpha13と新しいAGP 3.2.1を試しましたが、成功しませんでした。
https://github.com/mdawid/D8WarningTestからサンプルプロジェクトでリポジトリをクローンできます
Update:この問題はAndroid Gradle Plugin 3.5.0-beta05(問題を参照: D8脱糖中の警告を選択的に抑制する機能 )。
Android Gradle Plugins 3.2.1-3.4.1では、次の回避策を使用します。
From Android Gradle plugin .2.1 changelog :
D8での脱糖がデフォルトで有効になりました。
そのため、(プロジェクトのgradle.properties
ファイル内の)D8での脱糖を無効にする必要があります。
Android.enableD8.desugaring=false
R8を使用する場合:
R8は、ProGuardに代わるコードの縮小と難読化のための新しいツールです。プロジェクトの
gradle.properties
ファイルに以下を含めることにより、R8のプレビューバージョンの使用を開始できます。Android.enableR8 = true
(プロジェクトのgradle.properties
ファイル内の)R8での脱糖を無効にします:
Android.enableR8.desugaring=false
これは、このクラスがJava8で記述されているが、プロジェクトがJava7。でコンパイルされているためだと思うので、以下を更新します。
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
これは私の問題を修正します