第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

集成阿里熱修復(fù)HotFix及注意事項(xiàng)

標(biāo)簽:
Android

阿里云热修复官方文档:

https://www.aliyun.com/product/hotfix?spm=5176.8142029.388261.233.kapzlu

集成步骤

1、在清单文件AndroidManifest.xml添加权限:

https://img1.sycdn.imooc.com//5e09996d0001910306390197.jpg

注:6.0以上手机别忘了动态申请内存卡读写权限。

2、在项目根目录下的build.gradle文件下添加:

maven {//移动热修复
            url "http://maven.aliyun.com/nexus/content/repositories/releases"
 }

https://img1.sycdn.imooc.com//5e09997b0001735009080743.jpg

3、在app目录下的build.gradle文件添加:

//热修复
implementation 'com.aliyun.ams:alicloud-android-hotfix:3.2.12'

https://img1.sycdn.imooc.com//5e0999870001e95e07400311.jpg

然后Sync Now项目,如果报错,提示无法下载,需要在项目根目录下build.gradle文件中两个repositories节点下都添加如下代码:

maven{ //阿里云国内镜像
            url 'http://maven.aliyun.com/nexus/content/groups/public/'
}

4、新建kotlin文件SophixStubApplication,继承自阿里云的SophixApplication()类

(1)@Keep后面为自己原来的Application类,这是固定写法

https://img1.sycdn.imooc.com//5e09935f0001441c03480094.jpg

(2)在attachBaseContext方法中初始化热修复相关代码,如果需要使用MultiDex,需要在此方法内调用,原来自己的Application类中不要在初始化,否则冲突

https://img1.sycdn.imooc.com//5e09935f0001a16406400592.jpg

(3)在SophixStubApplication类中的onCreate()方法中去查询是否需要热修复

https://img1.sycdn.imooc.com//5e09935f00017a7a09010147.jpg

完整代码如下:

package com.yaocong.articaltest

import android.content.Context
import android.util.Log
import androidx.annotation.Keep
import androidx.multidex.MultiDex
import com.taobao.sophix.PatchStatus
import com.taobao.sophix.SophixApplication
import com.taobao.sophix.SophixEntry
import com.taobao.sophix.SophixManager
import com.yaocong.articaltest.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,需要在此处调用。
        MultiDex.install(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.")
                }
            }.initialize()
    }

    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、如果需要混淆添加如下代码:

https://img1.sycdn.imooc.com//5e09936000017b9f06400462.jpg

注意事项和错误解决:

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、在使用阿里云补丁生成包工具时,尽量勾选冷启动方式去修复,避免崩溃问题。



點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
移動(dòng)開(kāi)發(fā)工程師
手記
粉絲
0
獲贊與收藏
0

關(guān)注作者,訂閱最新文章

閱讀免費(fèi)教程

  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫(xiě)下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消