使用阿里百川HotFix
前言:首先要弄懂HotFix是干嘛的,不然就别向下看了。这里仅仅根据官方文档的代码书写,亲测可用,不做理论指导。
Android Studio集成:
添加maven仓库地址:
- repositories {
- maven {
- url "http://repo.baichuan-android.taobao.com/content/groups/BaichuanRepositories"
- }
- }
添加gradle坐标版本依赖:
- dependencies {
- compile 'com.taobao.android:alisdk-hotfix:2.0.9'
- }
权限说明:
- <! -- 网络权限 -->
- <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"/>
配置AndroidManifest文件:
- <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密钥" />
混淆配置:
- #基线包使用,生成mapping.txt
- -printmapping mapping.txt
- #生成的mapping.txt在app/buidl/outputs/mapping/release路径下,移动到/app路径下
- #修复后的项目使用,保证混淆结果一致
- #-applymapping mapping.txt
- #hotfix
- -keep class com.taobao.sophix.**{*;}
- -keep class com.ta.utdid2.device.**{*;}
SDK接口配置:
- package xin.ceet.com.tencentdemo;
- import android.app.Application;
- import com.taobao.sophix.PatchStatus;
- import com.taobao.sophix.SophixManager;
- import com.taobao.sophix.listener.PatchLoadStatusListener;
- /**
- * Created by asus on 2017/7/5.
- */
- public class MyApplication extends Application {
- private String appVersion = "1.0.0";
- @Override
- public void onCreate() {
- super.onCreate();
- SophixManager.getInstance().setContext(this)
- .setAppVersion(appVersion)
- .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) {
- // 表明补丁加载成功
- } else if (code == PatchStatus.CODE_LOAD_RELAUNCH) {
- // 表明新补丁生效需要重启. 开发者可提示用户或者强制重启;
- // 建议: 用户可以监听进入后台事件, 然后应用自杀
- } else if (code == PatchStatus.CODE_LOAD_FAIL) {
- // 内部引擎异常, 推荐此时清空本地补丁, 防止失败补丁重复加载
- // SophixManager.getInstance().cleanPatches();
- } else {
- // 其它错误信息, 查看PatchStatus类说明
- }
- }
- }).initialize();
- SophixManager.getInstance().queryAndLoadNewPatch();
- }
- }
版本说明:
- 说明一:patch是针对客户端具体某个版本的,patch和具体版本绑定
- eg. 应用当前版本号是1.1.0, 那么只能在后台查询到1.1.0版本对应发布的补丁, 而查询不到之前1.0.0旧版本发布的补丁.
- 说明二:针对某个具体版本发布的新补丁, 必须包含所有的bugfix, 而不能依赖补丁递增修复的方式, 因为应用仅可能加载一个补丁
- eg. 针对1.0.0版本在后台发布了一个补丁版本号为1的补丁修复了bug1, 然后发现此时针对这个版本补丁1修复的不完全, 代码还有bug2, 在后台重新发布一个补丁版本号为2的补丁, 那么此时补丁2就必须同时包含bug1和bug2的修复才行, 而不是只包含bug2的修复(bug1就没被修复了)
使用阿里百川HotFix的更多相关文章
- 用户说体验 | 关于阿里百川HotFix你需要了解的一些细节
最近很火的热修复技术,无意中了解到阿里百川也在做,而且Android.iOS两端都支持,所以决定试一试.试用一段时间后,感觉还不错,主要是他们有一个团队在不断维护更新这个产品,可以看到他们的版本更新记 ...
- 阿里百川HotFix2.0热修复初体验
博客原地址:http://blog.csdn.net/allan_bst/article/details/72904721 一.什么是热修复 热修复说白了就是"打补丁",比如你们公 ...
- 淘宝(阿里百川)手机客户端开发日记第十二篇 mysql的认识
我这里用的是wamp,大家可以到网上去下载对应的包,自行安装,对于程序员来讲,安装软件大部分都应该不是问题的,所以我不去将具体安装的方法. wamp安装好后,在我们屏幕的右下角, 这样的图标,我们右键 ...
- iOS-集成阿里百川IMSDK的服务端及客户端
搜了一下阿里百川, 发现文档很少, 于是就打算写一篇博客, 供后来者少华一些时间在集成和开发上. 客户端集成很简单, 官方文档写的也很清楚. 客户端的集成 Step1 下载SDK包 如果您已经获得De ...
- 阿里百川码力APP监控 来了!
阿里百川码力APP监控 来了!这个APP监控 和手淘一起成长历经千锤百炼 走过千BUG万坑如今百川起产品 为了让你的APP更好 用户更爽! 在移动互联网时代,一款应用是否成功,用户体验是一个关键 ...
- iOS 集成阿里百川最新版(3.1.1.96) 实现淘宝授权登录以及调用淘宝客户端商品详情页
公司最近要做第三方登录,由于是做导购项目,必不可少的有淘宝的授权登录.本来就是一个授权登录,没什么大不了的.但淘宝的无线开放业务——阿里百川更新的最新版本3.1.1.96,开发文档不是不详细,是很 ...
- iOS 阿里百川SDK集成注意点
百川SDK是阿里系OneSDK的终极版本,里面包含了所有的阿里系的基本所有的SDK,集成的时候你只需要勾选对应的你需要的模块,然后生成对应的SDK即可,百川主要是针对帮助APP开发者在各种场景下快速. ...
- 淘宝(阿里百川)手机客户端开发日记第十五篇 JSON解析(四)
解析一个从淘宝传递的JSON (大家如有兴趣可以测试下):{ "tae_item_detail_get_response": { "data": { " ...
- 淘宝(阿里百川)手机客户端开发日记第十四篇 jsp提交含有上传控件表单乱码问题
今天我来总结昨天开发的一个简单的jsp web 应用程序时,在做一个调教表单,从servlet端获取数据,这个表单里含有上传文件控件.如果我们在测试的时候,获取数据的是乱码,这时,大家可以先去掉上传控 ...
随机推荐
- 每天一道Java题[6]
题目 String字符串怎么转换为Date,Date又怎么转换成String字符串 解答 String->Date 主要用到类SimpleDateFormat及其抽象父类DateFormat中的 ...
- java面试集锦
HashMap和HashTable的区别 他们都是Map接口的实现类,实现了将唯一键值映射到特定的值上. HashMap没有分类或者排序,它允许一个null和多个null值. HashTable类似于 ...
- 打不开磁盘“I:\xxx.vmdk”或它所依赖的某个快照磁盘
参考:http://zyp88.blog.51cto.com/1481591/1566504 "打不开磁盘"I:\XXX.vmdk"或它所依赖的某个快照磁盘 " ...
- WPF自动更新程序
WPF AutoUpdater 描述: WPF+MVVM实现的自动更新程序 支持更新包文件验证(比较文件MD5码) 支持区分x86与x64程序的更新 支持更新程序的版本号 支持执行更新策略 截图: 使 ...
- css浮动--float/clear通俗讲解(转载)
本文为转载 (出处:http://www.cnblogs.com/iyangyuan/archive/2013/03/27/2983813.html) 教程开始: 首先要知道,div是块级元素,在页面 ...
- Swift 入门之简单语法(二)
可选项判断 由于可选项的内容可能为 nil,而一旦为 nil 则不允许参与计算 因此使用中,经常需要判断可选项的内容是否为 nil 单个可选项判断 let url = NSURL(string: &q ...
- [原创]MongoDB综合实例一
CentOS-6.5单机实现mongoDB分片 环境:1)CentOS 6.5系统 2)IP:本机3)MongoDB:MongoDB-linux-x86_64-2.6.1 实现:两个副本集s ...
- android学习-第一讲
一.基础View控件 View类的常见XML属性,对应发放及说明 每个界面控件都需要设置Android:layout_height,Android:layout_width,指定控件的高度和宽度.通常 ...
- stickUp.js:98 Uncaught ReferenceError: vartop is not defined at HTMLDocument.<anonymous> (stickUp.js:98)
附加var vartop = 0;在var topMargin = 0;这之后,这里是我附加的代码:$(document).ready(function(){ var contentButton = ...
- javaCV开发详解之5:录制音频(录制麦克风)到本地文件/流媒体服务器(基于javax.sound、javaCV-FFMPEG)
javaCV系列文章: javacv开发详解之1:调用本机摄像头视频 javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG.j ...