web-dev-qa-db-ja.com

META-INF / versions / 9 / module-info.class:壊れたクラスファイル? (この機能にはASM6が必要です)

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の場合のみ、許容される回答が必要になります。

7
Martin Zeitler

ファイル module-info.classはJavaから導入されたJavaモジュールシステムの一部です= [(Java $ === 9.に従って この問題 =Android IssueTracker、バグはAndroid Studio 3.4。

0
Eng.Fouad

すでに述べたように、これはJava 9で導入されました。そのAndroidはサポートしていません。packagingOptionsを使用してこれらのクラスを削除できます。

Android {
    packagingOptions {
        exclude "**/module-info.class"
    }
}

これは実際に実行されるコードに影響を与えないはずであり、lintがバイトコードで動作しているときにlintチェックのクラスを削除する必要もあります。

0
Blaz