差异化集成性能优化工具

本文介绍了Android应用中如何进行差异化编译和配置,包括FlavorDimensions的意义和ProductFlavors组合,以及版本维度的配置。同时,文章详细讨论了内存泄漏工具LeakCanary和Koom的集成,以及BlockCanary耗时检测工具的使用,帮助提升应用性能和稳定性。
摘要由CSDN通过智能技术生成

差异化工具集成

 

目录

差异化工具集成

介绍:

一、差异化编译

1.FlavorDimensions 的意义

2.ProductFlavors 组合

二、差异化配置

1.Version维度配置版本相关信息

4.Debug和Release版本调试工具配置

三、常用三方库查询下载

四、内存泄漏工具集成

(1)LeakCanary内存泄漏工具接入使用

(3)内存泄漏的判定机制

(4)内存泄漏的轨迹生成机制

五、Koom工具集成

(1)Koom工具接入使用

(2)Koom使用场景

(3)实现原理

六、BlockCanary耗时检测工具集成

(1)BlockCanary内存泄漏工具接入使用

(2)实现原理

七、Make方式集成检测工具方案

(1)获取对应工具包

(2)配置make文件

(3)实现步骤


 

介绍:

差异化编译目的是对不同版本不同渠道对代码,资源,lib库等文件单独配置打包,解耦业务,功能,模块减少包大小。

一、差异化编译

1.FlavorDimensions 的意义

多维度理解

其实这涉及到了版本差异化打包的内容,如果说3.0以前的版本差异化打包更多的是为了厂商定制的,那么3.0以后的版本差异化打包就是在厂商的基础之上加入了机型,渠道等一些参数,变成了多个维度的产品。

也就是说之前的一个产品只有一个参数进行描述的话,现在就可以为其增加多个参数进行配置,比如A厂商的A渠道的A机型、A厂商的B渠道的C机型等,维度越多,产品的样式越发丰富。                     

2.ProductFlavors 组合

productFlavors 从字面了解是“产品风味”。他需要和一个风味维度对接,否则会报错。接着我们上面的例子,使用 productFlavors 定义维度上的风味,使用 dimension 关联。

可以理解为总共有两个维度公司(version)和渠道(country),这里version的维度排前面,所以所有的产品就是,A版本的A渠道产品,A版本的B渠道产品,B版本的A渠道产品,B版本的B渠道产品。可见,增加维度之后,版本差异化的内容就更为丰富了。

 

编译不同task在build->outputs->apk可以找到不同维度目录apk

二、差异化配置

1.Version维度配置版本相关信息

productFlavors可以重新定义defaultConfig配置里的信息dimension关联维度

(1)version定义版本号,sdk版本。。。可以通过DefaultProductFlavor.java文件查看可以配置的属性

(2)Country下面定义包名,图标,应用名,签名。。。

(3)最终安装apk以后可以在桌面看到不同应用

(4)差异化配置代码,资源,Aidl,Jni…可以通过AndroidSourceSet.java文件查看可以配置属性

(5)注意事项

代码做差异化配置时直接用AndroidStudio创建的项目在settings.gradle配置里面可以看到

include ':app'

这个说明项目根目录在app目录下,默认代码和资源文件都是固定导致后面配置的sourceSet差异化代码无法生效。

解决方法:

(1)settings.gradle去掉应用根目录配置':app',去除以后所有文件代码资源等需要在下面重新配置,因为跟目录变成了项目根目录

sourceSets {

    main {

              java.srcDir './app/src/main/java'

            res.srcDirs './app/src/main/res'

            manifest.srcFile '/app/src/main/AndroidManifest_common.xml'

    }

}

(2)把app/src/下的build.gradle和最外层的build.gradle合并,最好保留根目录下的build.gradle文件

4.Debug和Release版本调试工具配置

为了监控应用内存,耗时和其他问题代码需要借助一些常用工具,这些工具要区分研发版本和发布版本,不能把调试工具带入到用户版本上,如果通过一些代码变量控制很容易出问题,单通过差异化配置就可以一次解决打包引起的代码混乱问题。

 

(1)debug版本时导入相关工具,也可以根据自己定义的渠道添加不同的依赖库

dependencies {

    ...

    //debug模式时工具编入项目

    debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.6.3'

    //release编译

    releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.6.3'

    debugImplementation 'com.github.markzhai:blockcanary-android:1.5.0'

    releaseImplementation 'com.github.markzhai:blockcanary-n
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值