我在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
。
使用旧版本(可能是用Java 8构建的,没有这样的处理错误:
// https://mvnrepository.com/artifact/org.bouncycastle
implementation "org.bouncycastle:bcprov-jdk15on:1.60"
implementation "org.bouncycastle:bcpkix-jdk15on:1.60"
此问题显然是在版本1.61
(使用Java 9构建的)中引入的。
也从两个JAR作品中删除versions/9/module-info.class
文件。
这可以通过Exec
任务来自动执行,这取决于:lint
。
[C0文件是自Java 9以来引入的Java模块系统的一部分。根据Android IssueTracker上的module-info.class
,此错误已从Android Studio 3.4开始修复。