夏天YY v1.0版本的 MD5 值为:04df6daece98ad4aaa5f0e7a450865f8

以下内容为反编译后的 gk.java 源代码,内容仅作参考


package c.t.m.g;

import android.content.Context;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class gk {
    private String a = "ModuleUpadateImpl";
    private Context b;

    public gk(Context context) {
        this.b = context;
    }

    public void a(List<gl> list, List<gl> list2) {
        try {
            gw.a(this.b).a("update");
            for (int i = 0; i < 3; i++) {
                boolean c2 = c(list, list2);
                if (gn.a) {
                    String str = this.a;
                    gn.a(str, "down load new module result " + c2 + ", retry " + i);
                }
                if (c2) {
                    break;
                }
            }
            gw.a(this.b).b("update");
            gd.a().d();
        } catch (Throwable th) {
            if (gn.a) {
                gn.a(this.a, th);
            }
        }
    }

    private List<gl> b(List<gl> list, List<gl> list2) {
        boolean z;
        ArrayList arrayList = new ArrayList();
        for (int i = 0; i < list.size(); i++) {
            gl glVar = list.get(i);
            int i2 = 0;
            while (true) {
                if (i2 >= list2.size()) {
                    z = false;
                    break;
                } else if (glVar.a == list2.get(i2).a) {
                    arrayList.add(list2.get(i2));
                    z = true;
                    break;
                } else {
                    i2++;
                }
            }
            if (!z) {
                arrayList.add(glVar);
            }
        }
        return arrayList;
    }

    private boolean a(String str, byte[] bArr, gl glVar) {
        if (bArr == null || bArr.length == 0) {
            if (gn.a) {
                String str2 = this.a;
                gn.a(str2, "write to this path with data null," + str);
            }
            return false;
        } else if (!new gx(str).a(bArr, false)) {
            if (gn.a) {
                String str3 = this.a;
                gn.a(str3, "write to this path failed !!!," + str);
            }
            return false;
        } else {
            String a = gy.a(new File(str));
            if (a == null || !glVar.e.equals(a)) {
                if (gn.a) {
                    String str4 = this.a;
                    gn.a(str4, "check data from server failed !!!," + str);
                }
                return false;
            } else if (gn.a) {
                String str5 = this.a;
                gn.a(str5, "download and check data from server success !!!," + str);
                return true;
            } else {
                return true;
            }
        }
    }

    private synchronized boolean c(List<gl> list, List<gl> list2) {
        long d = gy.d();
        if (d < 10485760) {
            if (gn.a) {
                gn.a(this.a, "Not enough storage, cancel!");
            }
            gd.a().a("MDS", "NoSpaceEnough," + d);
            return false;
        }
        String b = gy.b(this.b, "TMLSDK_hp");
        ArrayList arrayList = new ArrayList();
        for (int i = 0; i < list.size(); i++) {
            gl glVar = list.get(i);
            if (a(b, glVar)) {
                arrayList.add(glVar);
                gd.a().a("MDS", "already," + glVar.f114c);
            } else {
                if (gn.a) {
                    gn.b(this.a, "current download module is " + glVar.toString());
                }
                String str = "https://maplbs-40171.sh.gfp.tencent-cloud.com/modules/" + glVar.e;
                if (gn.a) {
                    gn.a(this.a, "dex down load url is " + str);
                }
                byte[] a = gs.a(str);
                if (a != null) {
                    boolean a2 = a(b + File.separator + glVar.e + "." + glVar.f, gy.a(gq.b(a, gy.a("m_plugin_pwd", gu.n))), glVar);
                    if (gn.a) {
                        gn.a(this.a, "down load so check result:" + a2);
                    }
                    gd.a().a("MDS", "download res," + a2 + "," + glVar.f114c);
                    if (a2) {
                        arrayList.add(glVar);
                    }
                } else {
                    gd.a().a("MDS", "netError");
                    if (gn.a) {
                        gn.a(this.a, "down load module failed!!!," + str);
                    }
                }
            }
        }
        if (gn.a) {
            String str2 = this.a;
            StringBuilder sb = new StringBuilder();
            sb.append("all module download ");
            sb.append(list.size() == arrayList.size());
            gn.a(str2, sb.toString());
            gn.a(this.a, "start rename download files");
        }
        gd.a().a("MDS", "should download," + list.size() + ",real download suc," + arrayList.size());
        if (list.size() == arrayList.size()) {
            String a3 = gy.a(b(list2, arrayList));
            boolean a4 = gy.a(this.b, "SP_TMLSDK_MODULE_INFO", a3);
            if (gn.a) {
                gn.b(this.a, "module update success desc " + a3);
            }
            gd.a().a("MDS", "update result," + a4 + "," + a3);
            return true;
        }
        return false;
    }

    private boolean a(String str, gl glVar) {
        File file;
        try {
            file = new File(str, glVar.e + "." + glVar.f);
        } catch (Exception e) {
            if (gn.a) {
                gn.a(this.a, e);
            }
        }
        if (!file.exists()) {
            if (gn.a) {
                String str2 = this.a;
                gn.b(str2, "checkIsDownLoadMoudle path is not exists," + file.getAbsolutePath());
            }
            return false;
        }
        long length = file.length();
        String a = gy.a(file);
        if (a != null && glVar.d == length && glVar.e.equals(a)) {
            if (gn.a) {
                String str3 = this.a;
                gn.a(str3, "module to download is same to update dir ,so donot to download " + glVar);
                return true;
            }
            return true;
        }
        return false;
    }
}