Android_CN_OAID icon indicating copy to clipboard operation
Android_CN_OAID copied to clipboard

急!线上大面积华为,荣耀用户突遇崩溃!!! No imolementation found for boolean com,huawei.hms.ads,identifier,AdvertisingIdclient,isAdvertisingIdAvailable(android,content.Context)

Open GuoLiangjun123 opened this issue 10 months ago • 13 comments

1.cnoaid配置如下
implementation('com.github.gzu-liyujiang:Android_CN_OAID:4.2.8') { // 排除掉本项目依赖的华为官方广告标识服务SDK,也即是使用移动安全联盟SDK依赖的华为官方广告标识服务SDK exclude group: 'com.huawei.hms', module: 'ads-identifier' // 荣耀官方广告标识服务SDK同理: exclude group: 'com.hihonor.mcs', module: 'ads-identifier' }

2.同时也使用了安全联盟的oaid,版本为2.3.0

3.线上崩溃堆栈如下: java.lang.UnsatisfiedLinkError: No implementation found for boolean com.hihonor.ads.identifier.AdvertisingIdClient.isAdvertisingIdAvailable(android.content.Context) (tried Java_com_hihonor_ads_identifier_AdvertisingIdClient_isAdvertisingIdAvailable and Java_com_hihonor_ads_identifier_AdvertisingIdClient_isAdvertisingIdAvailable__Landroid_content_Context_2) at com.hihonor.ads.identifier.AdvertisingIdClient.isAdvertisingIdAvailable(Native Method) at com.github.gzuliyujiang.oaid.impl.HonorImpl.supported(SourceFile:2) at com.github.gzuliyujiang.oaid.impl.OAIDFactory.createManufacturerImpl(SourceFile:15) at com.github.gzuliyujiang.oaid.impl.OAIDFactory.create(SourceFile:4) at com.github.gzuliyujiang.oaid.DeviceID.getOAID(SourceFile:2) at com.github.gzuliyujiang.oaid.DeviceID.getOAIDOrOtherId(SourceFile:1) at com.github.gzuliyujiang.oaid.DeviceID.register(SourceFile:12) at com.github.gzuliyujiang.oaid.DeviceIdentifier.register(SourceFile:7) at com.github.gzuliyujiang.oaid.DeviceIdentifier.register(SourceFile:3)

oaid报错

at com.github.gzuliyujiang.oaid.DeviceIdentifier.register(SourceFile:1

GuoLiangjun123 avatar Apr 12 '24 07:04 GuoLiangjun123

No implementation found for boolean com.hihonor.ads.identifier.AdvertisingIdClient.isAdvertisingIdAvailable说明荣耀的SDK没打包进去,是不是安全联盟的oaid没依赖到了荣耀的SDK?

liyujiang-gzu avatar Apr 14 '24 15:04 liyujiang-gzu

No implementation found for boolean com.hihonor.ads.identifier.AdvertisingIdClient.isAdvertisingIdAvailable说明荣耀的SDK没打包进去,是不是安全联盟的oaid没依赖到了荣耀的SDK?

我们直接在安全联盟官网上下载的oaid的aar,这个我们怎么验证是否依赖了荣耀sdk

GuoLiangjun123 avatar Apr 18 '24 02:04 GuoLiangjun123

AdvertisingIdClient

对比了下混淆配置,应该是漏掉了-keep class com.hihonor.ads.** {; } 和 -keep interface com.huawei.hms.** {;}

GuoLiangjun123 avatar Apr 18 '24 02:04 GuoLiangjun123

AdvertisingIdClient

对比了下混淆配置,应该是漏掉了-keep class com.hihonor.ads.** {; } 和 -keep interface com.huawei.hms.** {;}

问题解决了吗?

godcop avatar Apr 18 '24 07:04 godcop

AdvertisingIdClient

对比了下混淆配置,应该是漏掉了-keep class com.hihonor.ads.** {; } 和 -keep interface com.huawei.hms.** {;}

问题解决了吗?

发版待验证

GuoLiangjun123 avatar Apr 18 '24 09:04 GuoLiangjun123

AdvertisingIdClient

对比了下混淆配置,应该是漏掉了-keep class com.hihonor.ads.** {; } 和 -keep interface com.huawei.hms.** {;}

本库模块专用的混淆规则(注:“repeackage”拼写是历史遗留问题)

-keep class repeackage.com.uodis.opendevice.aidl.** { ; } -keep interface repeackage.com.uodis.opendevice.aidl.* { ; } -keep class repeackage.com.asus.msa.SupplementaryDID.* { ; } -keep interface repeackage.com.asus.msa.SupplementaryDID.* { ; } -keep class repeackage.com.bun.lib.* { ; } -keep interface repeackage.com.bun.lib.* { ; } -keep class repeackage.com.heytap.openid.* { ; } -keep interface repeackage.com.heytap.openid.* { ; } -keep class repeackage.com.samsung.android.deviceidservice.* { ; } -keep interface repeackage.com.samsung.android.deviceidservice.* { ; } -keep class repeackage.com.zui.deviceidservice.* { ; } -keep interface repeackage.com.zui.deviceidservice.* { ; } -keep class repeackage.com.coolpad.deviceidsupport.* { ; } -keep interface repeackage.com.coolpad.deviceidsupport.* { ; } -keep class repeackage.com.android.creator.* { ; } -keep interface repeackage.com.android.creator.* { ; } -keep class repeackage.com.google.android.gms.ads.identifier.internal.* { ; } -keep interface repeackage.com.google.android.gms.ads.identifier.internal. { ; } -keep class repeackage.com.oplus.stdid.* {; } -keep interface repeackage.com.oplus.stdid.** {; } -keep class com.huawei.hms.ads.** {; } -keep interface com.huawei.hms.ads.** {; } -keep class com.hihonor.ads.** {; } -keep interface com.hihonor.ads.** {; } -keep class repeackage.com.qiku.id.** { ; } -keep interface repeackage.com.qiku.id.* { *; }

liyujiang-gzu avatar Apr 19 '24 04:04 liyujiang-gzu

AdvertisingIdClient

对比了下混淆配置,应该是漏掉了-keep class com.hihonor.ads.** {; } 和 -keep interface com.huawei.hms.** {;}

本库模块专用的混淆规则(注:“repeackage”拼写是历史遗留问题)

-keep class repeackage.com.uodis.opendevice.aidl.** { ; } -keep interface repeackage.com.uodis.opendevice.aidl.* { ; } -keep class repeackage.com.asus.msa.SupplementaryDID.* { ; } -keep interface repeackage.com.asus.msa.SupplementaryDID.* { ; } -keep class repeackage.com.bun.lib.* { ; } -keep interface repeackage.com.bun.lib.* { ; } -keep class repeackage.com.heytap.openid.* { ; } -keep interface repeackage.com.heytap.openid.* { ; } -keep class repeackage.com.samsung.android.deviceidservice.* { ; } -keep interface repeackage.com.samsung.android.deviceidservice.* { ; } -keep class repeackage.com.zui.deviceidservice.* { ; } -keep interface repeackage.com.zui.deviceidservice.* { ; } -keep class repeackage.com.coolpad.deviceidsupport.* { ; } -keep interface repeackage.com.coolpad.deviceidsupport.* { ; } -keep class repeackage.com.android.creator.* { ; } -keep interface repeackage.com.android.creator.* { ; } -keep class repeackage.com.google.android.gms.ads.identifier.internal.* { ; } -keep interface repeackage.com.google.android.gms.ads.identifier.internal. { ; } -keep class repeackage.com.oplus.stdid.* {; } -keep interface repeackage.com.oplus.stdid.** {; } -keep class com.huawei.hms.ads.** {; } -keep interface com.huawei.hms.ads.** {; } -keep class com.hihonor.ads.** {; } -keep interface com.hihonor.ads.** {; } -keep class repeackage.com.qiku.id.** { ; } -keep interface repeackage.com.qiku.id.* { *; }

荣耀手机还是崩溃,必先,并且是debug版本没开混淆 荣耀崩溃

GuoLiangjun123 avatar Apr 19 '24 07:04 GuoLiangjun123

这种情况,要么是没把荣耀的SDK作为运行时依赖进去,要么就是混淆后找不到类。看一下荣耀的SDK依赖项是否下载到了

liyujiang-gzu avatar Apr 20 '24 04:04 liyujiang-gzu

这种情况,要么是没把荣耀的SDK作为运行时依赖进去,要么就是混淆后找不到类。看一下荣耀的SDK依赖项是否下载到了

咋验证呢

GuoLiangjun123 avatar Apr 23 '24 07:04 GuoLiangjun123

这种情况,要么是没把荣耀的SDK作为运行时依赖进去,要么就是混淆后找不到类。看一下荣耀的SDK依赖项是否下载到了

咋验证呢

反编译APK,看里面有没有荣耀SDK相关类

liyujiang-gzu avatar Apr 26 '24 11:04 liyujiang-gzu

参阅 #86

liyujiang-gzu avatar Apr 26 '24 11:04 liyujiang-gzu

大兄弟,移动安全联盟SDK内置用的荣耀isAdvertisingIdAvailable和Android_CN_OAID库用的荣耀SDK方法签名不一致导致的,逆向移动安全联盟SDK,改改里面com.bun.miitmdid.provider.huawei.HWProvider类,把有关华为和荣耀相关代码全删了,重新打包AAR,就可以和Android_CN_OAID共存使用了。 另外在应用侧加ROM判断,是华为和荣耀机型,就走Android_CN_OAID库获取,跳过工信部SDK

cocomikes avatar Sep 09 '24 03:09 cocomikes

大兄弟,移动安全联盟SDK内置用的荣耀isAdvertisingIdAvailable和Android_CN_OAID库用的荣耀SDK方法签名不一致导致的,逆向移动安全联盟SDK,改改里面com.bun.miitmdid.provider.huawei.HWProvider类,把有关华为和荣耀相关代码全删了,重新打包AAR,就可以和Android_CN_OAID共存使用了。 另外在应用侧加ROM判断,是华为和荣耀机型,就走Android_CN_OAID库获取,跳过工信部SDK

瑞思拜~bro

GuoLiangjun123 avatar Sep 13 '24 01:09 GuoLiangjun123