umeng / MultiFunctionAndroidDemo

友盟多功能Android Demo

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

厂商离线推送场景下,推送消息概率解析失败

opened this issue · comments

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[]{"注册失败"});
    }

能贴一下厂商通道推送的代码么?离线厂商通道一直接收不到