阿里SopHix热修复框架操作实践基础步骤

Android 接入阿里热修复Sophix框架 一:为什么选阿里热修复 二:阿里热修复的原理(Sophix技术概览:https://yq.aliyun.com/articles/103527) 三:创建产品及应用(一二三点,都在阿里云官网可以看到) 1.1 找到移动研发平台入口 在阿里云官网,找到:移动研发平台,点击后,进入到移动研发平台官网详情页面 点击后,进入到移动研发平台(Enterprise Mobile A... 阅读详情
AI摘要

本文详细介绍了如何在Android应用中实现阿里云提供的热更新服务,包括注册账户、配置参数、添加依赖库及权限等步骤,并提供了关键代码示例。

        <meta-data
            android:name="com.taobao.android.hotfix.IDSECRET"
            android:value="AppId" />
        <meta-data
            android:name="com.taobao.android.hotfix.APPSECRET"
            android:value="AppSecret" />
        <meta-data
            android:name="com.taobao.android.hotfix.RSASECRET"
            android:value="RSA密钥" />
  • 列表内容

    . 在项目对应的build.gradle下添加对应的库

maven {
            url "http://maven.aliyun.com/nexus/content/repositories/releases"
        }

在模块对应的build.gradle下添加

 compile 'com.aliyun.ams:alicloud-android-hotfix:3.1.7'
  • 申请对应的权限
     <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

关于权限,在6.0以上的手机,需要动态的获取。如果没有相关的权限,启动app是检查不到新的补丁包的。我用的手华为的手机,安装app后,日志总是输出“there is not update”。原因是我没有读取内存卡的权限没有申请成功。

  • 创建MyApplication
package xxq.com.andfixdemo;

import android.app.Application;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Environment;
import android.util.Log;
import android.widget.Toast;

import com.alipay.euler.andfix.patch.PatchManager;
import com.taobao.sophix.PatchStatus;
import com.taobao.sophix.SophixManager;
import com.taobao.sophix.listener.PatchLoadStatusListener;

import java.io.File;
import java.io.IOException;

/**
 * Created by Administrator on 2017/12/14 0014.
 */

public class MyApplication extends Application {
    private static final String TAG = "MyApplication";

    @Override
    public void onCreate() {
        super.onCreate();
        init();
    }
    private void init() {
        SophixManager.getInstance().setContext(this)
                .setAppVersion(getAppVersionName(this))
                .setAesKey(null)
                .setEnableDebug(true)
                .setPatchLoadStatusStub(new PatchLoadStatusListener() {
                    @Override
                    public void onLoad(final int mode, final int code, final String info, final int handlePatchVersion) {
                        // 补丁加载回调通知
                        if (code == PatchStatus.CODE_LOAD_SUCCESS) {
                            // 表明补丁加载成功
                            Log.i(TAG, "onLoad: 成功");
                        } else if (code == PatchStatus.CODE_LOAD_RELAUNCH) {
                            // 表明新补丁生效需要重启. 开发者可提示用户或者强制重启;
                            // 建议: 用户可以监听进入后台事件, 然后应用自杀
                            Log.i(TAG, "onLoad: 生效需要重启");
                            restartApp();
                        } else if (code == PatchStatus.CODE_LOAD_FAIL) {
                            // 内部引擎异常, 推荐此时清空本地补丁, 防止失败补丁重复加载
                            // SophixManager.getInstance().cleanPatches();
                        } else {
                            // 其它错误信息, 查看PatchStatus类说明
                            Log.i(TAG, "onLoad: 其它错误信息"+code);
                        }
                    }
                }).initialize();
//        SophixManager.getInstance().queryAndLoadNewPatch();
    }
    /**
     * 返回当前程序版本名
     */
    public static String getAppVersionName(Context context) {
        String versionName = "";
        try {
            // ---get the package info---
            PackageManager pm = context.getPackageManager();
            PackageInfo pi = pm.getPackageInfo(context.getPackageName(), 0);
            versionName = pi.versionName;
            //versioncode = pi.versionCode;
            if (versionName == null || versionName.length() <= 0) {
                return "";
            }
        } catch (Exception e) {
            Log.e("VersionInfo", "Exception", e);
        }
        return versionName;
    }
    public void restartApp(){
        RestartAPPTool.restartAPP(this,2000);
    }
}

在activity oncreate()中添加

SophixManager.getInstance().queryAndLoadNewPatch();

整体代码如下 :

package xxq.com.andfixdemo;

import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import com.taobao.sophix.SophixManager;

import java.io.File;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
    private TextView tv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        SophixManager.getInstance().queryAndLoadNewPatch();
        tv = (TextView) findViewById(R.id.textview);
        tv.setOnClickListener(this);


    }
    public void onStart(View V){
        tv.setText("我是原始的app");
//        tv.setText("我是热修复的app");
    }
    @Override
    public void onClick(View v) {
        Toast.makeText(MainActivity.this, tv.getText(), Toast.LENGTH_SHORT).show();
    }
}

关于SopHix最终如何使用可以参考官网文档
以上内容参考于:http://www.jianshu.com/p/42c436f1b207
感谢杨hai

Sophix介绍与实践 1.    介绍 移动热修复(Sophix)是阿里云提供的Android平台App热修复服务方案 2. Sophix优势 通过比较可以发现Sophix相比其他平台的实现更具优势 A.对于部分修改,补丁即时生效,不需要应用重启(这个还得看情况,较大的修改或者修改类结构之类的,会导致重启) B.补丁包同样采用差异技术,生成的PATCH体积小 C.对应用无侵入,几乎没有性能损耗 阅读详情

相关推荐

阿里热更新 Sophix框架接入

前言 对于移动开发者来说,在一个需求频繁、版本迭代较快的公司,能够及时解决线上的紧急问题显得尤为重要。现在各种热修复框架的出现,解决这种问题已成为可能。自己造轮子有时不如站在巨人的肩膀上,你说呢? 来,我们看看怎么接入的吧。 集成 1 注册帐号 接入Sophix ,首先你要有一个阿里云的账号,进去之后找到移动热修复模块,点击进去后添加应用,填写应用分类、包名等信息后,点击创建的应用 ...

anyway1919的博客 1556

android热更新

#android热更新方案选型 ##0.主流的热更新解决方案 Thinker(微信) HotFix(阿里云) ##1.什么是热修复?    ##2.厂商解决方案之间的差异 从左到右依次是:微信、QQ控件、淘宝、美团的热更新的解决方案      从上图中可以看出微信和阿里云的热更新方案功能是最全面的。   如果从产品迭代的角度来进行选型,那么毫无疑问使用微信的Thinker(免费)和阿里云的H...

liangfeng093的博客 8879

深入了解AES_GCM算法

常见的对称加密算法,在解密过程中无法确认密钥是否正确的。这就意味着,密文可以用任何密钥执行解密运算,得到一组疑似密文;由于不知道密钥是否正确,故也不能确定解密出来的明文数据是否正确。因此,需要在对称加密算法上增加一层验证机制,常见思路为使用加密算法进行加密保证机密性,使用摘要算法计算MAC保证完整性和真实性,这就涉及到摘要计算和加密计算的前后顺序和参与计算的数据、密钥等,使用起来略微麻烦。

huaqianzkh的专栏 4190

Android集成阿里热修复(Hotfix)

1.先注册阿里云账号: https://www.aliyun.com/?spm=5176.12825654.amxosvpfn.2.78342c4arjFnlZ 2.新建应用: 打开控制台 --> 移动研发平台EMAS --> 新建产品 --> 添加应用 3.下载应用的Android配置备用(不用将json文件复制到AS工程) (标红框的一会配置会用到) 4. AS 开始集成(推荐稳健集成,点击跳转阿里官方文档,标题4的部分 代码文档都有) (https://help.aliyun

Android之旅 4993

从翼型到湍流:用生活化案例图解空气动力学核心概念(中英双语版)

本文通过飞机机翼、F1赛车、高尔夫球等生活化案例,图解空气动力学核心概念。深入浅出地解释了攻角如何产生升力、边界层与流动分离如何影响阻力、马赫数如何划分速度世界,以及涡流与湍流的特性与应用。文章还介绍了计算流体动力学(CFD)这一现代数字风洞工具,帮助读者直观理解这些塑造现代交通与运动设计的无形之力。

metaverse5vr的博客 475

SECS/GEM协议库及开源代码

以下是在开发SECS/GEM协议过程中,在网络上搜集协议实现资源,希望对SECS/GEM协议感兴趣的同学能有所帮助。 开源代码 freesecs FREESECS 是一个开源的SEMI SECS协议库,采用C++语言实现,可运行于Linux, MacOS X, NetBSD。 实现协议:E37.1、E5 开源地址:freesecs download | SourceForge.net 下载地址:https://download.youkuaiyun.com/download/BT_LEO/24305429

码农的历程 9944

Python的各大常用库汇总

Python常用库 Chardet字符编码探测器,可以自动检测文本、网页、xml的编码。 colorama主要用来给文本添加各种颜色,并且非常简单易用。 Prettytable主要用于在终端或浏览器端构建格式化的输出。 difflib,[Python]标准库,计算文本差异 Levenshtein,快速计算字符串相似度。 fuzzywuzzy,字符串模糊匹配。 esmre,正则表达式的加速器。 shortuuid,一组简洁URL/UUID函数库。 ftfy,Unicode文本工具7 unidecode,asc

weixin_56537764的博客 3300

把对讲门铃(控制底楼铁门)接入米家服务器

今天讲个跟SDR或者无人机无关的东西,技术含量不高,但是方便了我的生活。 现在家门有智能锁,汽车也可以远程解锁发动,NFC门禁也可以用某些手机复制,唯独楼下的铁门,必须用老式对讲门铃控制。 也就是说其它钥匙都可以不带,就剩这个钥匙还必须随身携带。 另外有时候人不在家,不能开楼下铁门,快递员也没法把东西送上楼。 ......

老邵的开源世界 6551

阿里云移动热修复Sophix问题汇总

为了解决项目中安卓在线更新安装包过大以及线上BUG修复的及时性问题,决定在2.x开始集成热修复功能。 分别尝试了微信的Tinker、美团的Robust以及阿里的第一代热修复框架Andfix,但考虑修复补丁包生效实时性、对目前的项目改动大小以及后期对补丁包的管理等问题,最终考虑了阿里云最新热修复框架Sophix, 几个主流热修复框架对比如下(阿里云官网提供,Sophix是最后一列): 根据官网的描述,Sophix几乎囊括了前面框架的所有优势,唯一的劣势就是收费,考虑到免费额度(50000个去重设备 + 20

m0_48179608的博客 2768

倍福CX9020(WINCE 7)控制器使用方法和操作

CX9020系列是倍福控制器中较为经济的,操作系统为Windows Embedded Compact 7(简称WINCE7或WINEC7),相对高端控制器(WINES7以上系统),操作系统古老而简洁,上位机软件的编写困难很多,本文是笔者在使用过程中摸索的流程,旨在为CX9020系列的新用户提供参考,也可供其他CE系统的控制器参考。本文中大部分截图采用倍福中国的培训文档,这是由于笔者是在流程走通后再写这篇文章,不想再恢复出厂设置走一遍截图。因笔者在写这篇文章时使用倍福控制器经验并不丰富,难免有纰漏,请读者批评

weixin_41883890的博客 4287

10、GPU发展历程:从光线追踪到网格着色器的技术革新

本文回顾了GPU的发展历程,重点探讨了从光线追踪到网格着色器的技术革新。涵盖了DirectX 12时代(2015-2020)光线追踪与AI结合的突破,包括NVIDIA的Volta架构、DLSS技术原理及可变速率着色的应用。随后介绍了DirectX 12 Ultimate时代(2020)网格着色器的引入,分析了其计算模型、细粒度控制能力及跨平台优势。最后总结了着色器的演变及GPU在多个领域的广泛应用。

ol789012345的博客 185

阿里热修复之Sophix的集成详解

前言 这几天开始接触热修复,体验了一把阿里热修复Sophix的傻瓜式接入。虽说是傻瓜式接入,但实际操作起来还是遇到不少坑,而且Sophix的官方文档有些地方有点难理解,部分图片也跟现在的不一样,所以今天我整理了一下我接入Sophix的过程,希望对大家有所帮助。当然,如果你对热修复并不了解,可以先去了解下Android的热修复,再来看这个文章。 一、Sophix是什么 Sophix提供了一...

haoge728的博客 923

ESP32开发进阶:1.接入文心一言

ESP32开发进阶:接入文心一言大模型,串口对话

qq_53529450的博客 1431

Android热修复之阿里Sophix的使用详解

阿里Spohix简介 阿里巴巴对Android热修复技术已经进行了长达多年的探索。 最开始,是手淘基于Xposed进行了改进,产生了针对Android Dalvik虚拟机运行时的Java Method Hook技术,Dexposed。但这个方案由于对底层Dalvik结构过于依赖,最终无法继续兼容Android5.0以后ART虚拟机,因此作罢。 后来支付宝提出了新的热修复方案Andfix。Andfi...

驴与鱼的博客 1637

YOLOv11改进 | 主干/Backbone篇 | 利用RT-DETR主干网络PPHGNetV2助力yolov11有效涨点(轻量化目标检测网络)

本文给大家带来利用RT-DETR模型主干HGNet去替换YOLOv11的主干,RT-DETR是今年由百度推出的第一款实时的ViT模型,其在实时检测的领域上号称是打败了YOLO系列,其利用两个主干一个是HGNet一个是ResNet,其中HGNet就是我们今天来讲解的网络结构模型,这个网络结构目前还没有推出论文,所以其理论知识在网络上也是非常的少,我也是根据网络结构图进行了分析(精度mAP提高0.05)。YOLOv11改进系列专栏——本专栏持续复习各种顶会内容——科研必备​目录一、本文介绍。

Snu77的博客 3721

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Android 热修复框架: Sophix基本使用

转载请注明链接: Android 热修复框架: Sophix基本使用 版本号:2019/2/24-15:38 文章目录Android 热修复框架: Sophix基本使用@[toc]框架集成添加依赖添加SophixStubApplication修改AndroidManifest替换原Application为SophixStubApplication添加必备权限添加Sophix的APP ID、APP...

feather(猎羽) 1607

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Weex热修复框架对比:Sophix、Tinker与Robust

你是否还在为Weex应用发布后紧急bug修复而烦恼?用户反馈崩溃却无法及时解决?本文将对比当下主流的三大热修复框架——Sophix、Tinker与Robust,帮助你快速选择最适合Weex项目的热修复方案。读完本文你将了解:三大框架的实现原理、接入复杂度、性能表现及在Weex环境下的适配情况。 ## 热修复框架原理概述 热修复技术(Hotfix)允许应用在不重新发布版本的情况下修复bug,主要...

gitblog_01141的博客 1289

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Android 热修复:阿里Sophix的集成

1. 前言 当我们刚发布一个版本后,突然发现了一个严重的bug。由于刚发布版本,这时候如果再紧接着发布一个版本,这时候给用户的体验肯定很差。而热修复技术可以在用户不知道的情况下修复已知的bug。目前各大厂都推出了自己的热修复方案,各个方案的差别如下(这是阿里巴巴给的对比): 热修复方案比较 平台 阿里云移动热修复 Amigo(饿了吗) Tinker(微信) Qzone...

接受自己的普通,然后拼尽全力去与众不同 824

阿里云Sophix热修复框架的接入简述

阿里云Sophix热修复框架的接入简述 目前来说Android开发热修复可以说是一个标准商业项目必备的基础功能,便于上线后的紧急问题修复。(ps,不论怎么测试,似乎上线后的app,总会有一些测试期间发现不了的Bug,

志威梦优快云博客 490

阿里热修复Sophix

第一章、准备工作 1、申请阿里云账号; 2、开通阿里云移动管理服务; 3、开通阿里云移动服务平台EMAS. 4、创建一个新产品,即需要接入的APP产品。 第二章:接入热修复SDK 您可以在应用管理页面获取配置SDK所需要的基本信息。包括: AppKey:用于AppKey是阿里云上应用的唯一标识,热修复的appId可设置AppKey。 RSA密钥: RSA密钥是保存在客户端本地用...

joedan0104的专栏 1837

阿里热修复集成,sophix加载本地补丁包

阅读本文大概需要10分钟。 其实热修复已经出来很久了,其中包含了很多的厂家的热修复方案,包含收费与免费,集成简单与集成复杂以及一些其他的区别性。综合考虑下选择了阿里的spohix修复方案,这里主要是简单的记录下修复的一些大概步骤,以及包含自己利用sophix加载本地的补丁包内容。 大致步骤如下: 在阿里云控制台注册你的应用,拿到对应的几个key密钥,这几个密钥后面需要放到你的应用中作为识...

往东还是往西的博客 1194

Android热修复Sophix

文章目录引言阿里云申请项目配置生成补丁发布补丁其他 引言   一直觉得android维护成本挺高的,如果版本出现bug,需要马上发布新版,然后去应用市场申请。这个时候可能需要很长的一段时间,造成用户的流失。   这个时候如果可以不知不觉的修复一些bug就好了。只有你想不到,没有人做不到。Sophix诞生了。记得以前关于热修复生成补丁需要进行繁琐的操作。而Sophix的图形界面化简单操作就可以生成补...

鱼头小丸子的博客 547

Android 热修复的尝试(阿里的sophix和腾讯的bugly)记录

移动端的热修复,近期都很火,由于个人的能力有限,一直没有深处去了解,这里就不去详细分析市面上流行的热修复框架那些了,度娘上面,资料多的是,我这边也是成功实现了两个热修复,一个是阿里云的sophix,傻瓜式接入,设备到达一定的数量之后,开始按梯级式,收费,这样的话,对于我这种个人开发者,就感觉有点压力(虽然我也没有开发出那过万台的用户使用量的app),第二的是腾讯的bugly(...

qq_36771930的博客 1617

Android Sophix热修复集成

!!!! 阿里云热修复官网地址 移动热修复(Mobile Hotfix)是阿里云提供的全平台App热修复服务方案。产品基于阿里巴巴首创hotpatch技术,提供最细粒度热修复能力,让您无需等待实时修复应用线上问题。 主要解决问题 (1)产品已有功能,出现问题,无需发版,即可发补丁,实时修复。 (2)存量功能微调 HotFix总体来说最大的优势在于: 补丁即时生效,不需要应用重启; 补丁包同样采用差量技术,生成的PATCH体积小; 对应用无侵入,几乎无性能损耗; 两行代码,傻瓜式接入。

whyareusomw的博客 3305

阿里热修复Sophix的基本使用

什么是热修复?就是指能够修复软件漏洞的一些代码,是一种快速、低成本修复产品软件版本缺陷的方式(百度)。也就是当产品上线遇到bug,这个时候我们去发布一个新的版本,不但要过市场审核,而且发布没有多久又更新,用户体验也不好。这个时候我们就要考虑到使用热修复了,在app启动的时候会去联网下载差分包然...

choujianpi4487的博客 361
上一篇: Android OpenGL教程-第六课【转】
下一篇: 关于android studio 升级4.4之后的坑Unable to load class 'org.gradle.api.internal.component.Usage'
Guitar君
博客等级 码龄12年 15粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值