-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Description
执行:./gradlew :test-none-dynamic-host:assembleDebug 任务时,编译失败
报错日志如下:
Task :test-plugin-general-cases:dexBuilderPluginDebug
WARNING:/Shadow/projects/test/plugin/general-cases/test-plugin-general-cases/build/intermediates/transforms/ShadowTransform/plugin/debug/83.jar: D8: Invalid stack map table at instruction 405: invokespecial javax.crypto.spec.IvParameterSpec.([BII)V, error: Could not assign '{0:Initialized(javax.crypto.spec.SecretKeySpec),1:Initialized(byte[]),2:Initialized(javax.crypto.spec.SecretKeySpec),3:int,4:Initialized(javax.crypto.spec.SecretKeySpec),5:Initialized(javax.crypto.spec.SecretKeySpec),6:Initialized(javax.crypto.spec.IvParameterSpec),7:uninitialized new,8:Initialized(java.lang.String),9:int,10:Initialized(byte[]),11:int,12:int,13:Initialized(byte[]),14:Initialized(java.security.MessageDigest),15:Initialized(java.security.MessageDigest)}' to '{0:oneword,1:Initialized(byte[]),2:Initialized(java.lang.Object),3:oneword,4:Initialized(javax.crypto.spec.SecretKeySpec),5:Initialized(javax.crypto.spec.SecretKeySpec),6:oneword,7:Initialized(javax.crypto.spec.IvParameterSpec),8:Initialized(java.lang.String),9:oneword,10:Initialized(byte[]),11:oneword,12:int,13:Initialized(byte[]),14:Initialized(java.security.MessageDigest),15:Initialized(java.security.MessageDigest)}'. The local at index 7 with 'uninitialized new' not being assignable to 'Initialized(javax.crypto.spec.IvParameterSpec)'.
WARNING:/Shadow/projects/test/plugin/general-cases/test-plugin-general-cases/build/intermediates/transforms/ShadowTransform/plugin/debug/83.jar: D8: Invalid stack map table at instruction 111: invokespecial java.util.Hashtable.(I)V, error: Could not assign '{0:Initialized(com.tencent.kona.sun.security.provider.JavaKeyStore),1:int,2:Initialized(char[]),3:Initialized(java.util.Hashtable),4:Initialized(java.security.MessageDigest),5:null,6:uninitialized new,7:int,8:int,9:Initialized(java.io.DataInputStream)}' to '{0:Initialized(java.lang.Object),1:oneword,2:Initialized(char[]),3:Initialized(java.util.Hashtable),4:Initialized(java.security.MessageDigest),5:Initialized(java.lang.Object),6:Initialized(java.util.Hashtable),7:int,8:int}'. The local at index 6 with 'uninitialized new' not being assignable to 'Initialized(java.util.Hashtable)'.
....
ERROR:/Shadow/projects/test/plugin/androidx-cases/test-plugin-androidx-cases/build/intermediates/transforms/ShadowTransform/plugin/debug/0.jar: D8: java.lang.NullPointerException: Cannot read field "d" because "" is null
.....
请问这个原因是什么导致的呢?似乎是引入的 SDK(AAR 文件中)包含了一些 class 字节码格式不合法或不兼容 D8 的类?尤其是下面这些类异常频繁:
com.tencent.kona.sun.security.ssl.SSLSessionImpl
com.tencent.kona.sun.security.ssl.HandshakeContext
com.tencent.kona.sun.security.ssl.CertStatusExtension
com.tencent.kona.sun.security.util.ObjectIdentifier
javax.crypto.spec.IvParameterSpec
我尝试了使用该issue#1196的解决方案,使用提交9ca4121的方法,但并没有解决该问题。
附测试demo:https://github.com/VayneXPP/Shadow/tree/issue-Invalid-stack-map-table
提交:bc31ff2