美文网首页
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