Android(安卓)热修复(腾讯bugly)
16lz
2022-06-20
腾讯bugly集成指南
1、在build.gradle中添加依赖
dependencies { classpath 'com.android.tools.build:gradle:3.2.0' classpath 'com.vanniktech:gradle-android-junit-jacoco-plugin:0.6.0' classpath 'com.tencent.bugly:tinker-support:1.1.5'//加上这行 // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files }
2、在 app build.gradle中添加依赖,没有加Android support中的MultiDex,是因为我用了Androidx,里面自带这个包,如果没有需要添加上,建议用Androidx,毕竟官方已经出了,这样可以少引入好多包,好处多多。
implementation "com.tencent.bugly:crashreport_upgrade:1.3.6" // 指定tinker依赖版本(注:应用升级1.3.5版本起,不再内置tinker) implementation 'com.tencent.tinker:tinker-android-lib:1.9.9'implementation 'com.tencent.bugly:nativecrashreport:latest.release'//bug上传
3、在Application中初始化,初始化完毕,别忘了在清单文件中引入自定义的application,我是基于
enableProxyApplication = true的情况下做的,要不改的代码太多了,只能用这中方式了。
@Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this);//必须加 Beta.installTinker();//初始化 }@TargetApi(9) protected void setStrictMode() { StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().permitAll().build()); StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectAll().penaltyLog().build()); } @Override public void onCreate() { super.onCreate(); setStrictMode(); // 设置是否开启热更新能力,默认为true Beta.enableHotfix = true; // 设置是否自动下载补丁 Beta.canAutoDownloadPatch = true; // 设置是否提示用户重启 Beta.canNotifyUserRestart = true; // 设置是否自动合成补丁 Beta.canAutoPatch = true; Bugly.init(this, "xxxxxx", true); }
4、在app 目录下创建thinker-support.gradle文件
apply plugin: 'com.tencent.bugly.tinker-support'def bakPath = file("${buildDir}/bakApk/")/** * 此处填写每次构建生成的基准包目录 这个是你第一次assembleRelease会在build生成一个如下的文件夹 创建补丁包的时候,需要填写,否则报错。 */def baseApkDir = "app-0829-10-34-40"/** * 对于插件各参数的详细解析请参考 */tinkerSupport { // 开启tinker-support插件,默认值true enable = true // 自动生成tinkerId, 你无须关注tinkerId,默认为false autoGenerateTinkerId = true // 指定归档目录,默认值当前module的子目录tinker autoBackupApkDir = "${bakPath}" // 是否启用覆盖tinkerPatch配置功能,默认值false // 开启后tinkerPatch配置不生效,即无需添加tinkerPatch overrideTinkerPatchConfiguration = true // 编译补丁包时,必需指定基线版本的apk,默认值为空 // 如果为空,则表示不是进行补丁包的编译 // @{link tinkerPatch.oldApk } baseApk = "${bakPath}/${baseApkDir}/app-release.apk"// baseApk = "${bakPath}/${baseApkDir}/app-debug.apk" // 对应tinker插件applyMapping baseApkProguardMapping = "${bakPath}/${baseApkDir}/app-release-mapping.txt"// baseApkProguardMapping = "${bakPath}/${baseApkDir}/app-debug-mapping.txt" // 对应tinker插件applyResourceMapping baseApkResourceMapping = "${bakPath}/${baseApkDir}/app-release-R.txt"// baseApkResourceMapping = "${bakPath}/${baseApkDir}/app-debug-R.txt" // 构建基准包跟补丁包都要修改tinkerId,主要用于区分 tinkerId = "1.0.3-path" // 打多渠道补丁时指定目录 // buildAllFlavorsDir = "${bakPath}/${baseApkDir}" // 是否使用加固模式,默认为false // isProtectedApp = true // 是否采用反射Application的方式集成,无须改造Application enableProxyApplication = true // 支持新增Activity supportHotplugComponent = true}/** * 一般来说,我们无需对下面的参数做任何的修改 * 对于各参数的详细介绍请参考: * https://github.com/Tencent/tinker/wiki/Tinker-%E6%8E%A5%E5%85%A5%E6%8C%87%E5%8D%97 */tinkerPatch { tinkerEnable = true ignoreWarning = false useSign = false dex { dexMode = "jar" pattern = ["classes*.dex"] loader = [] } lib { pattern = ["lib/*/*.so"] } res { pattern = ["res/*", "r/*", "assets/*", "resources.arsc", "AndroidManifest.xml"] ignoreChange = [] largeModSize = 100 } packageConfig { } sevenZip { zipArtifact = "com.tencent.mm:SevenZip:1.1.10"// path = "/usr/local/bin/7za" } buildConfig { keepDexApply = false// tinkerId = "base-2.0.1" }}
5、可能会报一些错,在gradle.properties中加入
android.useDexArchive= trueandroid.enableD8.desugaring= trueandroid.enableD8 = true
6、需要注意的点,打补丁包的时候用buildThinkerPatch.Release,然后上传到bugly的发布补丁就行了。
更多相关文章
- 完成android的manven项目管理
- Android(安卓)studio安装Genymotion插件
- MUI调用自定义插件(Android)
- Android(安卓)-- 插件化
- 从头开始学Android—Android(安卓)Studio(二)
- Android(安卓)源代码在线查看(转)
- Android(安卓)Studio在引用项目时使用JDK1.8的解决办法
- Android(安卓)Studio 插件
- android studio 启动报nexpected exception during symbol build