taobaohot(淘宝hottoys旗舰店靠谱吗)
阿里云热修复官方文档:
https://www.aliyun/product/hotfix?spm=5176.8142029.388261.233.kapzlu
集成步骤
1、在清单文件AndroidManifest.xml添加权限:
注:6.0以上手机别忘了动态申请内存卡读写权限。
2、在项目根目录下的build.gradle文件下添加:
maven {//移动热修复
url "http://maven.aliyun/nexus/content/repositories/releases"
}
3、在app目录下的build.gradle文件添加:
//热修复
implementation 'com.aliyun.ams:alicloud-android-hotfix:3.2.12'
然后Sync Now项目,如果报错,提示无法下载,需要在项目根目录下build.gradle文件中两个repositories节点下都添加如下代码:
maven{ //阿里云国内镜像
url 'http://maven.aliyun/nexus/content/groups/public/'
}
4、新建kotlin文件SophixStubApplication,继承自阿里云的SophixApplication()类
(1)@Keep后面为自己原来的Application类,这是固定写法
(2)在attachBaseContext方法中初始化热修复相关代码,如果需要使用MultiDex,需要在此方法内调用,原来自己的Application类中不要在初始化,否则冲突
(3)在SophixStubApplication类中的onCreate()方法中去查询是否需要热修复
完整代码如下:
package com.yaocongicaltest
import androidntent.Context
import android.util.Log
import androidx.annotation.Keep
import androidx.multidex.MultiDex
import com.taobaophix.PatchStatus
import com.taobaophix.SophixApplication
import com.taobaophix.SophixEntry
import com.taobaophix.SophixManager
import com.yaocongicaltest.afinal.StringConstants
class SophixStubApplication : SophixApplication() {
private val TAG = "SophixStubApplication"
@Keep
@SophixEntry(MyApp::class)
internal class RealApplicationStub
override fun attachBaseContext(base: Context) {
super.attachBaseContext(base)
//如果需要使用MultiDex,需要在此处调用。
MultiDexstall(this)
initSophix()
}
private fun initSophix() {
var appVersion: String? = "1.0"
try {
appVersion = this.packageManager.getPackageInfo(this.packageName, 0).versionName
} catch (e: Exception) {
}
val instance = SophixManager.getInstance()
instance.setContext(this)
.setAppVersion(appVersion)
.setSecretMetaData(
StringConstants.hotfix_app_key,
StringConstants.hotfix_app_secret,
StringConstants.hotfix_rsa
)
.setEnableDebug(true) //是否调试模式,默认为false,false模式下容易报错,最好打开
.setEnableFullLog()
.setPatchLoadStatusStub { mode, code, info, handlePatchVersion ->
if (code == PatchStatus.CODE_LOAD_SUCCESS) {//补丁加载成功
Log.i(TAG, "sophix load patch success!")
} else if (code == PatchStatus.CODE_LOAD_RELAUNCH) {
// 如果需要在后台重启,建议此处用SharePreference保存状态。
Log.i(TAG, "sophix preload patch success. restart app to make effect.")
}
}itialize()
}
override fun onCreate() {
super.onCreate()
// queryAndLoadNewPatch不可放在attachBaseContext 中,否则无网络权限,建议放在后面任意时刻,如onCreate中
SophixManager.getInstance().queryAndLoadNewPatch()
}
}
其中@Keep为自己原来的Application类,setSecretMetaData后面三个参数为在阿里云申请的key、srcret和rsa。
5、清单文件中,把之前自己的Application类改成SophixStubApplication:
<application
android:name=".SophixStubApplication">
</application>
6、如果需要混淆添加如下代码:
注意事项和错误解决:
1、此处SophixEntry应指定自己之前的的Application,并且保证自己的Application类名不被混淆。
2、自己真实的Applcation不可以继承MultiDexApplication,否则冲突。
3、发布补丁时,应用版本指的是版本名称versionName,而不是版本号,代码中设置的版本名称必须和阿里云后台一致,之前我测试时候就是因为在阿里云后台随便死了个版本名称,导致一致测试失败。
4、如果报错:Error:Program type already present: com.ta.utdid2.b.a.a。解决方案有两个:
(1)如果项目中有支付宝支付,则需要重新下载不包含utdid的sdk包,支付宝支付sdk下载页面有说明。
(2)在app目录下的build.gradle文件相应集成热修复的依赖改成,通过代码方式移除掉utdid冲突问题。
implementation ('com.aliyun.ams:alicloud-android-hotfix:3.2.12'){
exclude(module:'alicloud-android-utdid')
}
5、如果在编译或者运行中报kotlin的协程错误
Module with the Main dispatcher is missing. Add dependency providing the Main dispatcher, e.g. ‘kotlinx-coroutines-android’
则尽量去使用阿里云热修复的最新版,老版本确实有这个问题。
6、在使用阿里云补丁生成包工具时,尽量勾选冷启动方式去修复,避免崩溃问题。
- 2022-06-03intp型人格适合的恋人(intp型人格恋爱)
- 2022-05-20麻烦别人说什么礼貌用语(需要别人帮忙时用的礼貌用语有哪些)
- 2022-05-19ins文案(ins高级感文案伤感)
- 2022-05-18ido是什么牌子(IDo是哪个国家的牌子)
- 2022-05-15cpm是什么意思(com是啥意思)
- 2022-05-14ins高级感文案(ins高级感文案伤感)
- 2022-01-23杨丞琳出道21周年(杨丞琳是歌手出道吗)
- 2022-01-22BLACKPINK方不再收粉丝礼物
- 2022年01月份新剧上映时间表(待播电视剧名单2022年)
- jrs直播(无插件)直播(jrs直播(无插件)直播极速体育360)
- 2021年12月份即将上映的所有电视剧(2021电视新剧上映时间表12月)
- 最近好看的电视剧2021排行榜(最近热播电视剧排行榜2021最新)
- 痞幼照片是怎么回事(痞幼吃鸡是怎么回事)
- nba咪咕全场录像回放像(nba比赛回放录像咪咕视频)
- 撒贝宁职务级别是什么(撒贝宁是什么级别的干部)
- 2021年11月播出的电视剧(2021十一月热播电视剧)
- nba直播在线观看免费(nba直播在线观看免费篮网)
- 2022将要开拍的电视剧(待播电视剧名单2022年)
- 2021男篮世界杯赛程表(男篮世界杯分组赛程表)
- 2021年11月电视剧上映时间表(2021有什么好看的电视剧)
- 王牌部队好看吗(王牌部队湛蓝行动谁赢了)
- 等着我孙海洋(等着我孙海洋认亲直播)
- 腾讯体育nba直播在线观看免费(腾讯nba免费视频直播)
- 即将定档上映的电视剧2022(2022年定档电视剧上映时间表)
- 2021年11月电影上映一览表(这7部必须看)
- 2022年出的电视剧有哪些(2022年电视剧上映时间表全部)
- nba在线观看直播免费(nba在线观看直播免费极速)
- 2021年10月电视剧上映时间表(2021年10月电视剧排行榜)