zoukankan      html  css  js  c++  java
  • android--------阿里 Sophix移动热修复

    移动热修复(Mobile Hotfix)是阿里云提供的全平台App热修复服务方案。产品基于阿里巴巴首创hotpatch技术,提供最细粒度热修复能力,让您无需等待实时修复应用线上问题。

    移动热修复提供的热修复能力,让您对应用程序的控制更加自由。您可以使用HotFix:

    • 紧急修复线上问题。
    • 快速发布新鲜功能。

    产品优势:(图片来自阿里云)

    阿里云接入文档:https://help.aliyun.com/document_detail/53240.html?spm=a2c4g.11186623.6.546.ppnCPR

     

    后台创建应用得到应用相应信息(右键查看大图像)

    AndroidManifest.xml中间的application节点下添加如下配置:

    <meta-data
    android:name="com.taobao.android.hotfix.IDSECRET"
    android:value="App ID" />
    <meta-data
    android:name="com.taobao.android.hotfix.APPSECRET"
    android:value="App Secret" />
    <meta-data
    android:name="com.taobao.android.hotfix.RSASECRET"
    android:value="RSA密钥" />

    Application代码:

    public class SophixStubApplication extends Application {
        public interface MsgDisplayListener {
            void handle(String msg);
        }
    
        public static MsgDisplayListener msgDisplayListener = null;
        public static StringBuilder cacheMsg = new StringBuilder();
    
        @Override
        public void onCreate() {
            super.onCreate();
            initHotfix();
        }
    
        private void initHotfix() {
            String appVersion;
            try {
                appVersion = this.getPackageManager().getPackageInfo(this.getPackageName(), 0).versionName;
                Log.i("appVersion",appVersion);
            } catch (Exception e) {
                appVersion = "1.0.0";
            }
    
            SophixManager.getInstance().setContext(this)
                    .setAppVersion(appVersion)
                    .setAesKey(null)
                    //.setAesKey("0123456789123456")
                    .setEnableDebug(true)
                    .setPatchLoadStatusStub(new PatchLoadStatusListener() {
                        @Override
                        public void onLoad(final int mode, final int code, final String info, final int handlePatchVersion) {
                            String msg = new StringBuilder("").append("Mode:").append(mode)
                                    .append(" Code:").append(code)
                                    .append(" Info:").append(info)
                                    .append(" HandlePatchVersion:").append(handlePatchVersion).toString();
                            if (msgDisplayListener != null) {
                                msgDisplayListener.handle(msg);
                            } else {
                                cacheMsg.append("
    ").append(msg);
                            }
                        }
                    }).initialize();
        }
    }

    第一次运行,有bug的效果:

    生成有bug的apk文件保存。

    下载补丁生成工具和调试工具,其中调试工具是一个apk文件

    修改bug代码,运行生成 apk 文件。

     

    现在有两个apk文件了,一个老的apk文件(有bug),一个新的apk文件(无bug),然后用工具就会生成一个补丁文件

    运行下载的 SophixPatchTool 程序,按照要求导入apk文件,如图:(注:在设置中加入补丁生成文件路径

    生成的是一个 jar包

    可以利用测试工具进行本地测试

    这里我们通过adb命令来将sophix-patch.jar文件上传到手机本地内存目录下,然后修复错误,

    adb命令相关请看博客: http://www.cnblogs.com/zhangqie/p/8505252.html

    结束应用,重启得到效果:(文字和图片都改变了)

    也可以通过阿里云控制台进行apk补丁修复

    然后通过测试工具,连接应用---》二维码扫描修复文件

    官方Demo下载:https://github.com/aliyun/alicloud-android-demo/tree/master/hotfix_android_demo

  • 相关阅读:
    浅谈 倍增/ST表
    Meetings S 题解
    排序模板
    Huffman 树
    2020.7.31 模拟赛 题解
    浅谈 最短路
    【lcez校内第三次考T1】【题解】folder
    【题解】 P2613 【模板】有理数取余
    【题解】P5535 【XR-3】小道消息
    【笔记】积性函数 与 欧拉函数
  • 原文地址:https://www.cnblogs.com/zhangqie/p/8534850.html
Copyright © 2011-2022 走看看