大型项目架构模式(模块化/组件化)

如何创建模块

(1)project(在当前工程下面) --> new Module --> Android Library (Android应用程序的库)-->Module name:给这个库取名 lib_network(命名一般以lib_开头)

(2)ibrary依赖库和appapplication 的build.gradle区别:

library库只能被依赖,不能独立运行。application 应用可以独立运行。在库里面,库既然不是应用程序,不能独立运行,只能被其他应用程序依赖,那么就没有应用程序的Id。应用程序会有唯一的标识即其Id,还有版本号。


将Library依赖库改造为可运行的程序

①将build.gradle中的plugins的library改为application

②defaultConfig中添加唯一标识符applicationId

[versionCode 1  versionName “1.0”可有可无,可以拷贝下来] 

③添加主界面LoginActivity(作为独立运行的应用程序需要有界面)

注意勾选Launcher Activity作为运行初始界面

④配置login模块下的AndroidManifest.xml⽂件

创建的所有的Activity都是在AndroidManifest.xml文件有注册的

表示注册了,但是缺乏主界面的<intent-filter>配置

<intent-filter> 

<action android:name="android.intent.action.MAIN" /> 

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>


⑤将app模块下的res → values 和values-night目录

copy 到 login→ res并更改名字

在strings中添加<string name="app_name">登录</string>

更改them中的name(注意两套主体都要改)

→最后在AndroidManifest.xml⽂件中配置labeltheme

引用外部依赖库(Logger)

在build.gradle中添加引用

implementation  api引用模块的区别:

1.implementation 只是在当前模块中引用工程或者依赖(子模块无法继承)

2.api 但凡依赖当前模块的地方都可以继承/依赖api(project(":Logger"))

3.app只能导入依赖库不能导入独立的应用程序

引用之后就可以直接用组件里的东西了

统一管理build gradle配置文件中的常量信息

[版本信息、依赖文件](避免修改多遍)

Build.gradle中好多东西是一样的,方便统一修改依赖库信息

1. 在当前工程目录下创建文件夹Open In --> Explorer-->打开了当前这个工程,进去-->创建一个文件夹buildSrc\src\main\java(注意是固定的写法)



2. 在工程里面,在buildSrc里新建一个New->File -> build.gradle(Groovy版本)/ build.gradle.kts(kotlin版本)

3.在 build.gradle写入代码

plugins{

`kotlin-dsl`

}

repositories{

mavenCentral()

}

Android Studio默认在编译的过程中,但凡做了以上操作,就可以通过buildSrc给所有的模块进行共享数据的

什么时候需要添加buildSrc:当需要统一管理所有build.gradle中的常量时

4.添加一个配置文件Configers 统⼀管理常量(在buildSrc\src\main\java下创建file)

可以创建多个静态类(注意不要和系统的重名),统一管理版本信息、依赖

后续如果需要改的话就统一更改一个即可

版本信息
统一管理依赖

使用一个开关管理application 和 library之间的切换

在开发的时候作为应用程序,但是在使用的时候应该作为一个库导入依赖

library 或者 application (模块还是应用程序)

apply plugin: 'com.android.library'

只有是应用程序才有com.android.application和applicationId

提取通用的common.gradle(进一步优化)

gradle长得都一样,可以把里面的相同的部分都抽出来,common.gradle

在project工程目录创建⼀个文件 New -> File -> common.gradle (common.gradle.kts)

注意:要拷贝纯粹的依赖库的gradle

1. common.gradle中单独抽出apply plugin:'org.jetbrains.kotlin.android'

2. 不能抽出namespace,Id(独有的)

3. 删除模块中相同部分、引入common.gradle

apply from:"${rootProject.rootDir}/common.gradle" (访问主程序下的根目录)

抽离
导入

如何删除一个模块

方法一:

1.settings.gradle删除对应模块的include

2.在要删除的模块下Open In --> Explorer 在工程里面删除对应文件夹

方法二:

1.点击File -> Project structure

2.在Project Structure窗口中,选择要移除的module,点击红色的“-”,然后选择Yes。

3.打开setting.gradle文件查看include后是否还有你的module,如果没有那就说明移除成功。

4.最后右键点击你的module这时候已经有了delete,直接点击delete即可。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容