美文网首页如何做一个崩溃率少于千分之三噶应用appAndroidHotAndroid 文档
[Android]如何做一个崩溃率少于千分之三噶应用app(11

[Android]如何做一个崩溃率少于千分之三噶应用app(11

作者: CangWang | 来源:发表于2016-12-06 18:36 被阅读5042次

    以下是我这个系列的相关文章,有兴趣可以参考一下,可以给个喜欢或者关注我的文章。

    [Android]如何做一个崩溃率少于千分之三噶应用app--章节列表

    我建立了一个关于Android架构学习的群,里面可以进一步进行组件化学习的交流。

    群号是316556016,也可以扫码进群。我在这里期待你们的加入!!!

    ModuleBus地址

    例子里面会有简单的演示,只要下载之后就能看到源码和调用了。

    我也会封装越来越好用得功能到里面。

    如果觉得有用的话,请大家给一个github的星

    这个系列已经到了第十一课了。

    那么在这里先做个过渡性的总结

    我开展的这个系列的文章,其属于android的组件化开发,组件化开发有效让我们开发只关注于一个独立的功能模块,让我们代码更加有条理和统一。

    介绍的是组件化开发的一些特殊技巧,一些关于跨module通信,多渠道开发等,而第九节写是是组件化转化插件化的过程,其具体介绍可以查看第九节Small插件化Small源码分析系列文章

    这一节我要介绍的是关于gradle对于module组件化的一个开发体会,谨遵参考。

    组件开发中设计到多个模块的统一性,我们每一个module都需要统一需要安装的module参数,我们可以抽离到一个common_config.gradle里面

    1.新建一个common_config.gradle

    2.里面写一些我们基本的开发参数,全部都是自定义的

    3.引入到每个module的build.gradle里面,这里提供两种的连接代码

    4.然后就可以引用我们的参数到全部的module里面了

    *第八节的文章有介绍如果将gradle和AndroidMainfest,Android代码间交互,有兴趣可以翻一翻那个资料。

    参数统一的意义在于

    1.我只要在根目录的地方就可以调节我整个项目的参数。

    2.如果不小心引入不同版本的apk,你最后会发现你的apk容量会不知不觉地增大啦。然后你想着如果优化。其实你引入了多个不同版本的sdk,最后时候引用会增加sdk,所以容量会增大很多的。

    这小小的修改,无疑对我们组件化开发是巨大的助力。

    下一个必备技巧

    因为我们将每个功能模块最后用lib来封装,那么如果我们需要单独调试一个功能模块的话,需要如何去做呢?

    我们并不想每次都全编译全部的内容,我们只需要编译我们需要的那个模块内容,并验证就可以了。

    那么需要验证我们需要app进入的入口,将lib改为lib,我们如何才能lib和application的编译呢?

    (1)这里通过设置isDebug的标志来配置入口

    (2)通过isDebug来判断引用哪一个文件夹里面的AndroidManifest.xml

    manifest.srcFile指定使用哪个地址里面的AndroidMainifest

    res.scrDirs指定编译的资源的地址

    exclude使用用来编译时排除编入debug文件里面的文件

    *2017.2.27更新

    请注意,这里mainfest.srcFile 的mainfest一定要用小写,千万不能用大写,我自己也遇到过这个问题,QQ群里讨论过。

    (3)建立debug和main的文件夹AndroidManifest.xml和独有有Activity接口来特别定制出来。

    (4)到达这里或许觉得完了,我们还需要移除主module对其他功能module的依赖

    这里也是通过isDebug来区隔

    (5)这里需要注意因为指定了resDir为debug里面,所以需要将引用的也复制一份到debug的res里面。

    有人会问为何不将debug的文件夹也放到main里面,那么就可以引入mian文件夹里面,其实这样做也是可以的,但是请将debug的AndroidMainfest.xml的地址也要指定好。

    *2016.12.09更新

    发现只是修改common_config.gradle的isDebug属性,不会触发到其他module提示,是否有属性更改的情况,这里,需要完全clean工程里面的缓存,然后重编一次,才能替换成application的。

    还有一个问题,引入的顺序最好先引入common_config.gradle,再判断。因为有可能需要会因为先后问题让读取不到isDebug的属性。

    *2016.12.15更新

    网上有人提到可能会出现资源冲突问题

    其实只需要在每个组件的gradle加入一段代码就可以让资源前缀加入module相关的标示

    加入resourcePrefix就可以了,起资源会提示一定要加入前缀,不然会报错

    ****2017.4.27更新******

    如果你使用sourceSet来区分的时候

    有使用到本身资源的时候,其实是会有引用到的,然后会发现提示资源引用不到的问题,其实解决很简单,我们可以看到我们debug的时候引用的是src/debug/res里面的资源,而没有引用到我们main里面的资源,我们只要把资源路径添加上就好了。

    然后会发现如果你在创建Activity作为调试入口的时候,需要将包名路径也设置一致

    不然很容易因为复制AndroidMainfest后你因为包名的问题,无法找寻到Activity。

    再接下来,如果你遇到使用AppCompat的Activity,记得要设定theme为Theme.AppCompat.XXX.

    这一节就到这里,希望这样小小的优化,可以让大家组件化开发更加方便。

    下一节,请继续期待!!!

    相关文章

      网友评论

      • db59667c4a37:如果两个组件引用了同一个包,会不会冲突,是不是要将这个包下沉到baselibrary里面,供多个组件引用?
      • db59667c4a37:公司新项目组件化ing,慢慢学习
        CangWang:@db59667c4a37 多谢关注,也可以加入我建的群,有问题可以留言罗
      • Tyeee:resourcePrefix开头是否还需要整体把资源文件的命名做修改?这样似乎略繁琐。
      • 天之界线2010:可以哦~
        CangWang:@天之界线2010 相互学习 :smiley:
      • 2e7cb5177847:m
        CangWang:@HigherIdiot TX
      • 左手木亽:看了目录就知道是好文章。
        CangWang:@左手木亽 希望好文章都可以得到同道认可吧
      • UP7CR:mark
        CangWang:@UP7CR 多谢支持,也可以看看我其他的文章。

      本文标题:[Android]如何做一个崩溃率少于千分之三噶应用app(11

      本文链接:https://www.haomeiwen.com/subject/ndampttx.html