荣耀联运客户端 SDK 刚出来不就,看文档第一个对外版本也就是 2023 年 8 月,所以最近开始接入,中间也遇到了一些麻烦折腾了不少时间。
正常的登录提示 UI 是这样的,能够完整的显示 UI 部分(此前是通过定制化混淆
出包)
错误的登录提示 UI 是这样的,显示一小部分,提示语都不完整
1、和荣耀技术沟通(沟通未果,对方也需要时间排查,但我们着急出包啊~)
2、质疑可能是定制化混淆问题(自己排查咯,因为不适用定制化混淆插件出包是正常的,排查方向就有两个)
????2.1 微信资源混淆,布局、控件问题?(就是配置资源混淆白名单,因为是荣耀 SDK 的布局显示,有点盲目配置,最终未果)
????2.2 代码混淆问题?(对方技术说:荣耀 SDK 加载 assets 目录下的某个插件失败导致。资源白名单配置一番未果,在想是不是没有 keep 荣耀的某些代码导致的?)
这里的 定制化混淆
其实大概描述就是:
com.primer.Animal
和一个方法 sayHello
,我想把它随机混淆成指定的 com.android.Hello
,当然 Animal 里面的方法、字段也可以执行映射关系,如下:)com.primer.Animal -> com.android.Hello:
void sayHello(java.lang.String) -> sayGoodBy
查看联运 SDK aar 里面带的混淆规则主要是针对包名 com.hihonor
,再 aar 都有哪些包名:
除了显眼的 com.hihonor
,诸如其他 android.s49gmc、androidx.s49gmc、s05gmc
等等缺失有点不一样,那么对比下联运 SDK、异常包、正常包三个的包名目录有没有特殊区别:
有一点不一样吧,定制化混淆的包部分联运代码被优化移除了,因为是他们的代码,只能摸着石头过河,而且他们的混淆规则也没有对诸如 android.s49gmc
的 keep 规则,索性自己补充规则打包看看~~~
打包、运行,登录显示正常 Σ(⊙▽⊙"a
那就这样吧,不细究缘由,等渠道优化,先临时解决
这是根据荣耀 SDK 补充的新规则
#====================== begin for honro
# 这些规则都是根据荣耀联运 SDK 包名所编写,简单得找包名前缀
#(对于混淆规则配置,我认为是最小化精准控制是较好的,别一上来就是写个超大范围的规则,如 keep com.org.**{*;})
# 说到这里我就想吐槽 ohayoo sdk 的混淆规则,真是不做修剪,向对方提过一次建议,不知道后来的版本有没有修改
-keep class com.hihonor.**{*;}
-keep class com.s49gmc.**{*;}
-keep class androidx.s49gmc.**{*;}
-keep class android.s49gmc.**{*;}
-keep class kotlin.s_c_.**{*;}
-keep class kotlin.s0*.**{*;}
-keep class kotlin.s4*.**{*;}
-keep class kotlin.s5*.**{*;}
-keep class kotlin.s7*.**{*;}
-keep class kotlin.s8*.**{*;}
-keep class kotlin.s9*.**{*;}
-keep class kotlin.sgc*.**{*;}
-keep class kotlin.shn*.**{*;}
-keep class s0*.**{*;}
-keep class s1*.**{*;}
-keep class s2*.**{*;}
-keep class s3*.**{*;}
-keep class s4*.**{*;}
-keep class s5*.**{*;}
-keep class s6*.**{*;}
-keep class s7*.**{*;}
-keep class s8*.**{*;}
-keep class s9*.**{*;}
-keep class sgc*.**{*;}
-keep class shn*.**{*;}
-keep class android.p33*.**{*;}
-keep class p0*.**{*;}
-keep class p1*.**{*;}
-keep class p2*.**{*;}
-keep class p3*.**{*;}
-keep class p4*.**{*;}
-keep class p5*.**{*;}
-keep class p6*.**{*;}
-keep class p7*.**{*;}
-keep class p8*.**{*;}
-keep class p9*.**{*;}
-keepclasseswithmembernames,includedescriptorclasses class com.hihonor.** {
*;
}
-keepclasseswithmembernames,includedescriptorclasses class kotlin.** {
*;
}
-keepclasseswithmembernames class s847gmc.s49gmc.** {
*;
}
-keepclasseswithmembernames class s901gmc.s49gmc.** {
*;
}
-keepclasseswithmembernames class sgc2.** {
*;
}
-keepclasseswithmembernames class shngc.s49gmc.** {
*;
}
-keepclasseswithmembernames class sgcgc2.** {
*;
}
-keepclasseswithmembernames class com.s49gmc.s49gmc.** {
*;
}
-keepclasseswithmembernames class org.bouncycastle.pkix.** {
*;
}
-keepclasseswithmembernames class s05gmc.s49gmc.s49gmc.s49gmc.s49gmc.** {
*;
}
-keepclasseswithmembernames class s49gmc.s49gmc.s49gmc.s49gmc.** {
*;
}
-keepclasseswithmembernames class android.s49gmc.** {
*;
}
-keepclasseswithmembernames class android.app.** {
*;
}
-keepclasseswithmembernames class android.view.** {
*;
}
-keepclasseswithmembernames class android.widget.** {
*;
}
-keepclasseswithmembernames class s847gmc.** {
*;
}
#====================== end for honro
这里主要是想对你说:当你遇到问题时,不要惊慌失措,要静下心来思考,并勇于面对问题,积极寻求解决方案。
在职场中能够快速、准确排查分析并解决问题,往往更容易得到同事的认可。