Skip to content

编译失败:D8: Invalid stack map table at instruction 405 #1387

@VayneXPP

Description

@VayneXPP

执行:./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的方法,但并没有解决该问题。

@shifujun

附测试demo:https://github.com/VayneXPP/Shadow/tree/issue-Invalid-stack-map-table
提交:bc31ff2

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions