厂商离线推送场景下,推送消息概率解析失败
opened this issue · comments
Deleted user commented
NAccs.AgooFactory: parseEncryptedMsg failure:
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/alibaba/wireless/security/open/SecurityGuardManager;
at org.android.agoo.control.AgooFactory.parseEncryptedMsg(Taobao:312)
at com.taobao.agoo.BaseNotifyClickActivity$1.run(Taobao:96)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:458)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
at java.util.concurrent.ThreadPoolExecutor.processTask(ThreadPoolExecutor.java:1187)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:784)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.alibaba.wireless.security.open.SecurityGuardManager" on path: DexPathList[[zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/data/app/com.esun.mesportstore-naskkBLgn_BwrqiE0AgNJA==/base.apk"],nativeLibraryDirectories=[/data/app/com.esun.mesportstore-naskkBLgn_BwrqiE0AgNJA==/lib/arm, /data/app/com.esun.mesportstore-naskkBLgn_BwrqiE0AgNJA==/base.apk!/lib/armeabi-v7a, /system/lib, /product/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at org.android.agoo.control.AgooFactory.parseEncryptedMsg(Taobao:312)
at com.taobao.agoo.BaseNotifyClickActivity$1.run(Taobao:96)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:458)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
at java.util.concurrent.ThreadPoolExecutor.processTask(ThreadPoolExecutor.java:1187)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
简要描述:
主线程Application onCreate()中PushAgent.register(IUmengRegisterCallback var1)
线程池启动线线程1,在TaobaoRegister.register中
进行赋值操作:
Context var7 = var0.getApplicationContext();
Config.a = var1;
Config.setAgooAppKey(var0, var2);
com.taobao.accs.utl.a.b = var3;
主线程中BaseNotifyClickActivity onCreate()启动线程2读取推送数据
buildMessage()函数线程池中解密数据,依赖
com.taobao.accs.client.a.a
com.taobao.accs.utl.a.b
String var3 = Config.a(mContext)
线程2先执行com.taobao.accs.client.a.a == 2判断为false,线程1还没设置为2,SecurityGuardManager var4 = SecurityGuardManager.getInstance(mContext),异常发生
//////////////////////////////////////////////////
public static String parseEncryptedMsg(String var0) {
String var1 = null;
try {
byte[] var2 = null;
String var3 = Config.a(mContext);
if (com.taobao.accs.client.a.a == 2) {
if (!TextUtils.isEmpty(com.taobao.accs.utl.a.b)) {
var2 = org.android.agoo.common.a.a(com.taobao.accs.utl.a.b.getBytes("utf-8"), (var3 + com.taobao.accs.utl.a.b(mContext)).getBytes("utf-8"));
} else {
ALog.e("AgooFactory", "getAppsign secret null", new Object[0]);
}
} else {
SecurityGuardManager var4 = SecurityGuardManager.getInstance(mContext);
if (var4 != null) {
ALog.d("AgooFactory", "SecurityGuardManager not null!", new Object[0]);
ISecureSignatureComponent var5 = var4.getSecureSignatureComp();
SecurityGuardParamContext var6 = new SecurityGuardParamContext();
var6.appKey = var3;
var6.paramMap.put("INPUT", var3 + com.taobao.accs.utl.a.b(mContext));
var6.requestType = 3;
String var7 = var5.signRequest(var6, com.taobao.accs.client.a.c);
var2 = org.android.agoo.common.a.a(var7);
} else {
ALog.e("AgooFactory", "SecurityGuardManager is null", new Object[0]);
}
}
if (var2 != null && var2.length > 0) {
byte[] var9 = org.android.agoo.common.a.a(Base64.decode(var0, 8), new SecretKeySpec(org.android.agoo.common.a.a(var2), "AES"), org.android.agoo.common.a.a(var3.getBytes("utf-8")));
var1 = new String(var9, "utf-8");
} else {
ALog.e("AgooFactory", "aesDecrypt key is null!", new Object[0]);
}
} catch (Throwable var8) {
ALog.e("AgooFactory", "parseEncryptedMsg failure: ", var8, new Object[0]);
}
return var1;
}
线程1:
com.umeng.message.common.d.a(new Runnable() {
public void run() {
String var1 = "umeng:" + PushAgent.this.getMessageAppkey();
String var2 = PushAgent.this.getMessageSecret();
UMLog var10000 = UMConfigure.umDebugLog;
UMLog.mutlInfo(PushAgent.e, 2, new String[]{"appkey:" + var1 + ",secret:" + var2});
try {
TaobaoRegister.register(PushAgent.this.c, var1, var2, "android@umeng", new IRegister() {
public void onSuccess(String var1) {
UMLog var10000 = UMConfigure.umDebugLog;
UMLog.mutlInfo(PushAgent.e, 2, new String[]{"注册成功:" + var1});
PushAgent.this.a(var1);
}
public void onFailure(String var1, String var2) {
UMLog var10000 = UMConfigure.umDebugLog;
UMLog.mutlInfo(PushAgent.e, 0, new String[]{"注册失败-->s:" + var1 + ",s1:" + var2});
PushAgent.this.a(var1, var2);
var10000 = UMConfigure.umDebugLog;
UMLog.aq(com.umeng.message.proguard.k.a, 0, "\\|");
}
});
} catch (AccsException var4) {
var10000 = UMConfigure.umDebugLog;
UMLog.mutlInfo(PushAgent.e, 0, new String[]{"注册失败"});
}
}
});
} catch (Exception var3) {
var10000 = UMConfigure.umDebugLog;
UMLog.mutlInfo(e, 0, new String[]{"注册失败"});
}
Jake Woki commented
能贴一下厂商通道推送的代码么?离线厂商通道一直接收不到