美文网首页
Bugly热更新配置

Bugly热更新配置

作者: BillyJean | 来源:发表于2022-03-18 11:43 被阅读0次

    一、热修复技术的应用

    热修复技术一般用来在线更新安装包,当热更新包发布后,会提示用户更新,重启应用,修复紧急Bug。下面的只是初级配置,使用的是集成了Tinker的腾讯的Bugly平台。

    二、Bugly平台热更新配置步骤

    1.第一步:

    • 项目根目录下buildle的配置
     dependencies {
            //gradle版本最好设置在4.0以下,高版本可能会出现适配问题
            classpath 'com.android.tools.build:gradle:3.2.0'
            //引入bugly中的tinker支持
            classpath "com.tencent.bugly:tinker-support:1.2.0"
            // NOTE: Do not place your application dependencies here; they belong
            // in the individual module build.gradle files
        }
    
    • 修改Project项目:gradle-wrapper.properties文件,这么做的目的是为了和gradle兼容。
      gradle-wrapper配置.png
      2.第二步
    • 将Bugly官方的Demo中的tinker-surpport.gradle文件放在Project目录中的app目录下,以及将SampleApplication类和SampleApplicationLike类一同拷贝放到MainActivity对应的目录。
      文件拷贝.png
    • 这里附上:Bugly官方地址
    • Chorm浏览器左边能显示项目目录使用的是Octotree拓展插件:插件地址
      下载并解压dist文件中的压缩文件
    • 修改tinker-support.gradle文件中的配置:
      // 编译补丁包时,必需指定基线版本的apk,默认值为空
        // 如果为空,则表示不是进行补丁包的编译
        // @{link tinkerPatch.oldApk }
       //如果是debug版本就将所有release替换成debug
        baseApk =  "${bakPath}/${baseApkDir}/app-release.apk"
    
        // 对应tinker插件applyMapping
        baseApkProguardMapping = "${bakPath}/${baseApkDir}/app-release-mapping.txt"
    
        // 对应tinker插件applyResourceMapping
        baseApkResourceMapping = "${bakPath}/${baseApkDir}/app-release-R.txt"
    
    • 修改sampleApplication类:第二个参数一定要修改为自己的SampleApplicationLike类的地址。
    public class SampleApplication extends TinkerApplication {
        public SampleApplication() {
            //这里的第二个参数一定要修改为自己的SampleApplicationLike的路径
            super(ShareConstants.TINKER_ENABLE_ALL, "com.bigzing.usehotfix2.SampleApplicationLike",
                    "com.tencent.tinker.loader.TinkerLoader", false, true);
        }
    }
    
    • 修改SampleApplicationLike类:在onCreate函数最后一行,这一步很重要
     // 这里实现SDK初始化,appId替换成你的在Bugly平台申请的appId
            Bugly.init(getApplication(), "xxxxxxxxxx", true);
    

    3.第三步:

    • app目录下的build.gradle文件中添加以下配置:
    apply plugin: 'com.android.application'
    // 依赖插件脚本
    apply from: 'tinker-support.gradle'
    android {
        compileSdkVersion 30
        buildToolsVersion "28.0.3"
        defaultConfig {
            applicationId "com.bigzing.usehotfix2"
            minSdkVersion 15
            targetSdkVersion 30
            versionCode 1
            versionName "1.0"
            testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    
            // 开启multidex
            multiDexEnabled true
            ndk {
                // 设置支持的SO库架构
                abiFilters 'x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a'//,'armeabi'
            }
        }
    
        //签名配置
        signingConfigs {
            config {
                keyAlias "android"
                keyPassword "123456"
                storeFile file('D:\\ASWorkSpace\\UseHotFix2\\app\\src\\android.jks')
                storePassword "123456"
            }
        }
        buildTypes {
            release {
                //签名配置
                signingConfig signingConfigs.config
                minifyEnabled true
                proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            }
        }
    }
    
    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
        implementation 'androidx.appcompat:appcompat:1.1.0-alpha01'
        implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha3'
        testImplementation 'junit:junit:4.12'
        androidTestImplementation 'androidx.test:runner:1.1.1'
        androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
    
        // 远程仓库集成方式(推荐)
        implementation 'com.tencent.bugly:crashreport_upgrade:1.5.23'
        //1. 指定tinker依赖版本(注:应用升级1.3.5版本起,不再内置tinker)
        //2.为了便于解答问题,这里的tinker版本建议跟随此处demo设置,如果微信更新了tinker版本,bugly会定期同步更新
        implementation 'com.tencent.tinker:tinker-android-lib:1.9.14.10'
        implementation "com.android.support:multidex:1.0.3" // 多dex配置
    }
    
    • 签名获取建议直接使用AS自带的GnenerateSignApk生成密钥,也可以在jdk的bin目录下调用keytool,使用命令行的方式创建。(这里打的是release包)

    4.第四步:添加用例,并在Activity中调用

    public class Utils {
        private static  final String TAG = "Utils";
        public static void test(){
            //Log.i(TAG, "test: ");
            throw new IllegalStateException("出错啦!!!");
        }
    }
    
    public class MainActivity extends AppCompatActivity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
        //button的onClick方法实现
        public void UnitTest(View view) {
            Utils.test();
        }
    }
    

    5.第五步:

    • 使用Gradle打包,打开Gradle编译
      打开Gradle编译.png
    • 调用Gradleapp目录下的build文件夹下的assembleRelease或者assembleDebug,根据你的签名配置来定
      开始编译.png
    • 编译打包完成后,会在app目录build文件下生成bakApk文件夹,找到对应的app-release.apk,在AS的Terminal终端使用adb install安装此文件即可。点击Button会发生闪退,接下来要进行修复

    6.第六步:修复并发布补丁包

    • tinker-support.gradle 修改基准包目录,使它们一致
      修改基准包目录.png
    • 屏蔽抛出的异常,变为正常状态
    public class Utils {
        private static  final String TAG = "Utils";
        public static void test(){
            Log.i(TAG, "test: ");
            //throw new IllegalStateException("出错啦!!!");
        }
    }
    
    • 重复第五步,使用assembleRelease来打包,打包完成后,找到app-outputs-patch-release-patch_signed_7zip.apk文件
      修复补丁包.png
      7.发布补丁包:
    • 登录Bugly官网,进入设置
      进入设置.png
    • 切换到应用升级,选择热更新,点击发布新补丁
    发布补丁包.png
    • 上传相关文件发布后,重启应用,即可看到提示更新的消息,至此所有补丁包发布流程已完毕。

    相关文章

      网友评论

          本文标题:Bugly热更新配置

          本文链接:https://www.haomeiwen.com/subject/abdidrtx.html