package com.taobao.atlas.update; import android.util.Log; import com.taobao.atlas.dexmerge.MergeCallback; import com.taobao.atlas.update.exception.MergeException; import com.taobao.atlas.update.model.UpdateInfo; import com.taobao.atlas.update.util.PatchCleaner; import com.taobao.atlas.update.util.PatchInstaller; import com.taobao.atlas.update.util.PatchMerger; import org.osgi.framework.BundleException; import java.io.File; import java.io.IOException; /** * Created by wuzhong on 2016/11/23. */ public class AtlasUpdater { /** * 更新主入口 * @param updateInfo 更新的基础信息 * @param patchFile tpatch包 * @throws MergeException * @throws BundleException */ public static void update(UpdateInfo updateInfo, File patchFile) throws MergeException, BundleException { MergeCallback mergeCallback = new MergeCallback() { @Override public void onMergeResult(boolean result, String bundleName) { if (result) { Log.d("[dexmerge]", "merge bundle " + bundleName + " success "); } else { Log.e("[dexmerge]", "merge bundle " + bundleName + " fail "); } } }; PatchMerger patchMerger = new PatchMerger(updateInfo, patchFile, mergeCallback); try { patchMerger.merge(); } catch (IOException e) { e.printStackTrace(); } PatchInstaller patchInstaller = new PatchInstaller(patchMerger.mergeOutputs, updateInfo); patchInstaller.install(); new PatchCleaner().clearUpdatePath(updateInfo.workDir.getAbsolutePath()); } }