随着项目功能的增多,我们在Android Studio下的module也越来越多,或者说本身我们就想将功能按module划分。比如,你想做个 “微信” 一样的应用,有聊天模块、朋友圈模块,购物模块、游戏模块等等,你想把这些模块以module划分,通常情况下是将这些module打包成一个微信apk的,但在某些情况下又想能够单独发一个 朋友圈apk,或者只有聊天功能的apk等。只需要做以下几点就可以了。
1. 如何改变module的“属性”,是library还是application?
2. 要想到每个module都有自己的“生命周期”,怎么让module作为library时,作为Application的module无浸入的加载module生命周期?
1. 如何改变module的“属性”?
在gradle中可以使用一个变量来控制是library还是application,如下所示:
在需要module成为apk时,将isBuildApk改为true,但此时需要在额外增加一个配置才行,否则在编译时会报错误,说是找不到applicationId:
当然,如果你想在编译成apk时,额外增加一些不作为library时的一些代码时,以及使用作为app的AndroidMenifest.xml时,可以做如下添加:
2. 每个module都有自己的“生命周期”,怎么让module作为library时,作为Application的module无浸入的加载module生命周期?
每个module都写一个自己的Application,然后在AndroidMinefist.xml中配置上这个Application的属性,在apk的module中增加一个总控制,能够调用到所有依赖的module的Application即可。
在moduleA中正常写moduleA所需要的Application:
并在moduleA中的AndroidMenifest.xml中增加如下选项:
再在主Apk中Application中,做如下处理,即通过查看Application的meta-data来找到都有哪些module的Application,然后在各个生命周期中调用得到的meta-data中的各个Application生命周期: