在编译阶段插件侵入了产品代码,对运行效率、方法数、包体积还是产生了一些副作用。(可指定某些class无需插入方法,减少插桩数)
so和资源的替换目前暂未实现
对于只有字段访问的函数无法直接修复,可通过调用处间接修复
上传GradleTask尚未在MAC环境下测试
上传的补丁支持按包名存档
要商用的小伙伴要注意,建议换成自己的后端接口或自己续费一个bmob应用,因为bmob云函数服务超过40天需要收费,所以本项目需要定期更新应用秘钥。
5分钟即可让你的SDK拥有热修复的能力
节省踩坑和开发成本
hookandcreateGradleTask
Kotlin+groovy
热修复
非对称加密+对称加密
扩展美团Robust开源库,使其具有其他热更库不具备的补丁回滚功能
数据和监控思维
1.添加配置和开关FIFA足球排名
1.1在项目gradle.properties中添加开关和配置
#接入第一步:添加配置和开关
#Application模式,Robust需要是Application才能插入代码和打补丁
isAppModule=false
#Application模式下开启这个就可以打补丁
isPatchModule=false
#你的业务sdk的包名
sdkPackageName=com.feelschaotic.samplesdk
#是否开启混淆,一般情况下sdk默认不混淆
isProguard=false
#业务sdk版本号,请保持三位,且无后缀,且在打包前就要确定好版本,确保版本打在包中
SDK_VERSION=0.0.1
#业务sdk的upload_artifact_id
SDK_ARTIFACT_ID=MY-SAMPLES-SDK
1.2在sdkbuild.gradle中加入配置替换原有的 applyplugin:'com.android.library'
//注意!!一定要放在文件最前面
//applyplugin表示该项目会使用指定的插件,sdk对应的是com.android.library
if(isAppModule.toBoolean()){
applyplugin:'com.android.application'
if(isPatchModule.toBoolean()){
//制作补丁时将这个打开,auto-patch-plugin紧跟着com.android.application
applyplugin:'auto-patch-plugin'
}
applyplugin:'robust'
}else{
applyplugin:'com.android.library'
}
applyfrom:rootProject.getRootDir().getAbsolutePath()+"/packPlugin.gradle"
1.3加入buildConfigField
//视情况而定,如果你在初始化热更sdk时的传入的版本号有另外的取值方式,也可以不加此buildConfig
android{
defaultConfig{
buildConfigField"String","SDK_VERSION",""${SDK_VERSION}""
buildConfigField"String","SDK_ARTIFACT_ID",""${SDK_ARTIFACT_ID}""
}
}
1.4在sdkbuild.gradle中配置签名
android{
//签名的配置
signingConfigs{
debug{
}
//release版本的签名
release{
//签名的一些信息
keyAlias'key0'
keyPassword'123456'
storeFilefile('./hotfix.jks')
storePassword'123456'
}
}
}
1.5配置混淆
复制粘贴配置到sdkbuild.gradle
android{
buildTypes{
innerTest{
//...
matchingFallbacks=['debug','release']
}
release{
signingConfigsigningConfigs.release
minifyEnabledisProguard.toBoolean()//此处取的isProguard就是1.1在项目`gradle.properties`中添加的isProguard开关
proguardFilesgetDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'
}
}
sourceSets{
main{
//Application和Library清单文件处理方式不同
if(isAppModule.toBoolean()){
manifest.srcFile'src/main/debug/AndroidManifest.xml'
}else{
manifest.srcFile'src/main/release/AndroidManifest.xml'
}
}
}
}
复制粘贴示例sdk的lib-proguard-rules.pro到业务SDKmodule目录下,修改文件中的包名
接着配置好sdk自己的混淆规则
android{
defaultConfig{
consumerProguardFiles'lib-proguard-rules.pro'
}
}
2.导库
在sdk的 build.gradle 中引入库
implementation'com.github.feelschaotic:SDKHotFix:XX-RELEASE'
XX为最新SDK版本号,例如implementation'com.github.feelschaotic:SDKHotFix:1.3-RELEASE'
注:最新版本见README标志
在根项目build.gradle中加入maven配置
repositories{
//接入第二步:增加maven配置
maven{url"https://mvnrepository.com/"}
}
...
allprojects{
repositories{
maven{url"https://mvnrepository.com/"}
}
}
再添加classpath配置
//Application模式下引入Robust脚本插件
if(isAppModule.toBoolean()){
classpath'com.github.feelschaotic:Robust.gradle-plugin:0.4.87.5-RELEASE'
classpath'com.github.feelschaotic:Robust.auto-patch-plugin:0.4.87.5-RELEASE'
}
4.复制示例项目的脚本和文件
4.1复制MainActivity.java到sdkmodule的java包名目录下(目的是为了application打包配置不报错)
4.2复制debug和release2个文件夹到main目录下,修改里面的AndroidManifest.xml,更改为你自己业务SDK的包名
<manifestpackage="${packageName}"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
4.3复制robust.xml到sdkmodule根目录,更改下包名
4.4复制packPlugin.gradle到项目的根目录
5.初始化热更库
valconfig:HotfixConfig=HotfixConfig.Builder().debug(true)
.appVersion(BuildConfig.VERSION_NAME)
.packageName(BuildConfig.APPLICATION_ID)
.build()
HotfixManager.init(application,config)
6.添加权限
<uses-permissionandroid:name="android.permission.INTERNET"/>
<uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permissionandroid:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
7.加入混淆
-keepclasscom.alibaba.sdk.android.oss.**{*;}
-dontwarnokio.**
-dontwarnorg.apache.commons.codec.binary.**
SDKHotfix(SDK热修复工具包)是一款让SDK开发者能快速赋予SDK热修复的能力.
无兼容问题
实时生效
修复成功率高达99.9%
在用户规模千万级别的app中验证过,可信赖
支持补丁异常自动失效,不用再担心补丁造成crash啦~
展开内容
9.1/1,648.2M
暴力辛迪加十二项属性修改器,可以让你在游戏里畅爽的玩游戏,让你在游戏里拥有无限生命、无限弹药等功能,有需要的赶紧来下载使用吧。暴力辛迪加十二项属性修改器使用说明...
8.1/856.1M
赤月合击传世是最新出的手机微端传奇游戏,操作更轻松,玩法梗自由,来一场热血沙城的极致冒险,来一场热血暴力的pk盛宴,快速感受劲爽体验绝对好玩到爆炸。赤月合击传世...
8.1/1,373.7M
美图m8美少女战士是美图推出的一款限量版的手机,人气很高,因为是限量版,所以购买有难度,小编带来了美图m8美少女战士限量版真机图片,想要了解这款手机的朋友可用来...
7.7/1,081.9M
腾讯官方打造的一款软件,配合腾讯NFC智能手办一起使用,绑定后就可以将你的手办养在手机里面了,互动玩耍,打开手机就可以随时随地看到你心爱的手办了。饭集app介绍...
9.5/1,532.6M
闲置汽车制造者是一款休闲风格的模拟游戏,游戏是卡通风格的,我们要做的就是经营好我们的汽车制造厂,从最初开始,不断地积累资金,盖更多的厂房然后发展更多的生产线,只...
9.6/1,524.1M
软件启动器就跟视频播放器一样,界面看起来很像是很正常的事情,但是有很多细节和操作逻辑是不一样的。这个软件想要实现的是更高的操作效率,也就是减少操作步骤,缩短鼠标...
9.3/1,692.9M
Go浏览器官方版APP或能带给用户比较不错的网上冲浪体验。它功能全面,支持从基本的网页浏览到高级的标签管理等所有常见浏览器功能,能满足用户日常浏览网页、在线购物...
9.8/1,361.1M
菠友是最全面专业的电竞游戏视频直播及点播的客户端,为用户提供在线播放电竞赛事、明星第一视角直播、大神点播视频,内容涵盖英雄联盟、刀塔、风暴英雄、炉石传说、星际争...
7.5/103.4M
最近微博关于陈学冬的话题很多,很说用户都说湖南卫视被陈学冬霸屏了,没办法陈学冬的人气就是这么高,小编为喜爱陈学冬的粉丝们带来了陈学冬大头文字表情包,大头的陈学冬...
8.1/1,655.9M
敬业签是一款同步提醒桌面便签软件。它让敬业的人更敬业,除了基础的便签,还具有强大的记事本、备忘录、日记等多种小功能。时时刻刻保护着你的健康,让你的生活更加的有质...
8.9/151.3M
网络主播音乐特效辅助软件,刹客网络音效软件能为你带来多种音乐特效辅助各种场合带来不一样的音效环境,是一款主播必备的软件哦,有需要的赶紧来下载使用吧。刹客网络音效...
9.5/1,793.4M
逍遥春秋是一款非常好玩的手机游戏,这款游戏中玩家可以选择一人一剑闯荡江湖,还可以选择聚集好友建立帮派称霸江湖,并且这款游戏中还有超多的小姐姐陪你冒险。[iOS9...
9.7/1,098.8M
今天小编为大家分享的是F-Stop媒体库,这是一款可供您在安卓系统设备上免费使用的急速图片浏览器,功能强大的照片管理器,和个人媒体库。大家赶紧下载体验吧!软件介...
8.6/336.5M
邮件转换成pdf转换器是一款邮件转换pdf软件,支持邮件批量转换,将outlook、fox等邮件进行转换,方便管理邮件,需要的朋友可以进行免费下载。邮件转换成P...
8.0/212.4M
汤姆猫弹弹奇兵变态安卓版是一款非常可爱的Q版画风的休闲弹射对战手游,游戏整个看起来都是很明媚的色彩风格,满满童年的回忆,非常的讨喜,玩法也是大家都很喜欢的弹射类...
7.6/1,476.5M
以核末日后为背景打造的避难所经营冒险手游,重要的就是搜集资源,生存几何地下世界,不仅要自己生活下去,还可以拯救其他的生还者。游戏特色游戏采用独特的上帝视角经营管...
8.4/34.6M
废塑料专业版提供相关的各种废弃的塑料相关的服务,这里面有各种各样相关的用户,只要你免费的下载以及注册的话,建议你可以先下载看看效果!废塑料专业版介绍废品大叔-废...
9.7/302.4M
一库阅题app是一个独特的知识增长平台,特别为学龄前幼儿和小学生设计,旨在帮助他们通过问答游戏的方式,轻松愉快地获取各方面的知识。一库阅题app介绍一款以问答为...
9.4/774.0M
玩家被困在一座孤岛上,荒岛上危机重重,活下来才是最终的目标,你必须寻找食物和水来保证自己的生存,并注意避开凶猛的野兽。而斗争是唯一的方法,你究竟能不能在这样的岛...
9.0/1,178.1M
娜迦之怒第二部v2.0正式版是一款战役类魔兽地图,本土支持单人游戏,本次更新巫妖和吉安娜攻击变成混乱攻击等等内容,欢迎下载体验。娜迦之怒第二部v2.0正式版地图...
9.5/938.4M
HiPC开发分正式版与测试版,正式版较为稳定,提供安装包下载;测试版提供压缩包下载,随时更新新功能、修复BUG、优化策略,测试版经过大量测试且正常后会发布到正式...
8.3/1,279.9M
ColorReference配色参考软件是手机配色参考软件,这个软件适用于app开发人员,进行软件背景颜色参考,里面精选了几百种色系,简单好用的配色软件!纯粹的...
8.1/1,935.9M
冬至来了,冬至是这一年中白天时间最短的一天,在这一天,一家人围着一起吃着热腾腾的饺子,但是这一天过了之火,天气也越来越冷了,给大家带来冬至祝福语,快去问候家人和...
9.8/1,922.0M
GeoGebra是一款能够绘制动态即可的手机使用软件,在软件中输入具体的数据就能够一键得到想要的图形,是一款使用起来非常方便的几何工具。geogebra软件介绍...
9.2/1,169.7M
知学云10是一款企业学习软件,是各优秀行业企业互联网教育的好伙伴,帮助用户实现数字化转型,满足用户体验和性能要求的基础上,强化产品的个性化能力,让用户的投资取得...