Bouncycastleで問題が発生しています。これは:lint
タスクを実行しているときにのみ発生します。
一般的には、Java 9バイトコードバージョン53.0/ [〜#〜] asm [〜#〜] バージョンの競合のようです。
これらは依存関係です:
// https://mvnrepository.com/artifact/org.bouncycastle
implementation "org.bouncycastle:bcprov-jdk15on:1.64"
implementation "org.bouncycastle:bcpkix-jdk15on:1.64"
これにより、:lint
タスクが処理エラーをスローします。
> Task :mobile:lint
Error processing bcpkix-jdk15on-1.64.jar:META-INF/versions/9/module-info.class: broken class file? (This feature requires ASM6)
Error processing bcprov-jdk15on-1.64.jar:META-INF/versions/9/module-info.class: broken class file? (This feature requires ASM6)
META-INF/versions/9/module-info.class:壊れたクラスファイル? (この機能にはASM6が必要です)
おそらく「壊れたクラスファイル」は偽のエラーメッセージであり、module-info.class
をデコードできません。問題は、どのようにASM6を提供するかです。これは古いバージョンでは発生しないため(私の回答を参照)、現在のバージョン1.64
の場合のみ、許容される回答が必要になります。
ファイル module-info.class
はJavaから導入されたJavaモジュールシステムの一部です= [(Java $ === 9.に従って この問題 =Android IssueTracker、バグはAndroid Studio 3.4。
すでに述べたように、これはJava 9で導入されました。そのAndroidはサポートしていません。packagingOptions
を使用してこれらのクラスを削除できます。
Android {
packagingOptions {
exclude "**/module-info.class"
}
}
これは実際に実行されるコードに影響を与えないはずであり、lintがバイトコードで動作しているときにlintチェックのクラスを削除する必要もあります。