gzu-liyujiang / Android_CN_OAID

安卓设备唯一标识解决方案,可替代移动安全联盟(MSA)统一 SDK 闭源方案。包括国内手机厂商的开放匿名标识(OAID)、海外手机平台的安卓广告标识(AAID),另外也提供了 IMEI/MEID、AndroidID、WidevineID、PseudoID、GUID 等常见的设备标识的获取方法。
https://gzu-liyujiang.github.io/Android_CN_OAID/
Other
2.22k stars 328 forks source link

(求大佬指导)荣耀设备崩溃:java.lang.NoClassDefFoundError: Failed resolution of: Lcom/hihonor/ads/identifier/AdvertisingIdClient; #89

Open lllyeeAB opened 3 months ago

lllyeeAB commented 3 months ago

如题,其他品牌没问题,只要是荣耀的话调用DeviceIdentifier.register就崩溃。 逛了一圈发现,好像是没打进去荣耀sdk导致的,

然后我将gradle从下面这样: implementation('com.github.gzu-liyujiang:Android_CN_OAID:4.2.8') { exclude group: 'com.huawei.hms', module: 'ads-identifier' exclude group: 'com.hihonor.mcs', module: 'ads-identifier' } 改成了这样: implementation('com.github.gzu-liyujiang:Android_CN_OAID:4.2.8') { exclude group: 'com.huawei.hms', module: 'ads-identifier' // 荣耀官方广告标识服务SDK runtimeOnly "com.hihonor.mcs:ads-identifier:1.0.2.301" }

然后出现了编译报错:Duplicate class com.hihonor.cloudservice.oaid.a found in modules jetified-RangersAppLog-Lite-cn-6.16.3-runtime (com.bytedance.applog:RangersAppLog-Lite-cn:6.16.3) and jetified-ads-identifier-1.0.2.301-runtime (com.hihonor.mcs:ads-identifier:1.0.2.301)

遇到了一些冲突,项目是使用了csj的一些库: implementation('com.bytedance.applog:RangersAppLog-Lite-cn:6.16.3')

然后求助了下AI。。(安卓新手),尝试了exclude的一些写法:

implementation('com.bytedance.applog:RangersAppLog-Lite-cn:6.16.3') {
exclude group: 'com.hihonor.cloudservice', module: 'oaid'
}
// 或者 implementation('com.hihonor.mcs:ads-identifier:1.0.2.301') {
exclude group: 'com.hihonor.cloudservice', module: 'oaid'
}

总而言之现在绕不开这个冲突,我也不知道整个流程是不是应该这样?我想解决荣耀崩溃的问题,但是好像又遇到冲突,不知道是不是该这样做。。混淆配置那些都是copy的。。

求大佬指导下我的gradle到底应该怎么写才不会冲突又能将荣耀的sdk依赖进去。。感谢。。🙏

lllyeeAB commented 3 months ago

另外有大佬用过umeng的oaid获取方法吗?靠谱吗?我试了下可以荣耀获取的。。就是不知道对比作者这个哪个好一些?

UMConfigure.getOaid(this, object : OnGetOaidListener { override fun onGetOaid(p0: String?) { val oaid = p0.toString() } })

bxxasn commented 3 months ago

有大佬知道啥情况么... DeviceIdentifier.register(this); 第一步初始化就闪退了. 直接就闪退了

lllyeeAB commented 3 months ago

有大佬知道啥情况么... DeviceIdentifier.register(this); 第一步初始化就闪退了. 直接就闪退了

你是荣耀设备才会这样吗?华为会不会?

SkywardSky commented 3 months ago

直接使用:implementation('com.github.gzu-liyujiang:Android_CN_OAID:4.2.9')

SkywardSky commented 3 months ago

不要加啥exclude group: 'com.huawei.hms', module: 'ads-identifier' exclude group: 'com.hihonor.mcs', module: 'ads-identifier'

LoveMissLove commented 3 months ago

另外有大佬用过umeng的oaid获取方法吗?靠谱吗?我试了下可以荣耀获取的。。就是不知道对比作者这个哪个好一些?

UMConfigure.getOaid(this, object : OnGetOaidListener { override fun onGetOaid(p0: String?) { val oaid = p0.toString() } })

目前我用的最新友盟获取oaid很多机型都崩溃,而且这些崩溃还是友盟内部的,我在外边try不到,改用这个库了

lllyeeAB commented 3 months ago

另外有大佬用过umeng的oaid获取方法吗?靠谱吗?我试了下可以荣耀获取的。。就是不知道对比作者这个哪个好一些? UMConfigure.getOaid(this, object : OnGetOaidListener { override fun onGetOaid(p0: String?) { val oaid = p0.toString() } })

目前我用的最新友盟获取oaid很多机型都崩溃,而且这些崩溃还是友盟内部的,我在外边try不到,改用这个库了

我丢。。那这些崩溃在友盟本身的监控后台能捕捉到吗??我这几天看崩溃还可以,看不到关于这个的崩溃。

lllyeeAB commented 3 months ago

不要加啥exclude group: 'com.huawei.hms', module: 'ads-identifier' exclude group: 'com.hihonor.mcs', module: 'ads-identifier'

这样的话编译会报错: Duplicate class com.hihonor.cloudservice.oaid.a found in modules jetified-RangersAppLog-Lite-cn-6.16.3-runtime (com.bytedance.applog:RangersAppLog-Lite-cn:6.16.3) and jetified-ads-identifier-1.0.2.301-runtime (com.hihonor.mcs:ads-identifier:1.0.2.301)

它和我另外一个库有冲突 : RangersAppLog-Lite-cn-6.16.3

lllyeeAB commented 3 months ago

不要加啥exclude group: 'com.huawei.hms', module: 'ads-identifier' exclude group: 'com.hihonor.mcs', module: 'ads-identifier'

然后我加上exclude的话: implementation('com.github.gzu-liyujiang:Android_CN_OAID:4.2.9') { exclude group: 'com.hihonor.mcs', module: 'ads-identifier' } 编译就能过了,但是调用DeviceIdentifier.register方法又崩溃: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/hihonor/ads/identifier/AdvertisingIdClient;

lllyeeAB commented 3 months ago

implementation('com.github.gzu-liyujiang:Android_CN_OAID:4.2.9') implementation('com.bytedance.applog:RangersAppLog-Lite-cn:6.16.3')

这两个库似乎都依赖com.hihonor.mcs这个包,所以编译时会报错:Duplicate class com.hihonor.cloudservice.oaid.a found in modules jetified-RangersAppLog-Lite-cn-6.16.3-runtime (com.bytedance.applog:RangersAppLog-Lite-cn:6.16.3) and jetified-ads-identifier-1.0.2.301-runtime (com.hihonor.mcs:ads-identifier:1.0.2.301)

我该如何声明build.gradle文件,让这两个库都共存的情况下,并且都能用上com.hihonor.mcs的内容。也不会有这个编译冲突呢?

大佬或者作者大大能不能支支招啊!