热更新-Bugly-Tinker集成一篇足够

1,579 阅读4分钟

状态:近期天气炎热影响欧巴心情,感觉每一天都不适合工作只想撩妹(坏笑),由于UI妹子大概太迷恋我了(这里添加无奈的表情),很多文案处处给我藏情,以至于上线得到很多领导对我的慰问。让我甚是稀罕UI小姐姐(笔芯小手势)。


1.主要目的》

那我们该如何表白UI小姐姐呢?呸...那我们该如何在不发版本的情况下解决线上文案错误的问题呢?这里选择 “热跟新”


备注:这篇文章只讲解集成和使用,涉及源码分析可以搜一下资源。(请给欧巴一些撩妹的时间)。


2.集成开始

第一步,配置app下gradle

defaultConfig节点添加以下 第一处-----------
    multiDexEnabled true
    ndk {
            abiFilters "armeabi"
        }

dependencies 节点添加以下引用 第二处-----------
    // 多dex配置
    compile 'com.android.support:multidex:1.0.1'
    //注释掉原有bugly的仓库
    //compile 'com.tencent.bugly:crashreport:latest.release'//其中latest.release指代最新版本号,也可以指定明确的版本号,例如1.3.4
    compile 'com.tencent.bugly:crashreport_upgrade:1.3.5'
    // 指定tinker依赖版本(注:应用升级1.3.5版本起,不再内置tinker)
    compile 'com.tencent.tinker:tinker-android-lib:1.9.6'

gradle文件最下面 引入插件  第三处-----------
    // 依赖插件脚本
    apply from: 'tinker-support.gradle'

备注:app目录下需要添加tinker-support.gradle文件(文章最后面)


第二步,初始化

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        // 这里实现SDK初始化,appId替换成你的在Bugly平台申请的appId
        // 调试时,将第三个参数改为true
        Bugly.init(this, "f7091da9a6", true);
    }

    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        // you must install multiDex whatever tinker is installed!
        MultiDex.install(base);

        // 安装tinker
        Beta.installTinker();
    }
}


第三步,添加权限

//添加权限 第一处-----------
 <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.READ_LOGS" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

//第二处 自定义application
<application
        android:name=".MyApplication"
      >
</application>

//第三处 添加activity
 <activity
            android:name="com.tencent.bugly.beta.ui.BetaActivity"
            android:configChanges="keyboardHidden|orientation|screenSize|locale"
            android:theme="@android:style/Theme.Translucent" />

按照官方到这里就算结束了。很多会问 难道没有《坑》?

答案很显然的了,忽略了签名的配置。签名一定要配置,配置,配置(重要事说三遍)。签名配置并不是本篇文章要讲解的,可以上网查下,或者看下demo。


3.热更新使用

第一步,打上线apk(基本包)

成功之后会在build/outputs/bakApk路径下生成每次编译的基准包、混淆配置文件、资源Id文件,有可能也会没有mapping文件,如下图所示:

备注:请留意 编译每次生成的报名 app-0209-16-24-07(补丁包需要这个)

到这里一个提供上线的apk 就可以上架市场或者发个UI小姐姐使用了。

那我们如何 利用apk表白小姐姐呢?


第二步.热更新-(补丁包)生成。

目的:每天悄悄的修改 小姐姐手机上app的名称“在吗”,“我喜欢你”,“你很丑”,额.....看你的脑洞有多大。


例如基本包名字之前是DvlpNews

<resources>
    <string name="app_name">DvlpNews</string>
</resources>


修改之后

<resources>
    <string name="app_name">我稀罕你</string>
</resources>

修改需要变更内容之后,开始正式打补丁包


修改tinker-support.gradle文件内容

def baseApkDir = "app-0710-18-38-23"//要修改成编译生成的包名
tinkerId = "6.6.6" //这个任意,保证每次打包唯一就行


执行构建补丁包的task

生成的补丁包在build/outputs/patch目录下:

上传补丁包到平台并下发编辑规则 (地址放在文章后面)

备注:点击之后会有下发中的状态,当小姐姐打开app的时候,才会执行热更新下发请求。因为热更新的初始化我们放在了MyApplication类里面。


最终效果



*******************************************

文章中涉及的文件,以及材料地址。


tinker-support.gradle文件:

https://github.com/dvlp-org/DvlpTinker/tree/master/app


bugly 下发平台:

https://bugly.qq.com/v2/


官方文档地址:

https://bugly.qq.com/docs/user-guide/instruction-manual-android-hotfix-demo/?v=20180709165613


demo地址 欢迎star:

https://github.com/dvlp-org/DvlpTinker.git


提示:公众回复“ 热更新地址” 支持链接跳转.......


本次项目为 热更新测试集成项目,集成过程进行简单记录,有可能在正式项目接入中存在差异,例如多渠道等等....

集成中有遇到问题,请以官方文档为准。当然也可以文章留言区记录,或者公众号内提问....


看到这里了......有没有人关心我和UI妹子最后怎样???



                            关注『DvlpNews』

                            把握前沿技术脉搏