[dev_opt_2.15.0] patch升级代码提交

This commit is contained in:
renwj
2023-03-06 19:50:41 +08:00
parent 91547ae873
commit 3c58608ca6
55 changed files with 2100 additions and 156 deletions

View File

@@ -14,6 +14,8 @@ import com.mogo.eagle.core.data.deva.scene.SceneTAG
import com.mogo.eagle.core.data.msgbox.MsgBoxBean
import com.mogo.eagle.core.function.api.devatools.IDevaToolsProvider
import com.mogo.eagle.core.function.api.devatools.apm.*
import com.mogo.eagle.core.function.api.devatools.download.*
import com.mogo.eagle.core.function.api.upgrade.*
import com.mogo.eagle.core.function.call.base.CallerBase
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
@@ -158,8 +160,8 @@ object CallerDevaToolsManager {
/**
* 下载指定包
*/
fun downLoadPackage(downloadKey: String, downloadUrl: String) {
devaToolsProviderApi?.downLoadPackage(downloadKey, downloadUrl)
fun downLoadPackage(type: DownloadType, downloadKey: String, downloadUrl: String) {
devaToolsProviderApi?.downLoadPackage(type, downloadKey, downloadUrl, )
}
/**
@@ -248,4 +250,6 @@ object CallerDevaToolsManager {
fun queryObuUpgrade(obuVersionName: String) {
devaToolsProviderApi?.queryObuUpgrade(obuVersionName)
}
fun upgradeProvider(): IMoGoUpgradeProvider? = devaToolsProviderApi?.upgradeProvider()
}

View File

@@ -0,0 +1,61 @@
package com.mogo.eagle.core.function.call.patch
import android.content.*
import com.mogo.eagle.core.data.constants.MogoServicePaths
import com.mogo.eagle.core.data.deva.bindingcar.AppInfo.PatchInfo
import com.mogo.eagle.core.function.api.patch.*
import com.mogo.eagle.core.function.call.base.CallerBase
import java.io.*
import java.util.concurrent.CopyOnWriteArraySet
object CallerPatchManager {
private val patchInfo by lazy { CopyOnWriteArraySet<PatchInfo>() }
private val provider: IMoGoPatchProvider? by lazy {
CallerBase.getApiInstance(IMoGoPatchProvider::class.java, MogoServicePaths.PATH_PATCH_UPGRADE)
}
/**
* @param context 上下文环境
* @param expectOldApkMd5 服务端返回的旧apk文件的md5
* @return true: 本地apk与服务端旧apk版本的md5文件一致; false: 本地apk与服务端旧apk版本md5不一致
*/
fun isPatchAccept(context: Context, expectOldApkMd5: String, patchSize: Long): Boolean {
return provider?.isPatchAccept(context, expectOldApkMd5, patchSize) ?: false
}
/**
* @param context 上下文环境
* @param patch 已下载文件的patch路径
* @param newApk 合成后文件的文件路径
* @return true: patch与旧apk文件合成成功; false: patch与旧apk文件合成失败
*/
fun applyPatch(context: Context, patch: File, newApk: File): Boolean {
return provider?.applyPatch(context, patch, newApk) ?: false
}
/**
* @param context 上下文环境
* @param mergedApk patch合成后的文件路径
* @param expectNewApkMd5 期望合成后文件的md5值
* @return true: md5校验成功; false: md5校验失败
*/
fun checkMd5ForMergedApk(context: Context, mergedApk: File, expectNewApkMd5: String): Boolean {
return provider?.checkMd5ForMergedApk(context, mergedApk, expectNewApkMd5) ?: false
}
fun addPatchInfo(info: PatchInfo) {
patchInfo += info
}
fun getPatchInfoByUrl(patchUrl: String): PatchInfo? = patchInfo.find { it.patchDownloadUrl == patchUrl }
fun removePatchInfoByUrl(patchUrl: String) {
try {
patchInfo.remove(patchInfo.find { it.patchDownloadUrl == patchUrl })
} catch (t: Throwable) {
t.printStackTrace()
}
}
}