sensorsdata / sa-sdk-android-plugin2

神策数据官方 Android 埋点插件,用于 Android 端的数据采集。通过使用字节码插桩(ASM)的技术实现 Android 端的全埋点(无埋点、无码埋点、无痕埋点、自动埋点)。
http://opensource.sensorsdata.cn
Other
438 stars 150 forks source link

AGP 4.2.1以后报好多警告信息Expected stack map table for method with non-linear control flow #17

Closed qq549631030 closed 1 year ago

qq549631030 commented 3 years ago

AGPBI: {"kind":"warning","text":"Expected stack map table for method with non-linear control flow.","sources":[{"file":"D:\source\TxxyAndroid\app\build\intermediates\transforms\sensorsAnalyticsAutoTrack\txxyDev1\debug\199.jar"}],"tool":"D8"}

GvcZhang commented 3 years ago

这个问题是 AGP 校验 class 文件的 StackMapTable 属性导致的,之前版本 AGP 是不校验这个属性的,不过对结果没有影响。你可以确认一下不使用我们插件,是否还有这些问题

qq549631030 commented 3 years ago

确认过注释掉神策的插件就没有问题,你们有办法解决吗?编译一下几千个警告,编译速度也受影响

GvcZhang commented 3 years ago

这个问题,我们内部沟通一下,预计周一回复您。

GvcZhang commented 3 years ago

目前对此问题进行了分析,原因如前面所述,将会在后面的版本对此问题进行修正。

likfe commented 2 years ago

目前对此问题进行了分析,原因如前面所述,将会在后面的版本对此问题进行修正。

请问是否有具体的时间表呢?遇到了同样的问题。

dengshiwei commented 2 years ago

@likfe 由于方案影响范围大,初步预估是在 11 月底完成。

likfe commented 2 years ago

请问是否有进展了?

dengshiwei commented 2 years ago

@likfe 目前已在 QA 测试了,预计本周内发布

qq549631030 commented 2 years ago

@dengshiwei 看到3.4.5版本发布了,但是仓库上显示没有

dengshiwei commented 2 years ago

@qq549631030 目前 maven 版本一直报异常,还在尝试发往 maven,暂时先使用本地 repo 包集成吧。

dengshiwei commented 2 years ago

@qq549631030 @likfe maven 版本 v3.4.5 已发布,可以进行引用使用了。

qq549631030 commented 2 years ago

大部份警告消除了,不过还有几个还在,不知道是插件问题,还是那些库本身的问题 AGPBI: {"kind":"warning","text":"Invalid stack map table at 25: goto L?, error: Source locals {0:Initialized(androidx.core.app.NotificationManagerCompat),1:Initialized(java.lang.String),2:Initialized(int),3:Initialized(android.app.Notification)} have different local indices than {0:Initialized(androidx.core.app.NotificationManagerCompat),1:Initialized(java.lang.String),2:Initialized(int),3:Initialized(android.app.Notification),4:Initialized(android.app.Notification),5:Initialized(int),6:Initialized(java.lang.String)}."

AGPBI: {"kind":"warning","text":"Invalid stack map table at 11: ifeq L?, error: Source locals {0:Initialized(com.just.agentweb.AgentWebView),1:Initialized(java.util.Iterator)} have different local indices than {0:Initialized(com.just.agentweb.AgentWebView),1:top,2:top,3:Initialized(java.lang.String),4:Initialized(com.just.agentweb.AgentWebView)}."

AGPBI: {"kind":"warning","text":"Invalid stack map table at 36: ifeq L?, error: Source locals {0:Initialized(com.just.agentweb.UrlLoaderImpl),1:Initialized(java.lang.String),2:Initialized(java.util.Map)} have different local indices than {0:Initialized(com.just.agentweb.UrlLoaderImpl),1:Initialized(java.lang.String),2:Initialized(java.util.Map),3:Initialized(java.lang.String),4:Initialized(android.webkit.WebView)}.

AGPBI: {"kind":"warning","text":"Invalid stack map table at 2: ifne L?, error: Source locals {0:Initialized(com.tencent.mm.opensdk.openapi.BaseWXApiImplV10)} have different local indices than {0:top,1:top,2:Initialized(int),3:Initialized(android.content.Intent),4:Initialized(int),5:Initialized(android.content.Context)}.

AGPBI: {"kind":"warning","text":"Invalid stack map table at 6: ifnull L?, error: Source locals {0:Initialized(com.alipay.sdk.widget.e)} have different local indices than {0:top,1:Initialized(java.lang.String),2:Initialized(android.webkit.WebView)}

dengshiwei commented 2 years ago

@qq549631030 不是库的问题,这个我们测试的过程中也遇到了,原因是 ASM 修改了字节码(局部变量表),此时 Android Plugin 发现改变会给出如下的警告。目前这类的修改还无法处理。

KingsleyWu commented 2 years ago

D8 和 R8 都会出现这个,由于这个log非常多,导致在 gitlab 跑 ci 时,出现log显示不全的问题,这样需要重新配置 log 输出大小

WangZhen0908 commented 2 years ago

AGP 7.0.2 gradle 7.0.2 神策SDK:6.2.2 神策插件:3.4.7

依然报这个警告

bobSir commented 2 years ago

@WangZhen0908 +1 这个警告有计划解决么

GvcZhang commented 2 years ago

AGP 7.0.2 gradle 7.0.2 神策SDK:6.2.2 神策插件:3.4.7

依然报这个警告

神策插件已经经过优化,正常情况下不会有过多的警告。有一些是其他插件处理 .class 时产生的问题。可以先将神策插件注释掉,然后再查看是否还是有非常多的警告。可以先通过这种方式排除一下产生警告过多的插件。

GvcZhang commented 2 years ago

@WangZhen0908 +1 这个警告有计划解决么

请关注一下上述回复。