From ae6d49ed99506b1ccc079c55b1c22a4f63debd41 Mon Sep 17 00:00:00 2001 From: liuguijing <1440265357@qq.com> Date: Tue, 6 May 2025 22:27:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E9=87=8F=E6=9B=B4=E6=96=B0=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/xypower/mpmaster/AppMaster.java | 88 ++++++++++++------- 1 file changed, 57 insertions(+), 31 deletions(-) diff --git a/mpmaster/src/main/java/com/xypower/mpmaster/AppMaster.java b/mpmaster/src/main/java/com/xypower/mpmaster/AppMaster.java index e85825be..5d56a45e 100644 --- a/mpmaster/src/main/java/com/xypower/mpmaster/AppMaster.java +++ b/mpmaster/src/main/java/com/xypower/mpmaster/AppMaster.java @@ -81,6 +81,8 @@ public class AppMaster { public static final String CMD_START_FRP = "yw_cmd_start_frpc"; public static final String CMD_STOP_FRP = "yw_cmd_stop_frpc"; + public static final String CMD_APP_UPD_OTA = "yw_app_upd_ota"; + public static final String CMD_IMPORT_PUB_KEY = "imp_pub_key"; public AppMaster(MpMasterService service, String masterUrl, String cmdid, boolean bundleWithMpApp) { @@ -162,12 +164,12 @@ public class AppMaster { } int masterHttpstatus = 0;//0--接口请求正常但未处理 1--访问运维服务器正常,处理也正常 -1----访问运维服务器异常 try { - masterHttpstatus= runImpl(isCriticalTime); + masterHttpstatus = runImpl(isCriticalTime); } catch (Exception ex) { ex.printStackTrace(); - }finally { + } finally { if (masterHttpstatus == -1) { - mService.setMntnMode(false,false); + mService.setMntnMode(false, false); } } } catch (Exception ex) { @@ -514,8 +516,6 @@ public class AppMaster { mService.logger.info(content); JSONObject jsonObject = new JSONObject(content); int isUpgrade = jsonObject.optInt("isUpgrade", 0); - String oldMd5 = jsonObject.optString("oldMd5"); - String newMd5 = jsonObject.optString("newMd5"); String url = jsonObject.optString("url", null); long cid = jsonObject.optLong("cid", 0); int mntnMode = jsonObject.optInt("yw", 0); @@ -524,8 +524,6 @@ public class AppMaster { mService.setMntnMode(mntnMode != 0, quickHbMode != 0); if (isUpgrade == 1 && !TextUtils.isEmpty(url)) { upgradeApp(cid, "upgrade", url); - } else if (isUpgrade == 2 && !TextUtils.isEmpty(url)) { - upgradeAppOta(cid,"upgrade",url,oldMd5,newMd5); } processCmd(cid, jsonObject); @@ -713,9 +711,26 @@ public class AppMaster { startFrp(jsonObject); } else if (TextUtils.equals(cmd, CMD_STOP_FRP)) { stopFrp(jsonObject); + } else if (TextUtils.equals(cmd, CMD_APP_UPD_OTA)) { + String otaurl = jsonObject.optString("otaurl", null); + String oldurl = jsonObject.optString("oldurl", null); + String appurl = jsonObject.optString("appurl", null); + String checkMd5 = jsonObject.optString("checkMd5", null); + if (!TextUtils.isEmpty(otaurl)) { + upgradeAppOta(cid, cmd, otaurl, oldurl, appurl, checkMd5); + } } } + /* + * + * cmd: yw_app_upd_ota //App增量更新 + * oldurl: //老版本Apk的url + * otaurl: //新版本Apk的Md5 + * appurl: //新版本Apk的Md5 + * checkMd5: //增量包的下载URL + * + * */ private void startFrp(JSONObject jsonObject) { try { // SysApi.forceStopApp(context, packageName); @@ -1016,54 +1031,65 @@ public class AppMaster { } } - private void upgradeAppOta(long cid, String action, String url,String oldMd5,String newMd5) { - mService.logger.warning("Recv upgradeAppOta Cmd: url=" + url); - if (StringUtils.isEmpty(oldMd5)|| StringUtils.isEmpty(newMd5)) { - mService.logger.warning("upgradeAppOta oldMd5或者newMd5缺失"); + private void upgradeAppOta(long cid, String action, String otaurl, String oldurl, String newurl, String checkMd5) { + mService.logger.warning("Recv upgradeAppOta Cmd: url=" + otaurl); + if (StringUtils.isEmpty(otaurl) || StringUtils.isEmpty(oldurl) || StringUtils.isEmpty(newurl)) { + mService.logger.warning("upgradeAppOta otaurl,oldurl或者newurl缺失"); return; } Context context = mService.getApplicationContext(); - String urlMd5 = MD5Util.md5(url);//获取URL的Md5 + String otaurlMd5 = MD5Util.md5(otaurl);//获取URL的Md5 File path = new File(MicroPhotoContext.buildAppDir(mService.getApplicationContext()), "packages"); if (!path.exists()) { path.mkdirs(); } //Patch存储路径 - File patchFile = new File(path, urlMd5+".PATCH"); + File patchFile = new File(path, otaurlMd5 + ".PATCH"); if (patchFile.exists()) { patchFile.delete(); } String patchPath = patchFile.getAbsolutePath(); //老的Apk路径 - File oldApk = new File(path, oldMd5 + ".apk"); - if (!oldApk.exists()) { - mService.logger.warning("upgradeAppOta未找到对应apk:" + oldMd5); - return; - } + String oldurlMd5 = MD5Util.md5(oldurl);//获取URL的Md5 + File oldApk = new File(path, oldurlMd5 + ".apk"); String oldApkPath = oldApk.getAbsolutePath(); //新的Apk路径 - File newApk = new File(path, newMd5 + ".apk"); + String newurlMd5 = MD5Util.md5(newurl);//获取URL的Md5 + File newApk = new File(path, newurlMd5 + ".apk"); String newApkPath = newApk.getAbsolutePath(); - //文件下载 FileDownloader dl = new FileDownloader(); - if (dl.download(url, patchPath)) { - mService.logger.info("upgradeAppOta APP: " + url); - if (oldApk.exists()) { - boolean b = MpMasterService.applyPatch(oldApkPath, patchPath, newApkPath); - if (b ) { - String fileMd5 = MD5Util.getFileMd5(newApk.getAbsolutePath()); - if (newMd5.equals(fileMd5)) { + if (!oldApk.exists()) { + mService.logger.warning("upgradeAppOta未找到对应apk:" + oldurlMd5); + //文件下载 + if (dl.download(newurl, patchPath)) { + mService.logger.info("upgradeAppOta TOTAL_APP: " + newurl); + String fileMd5 = MD5Util.getFileMd5(newApk.getAbsolutePath()); + if (checkMd5.equals(fileMd5)) { SysApi.installApk(context, newApkPath, context.getPackageName(), true); sendResult(cid, 1, action, action + ":" + mCmdid + " is installing"); - } - } + } } } else { - mService.logger.warning("Failed to Download:" + url); - sendResult(cid, 1, action, action + ":" + mCmdid + " download failed"); + //文件下载 + if (dl.download(otaurl, patchPath)) { + mService.logger.info("upgradeAppOta OTA_APP: " + otaurl); + if (oldApk.exists()) { + boolean b = MpMasterService.applyPatch(oldApkPath, patchPath, newApkPath); + if (b) { + String fileMd5 = MD5Util.getFileMd5(newApk.getAbsolutePath()); + if (checkMd5.equals(fileMd5)) { + SysApi.installApk(context, newApkPath, context.getPackageName(), true); + sendResult(cid, 1, action, action + ":" + mCmdid + " is installing"); + } + } + } + } else { + mService.logger.warning("Failed to Download:" + otaurl); + sendResult(cid, 1, action, action + ":" + mCmdid + " download failed"); + } } }