作家
登录

Android模块化探索与实践

作者: 来源: 2017-05-18 13:03:07 阅读 我要评论

  •    ... 
  •    > 
  •    <activity 
  •        android:name="com.baronzhang.android.newhouse.NewHouseMainActivity" 
  •        android:label="@string/new_house_label_home_page"
  •        <intent-filter> 
  •            <category android:name="android.intent.category.DEFAULT" /> 
  •            <category android:name="android.intent.category.BROWSABLE" /> 
  •            <action android:name="android.intent.action.VIEW" /> 
  •            <data android:host="com.baronzhang.android.newhouse" 
  •                android:scheme="router" /> 
  •        </intent-filter> 
  •    </activity> 
  • </application> 
  • 而对于 Module 中有些资本不想被外部拜访的,我们可以创建 res/values/public.xml,添加到 public.xml 中的 resource 则可被外部拜访,未添加的则视为私有:

    1. <resources> 
    2.     <public name="new_house_settings" type="string"/> 
    3. </resources> 

    模块化的过程中我们经常会碰到反复依附的问题,如不雅是经由过程 aar 依附, gradle 会自动帮我们找出新版本,而摈弃老版本的反复依附。如不雅是以 project 的方法依附,则在打包的时刻会出现反复类。对于这种情况我们可以在 build.gradle 中将 compile 改为 provided,只在最终的项目中 compile 对应的 library ;

    其实袈溏年面的安居客模块化设计图上能看出来,我们的设计筹划能必定程度上规避反复依附的问题。比如我们所有的第三方库的依附都邑放到 OpenSoureLibraries 中,其他须要用到相干类库的项目,只须要依附 OpenSoureLibraries 就好了。

    模块化过程中的建议

    对于大年夜型的贸易项目,在重构过程中可能会碰到营业耦合严重,难以拆分的问题。我们须要先理清营业,再着手拆分营业模块。比如可以先在本来的项目中根据营业分包,在必定程度大将各营业解耦后拆分到不合的 package 中。比如之前新房和二手房因为同属于 app module,是以他们之前是经由过程隐式的 intent 跳转的,如今可以先将他们改为经由过程 Router 来实现跳转。又比如新房和二手房中公用的模块可以先下放到 Business Component Layer 或者 Basic Component Layer 中。在这一系列工作完成后再将各个营业拆分成多个 module 。

    模块化重构须要渐进式的┞饭开,弗成一触而就,不要想着将全部项目颠覆重写。线上成熟稳定的营业代码,是经由了时光和大年夜量用户考验的;全部颠覆重写往往费时辛苦,实际的效不雅平日也很不睬想,各类问题层出不穷得不偿掉。对于这种项目标模块化重构,我们须要一点点的改进重构,可以分散到每次的营业迭代中去,慢慢镌汰掉落陈腐的代码。

    各营业模块间肯定会有公用的部分,按照我前面的设计图,公用的部分我们会根据营业相干性下放到营业组件层(Business Component Layer)或者基本组件层(Common Component Layer)。对于太小的公有模块不足以构成零丁组件或者模块的,我们先放到类似于 CommonBusiness 的组件中,在后期赓续的重构迭代中视情况进行进一步的拆分。过程中完美主义可以有,切记弗成过度。

    debug 模式下的 AndroidManifest.xml :

    以上就是我在模块化摸索实践方面的一些经验,不住之处还望大年夜家指出。

    【编辑推荐】

    1. 如安在Android App上高效显示位图
    2. Android动态代劳以及应用动态代劳实现ServiceHook
    3. Android仿华为气象绘制刻度盘
    4. Android中的IPC机制
    5. 一个简单实用的Android调试应用技能
    【义务编辑:51CTO_OS TEL:(010)68476606】

      推荐阅读

      红帽张先民博士:开源驱动企业数字化转型

    【51CTO.com原创稿件】提到Linux,我们就会想到红帽,就跟提到Windows就会想到微软一样。作为一家专注于架构平>>>详细阅读


    本文标题:Android模块化探索与实践

    地址:http://www.17bianji.com/lsqh/35300.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)