与友盟+SDK冲突解决

Android

1、使用QT的PX系列SDK(友盟+SDK也至少在9.5.6版本以上)。如果之前有集成QT P系列 SDK和SPM插件包,先删除之前的所有SDK包和相关依赖。埋点代码不需要删除,请先保留。

dependencies {
	implementation fileTree(include:['*.jar'], dir:'libs')

	implementation 'com.umeng.umsdk:qt-px-common:1.4.2.PX'
}

2、混淆添加如下代码:

-keep class com.umeng.** {*;}
-keep class org.repackage.** {*;}

-keep class com.quick.qt.** {*;}
-keep class rpk.quick.qt.** {*;}


-keepclassmembers class * {
   public <init> (org.json.JSONObject);
}
-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

-keep public class [您的应用包名].R$*{
public static final int *;
} 

3、在工程Application.onCreate生命周期函数中替换之前初始化及埋点代码的接口类名。

@Override
    public void onCreate() {
        super.onCreate();
        //...
        // 之前的接口类UMConfigure->QtConfigure
        // 之前的UMConfigure.preInit/UMConfigure.init类名,都替换为QtConfigure,接口方法名不变。
        // 之前的MobclickAgent类接口调用,都替换为QtTrackAgent类,方法名不变。
        QtConfigure.setCustomDomain("您的收数域名", null);         
     
        //...

4、工程中其它所有埋点代码。接口类名按照如下方式替换。

老类名

新类名

类导入

UMConfigure

QtConfigure

import com.quick.qt.commonsdk.QtConfigure;

MobclickAgent

QtTrackAgent

import com.quick.qt.analytics.QtTrackAgent;

SpmAgent

SpmAgent

com.quick.qt.spm.SpmAgent

5、更改SDK文件路径

  • 已经集成了友盟+SDK,现在需要集成QT SDK:在QT和友盟+的所有代码最前面增加(至少早于收数域名)QTConfigure.resetStorePath

  • 已经集成了QT SDK,现在需要集成友盟+SDK:在QT和友盟+的所有代码最前面(至少早于收数域名)增加UMConfigure.resetStorePath

如果不按照上述的逻辑调用,则会使友盟+SDK与QT SDK共同使用一个存储路径,导致日志混乱

iOS

1、使用QT的PX系列SDK(友盟+SDK也至少在7.3.8版本以上)。如果之前有集成QT P系列 SDK和SPM插件包,先删除之前的所有SDK包和相关依赖。埋点代码不需要删除,请先保留。

pod 'QTCommon', '~> 1.4.2.PX'

//可在项目中加入 "基础库-日志库" 中的 UMCCommonLog 进行开发调试
pod 'UMCCommonLog'

2、import更改为

#import <QTCommon/UMConfigure.h> // 替换之前UMCommon/UMConfigure.h
#import <QTCommon/MobClick.h> // 替换之前UMCommon/MobClick.h
#import <QTCommon/UMSpm.h> 

3、工程中其它所有埋点代码。接口类名按照如下方式替换。

老类名

新类名

类导入

UMConfigure

QTConfigure

#import <QTCommon/UMConfigure.h>

Mobclick

QTMobclick

#import <QTCommon/MobClick.h>

UMSpm

UMSpm

#import <QTCommon/UMSpm.h>

4、更改SDK文件路径

  • 已经集成了友盟+SDK,现在需要集成QT SDK:在QT和友盟+的所有代码最前面增加(至少早于收数域名)[QTConfigure.resetStorePath]

  • 已经集成了QT SDK,现在需要集成友盟+SDK:在QT和友盟+的所有代码最前面增加(至少早于收数域名)[UMConfigure.resetStorePath]

如果不按照上述的逻辑调用,则会使友盟+SDK与QT SDK共同使用一个存储路径,导致日志混乱