腾讯Bugly热更新

一.配置依赖环境

参考BuglyAndroid热更新使用指南https://bugly.qq.com/docs/user-guide/instruction-manual-android-hotfix/

 

第一步:添加插件依赖

工程根目录下“build.gradle”文件中添加:

classpath"com.tencent.bugly:tinker-support:latest.release"

此处注意,指南上的latest.release拼写有误,要用最新版本的注意一下。

第二步:集成SDK

1.gradle配置

app module“build.gradle”文件中添加(示例配置)中:

注意注释掉原有bugly的仓库。如果你的项目中原先有应用过Bugly仓库,记得注释掉。

2.app module“build.gradle”文件中添加:

// 依赖插件脚本

apply from:'tinker-support.gradle'

3.tinker-support.gradle内容如下所示(示例配置):

注:您需要在同级目录下创建tinker-support.gradle这个文件。即是app->new->file(名为:tinker-support.gradle)

注意事项:

1// 此处填写每次构建生成的基准包目录

def baseApkDir = "app-0307-17-26-48"

实现基准包时可以不用修改,生成的基准包格式会是“app-月日---秒”

第三步:初始化SDK

参考网站https://bugly.qq.com/docs/user-guide/instruction-manual-android-hotfix/,直接对照着写就好,注意enableProxyApplication = false/true的匹配

第四步:AndroidManifest.xml配置

1. 权限配置

2. Activity配置

3. 配置FileProvider

如果您想兼容Android N或者以上的设备,必须要在AndroidManifest.xml文件中配置FileProvider来访问共享路径的文件。

<provider

   android:name="android.support.v4.content.FileProvider"

   android:authorities="${applicationId}.fileProvider"

   android:exported="false"

   android:grantUriPermissions="true">

   <meta-data

       android:name="android.support.FILE_PROVIDER_PATHS"

       android:resource="@xml/provider_paths"/>

</provider>

第一次使用则直接在res中加入xml包。再在这个xml包中新建资源provider_paths.xml 文件,照着填写即可。

若是使用第三方库

<provider

   android:name=".utils.BuglyFileProvider"

   android:authorities="${applicationId}.fileProvider"

   android:exported="false"

   android:grantUriPermissions="true"

   tools:replace="name,authorities,exported,grantUriPermissions">

   <meta-data

       android:name="android.support.FILE_PROVIDER_PATHS"

       android:resource="@xml/provider_paths"

       tools:replace="name,resource"/>

</provider>

注意

(1)    tool如果报错,则需要在manifest中加入:

xmlns:tools="http://schemas.android.com/tools"

2provider_paths:将FileProvider按照以下的方式合并:

<?xml version="1.0"encoding="utf-8"?>

<resource>

       <paths>

           <!--   配置1  -->

       </paths>

       <paths xmlns:android="http://schemas.android.com/apk/res/android">

       <!-- 这里配置的两个外部存储路径是升级SDK下载的文件可能存在的路径 -->

       <!--/storage/emulated/0/Download/com.bugly.upgrade.demo/.beta/apk-->

       <external-path name="beta_external_path"path="Download/"/>

       <!--/storage/emulated/0/Android/data/com.bugly.upgrade.demo/files/apk/-->

       <external-path name="beta_external_files_path"path="Android/data/"/>

       </paths>

</resource>

第五步:混淆配置

appproguard-rules.pro中添加

二.生成基准包,补丁包,以及发布补丁

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


注意事项:

1.设置tinker-support.gradle文件中的thinkId, 打包时的thinkId,唯一标识一个apk.

   // 构建基准包和补丁包都要指定不同的tinkerId,并且必须保证唯一性

   tinkerId = "1.0.0-base"

//   tinkerId = "1.0.0-patch"

在此处设置thinkId时,基准包一般设置为base,补丁包一般设置为patch;前面的版本号一定与当前项目的版本号相同

例如:我的当前项目versionName : '1.0.0',,所以我的基准包为1.0.0-base

设置完成后,

2.要先运行基线版本的基准包,才能成功上传补丁,补丁发布时可能会有点耗时,请耐心等待一下。

3.想要生成的apk可以运行,需要在打包时进行数字签名:bulid->Generate Signed APK->填写完整。此时有签名文件就直接引用,没有就创建,此处可参考:

http://blog.csdn.net/Monas/article/details/51452691

http://blog.csdn.net/west_key/article/details/53731117

生成签名文件之后,需要在“project structure”(找不到就搜索)中设置已有的签名文件。

设置完之后会在appbuild.gradle文件中出现如下签名配置:

   // 签名配置

   signingConfigs {

       release {  

           keyAlias '…'

           keyPassword '…'

           storeFile file('…')

           storePassword '…'

        }

       debug {

           keyAlias '…'

           keyPassword '…'

           storeFile file('…')

           storePassword ‘…'

       }

    }

然后另外设置构建类型:

   // 构建类型

   buildTypes {

       release {                                     //构建release

           minifyEnabled false                    //是否开启混淆

           signingConfig signingConfigs.release//使用signingConfigs中配置的签名文件

       proguardFilesgetDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

       }

       debug {

           debuggable true

           minifyEnabled false

           signingConfig signingConfigs.debug

       }

    }

备注发布到开发设备àApplicationonCreate()方法中加入如下代码:

   public void onCreate() {

       super.onCreate();

              //发布补丁时:选择为开发设备

              //设置为开发设备,注意这个必须在初始化Bugly之前设置为开发设备

              Bugly.setIsDevelopmentDevice(this,true);

              //这里实现SDK初始化,appId替换成你在Bugly平台申请的appId

              //调试时,将第三个参数改为true,这是打印Log的开关

       Bugly.init(this,"申请的appId",false);

              //异常展示的时候,建议设置为手机号码,方便后期的bug修复

       CrashReport.setUserId(this,"你需要作为UseId的参数");

    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值