首页 > 其他分享 >android多模块 安卓模块是什么意思

android多模块 安卓模块是什么意思

时间:2023-08-28 14:45:41浏览次数:37  
标签:一个 App Module library 模块 组件 android 安卓

模块化
在进入组件化之前,我们先说一下模块化。一个功能分为一个模块,例如登录模块,支付模块,广告模块。传统的开发模式中一个模块就是一个Module(也有不同模块放在不同包里面的情况)。

模块在功能上对代码进行了划分,但是在开发上任然存在问题。

例如

 当 需要debug 某一个模块的时候此时我们必须编译整个项目,当项目比较大的什么会很耗时间。我们希望任何一个模块都可以单独运行,单独测试。

实际组件化话主要解决的就是上面这个问题,希望将每一个模块都可以单独开发,运行,测试,但是解决一个问题的同时也会出现新的一些问题,例如Moudle A 可以单独运行的时候App 就无法依赖Module A,因为Module A 可以单独运行表明Module A 是一个application  而不是一个library。换句话说App 只在必要的时候依赖Module A, 此时 App 就不可以直接使用Module A 里面的任何类,否则App 在不依赖Module A的时候必然报错。既然如此App 又该如何调转到Module A 内的页面呢?此时就需要一个中间件或者是一个框架,常见的就是ARoute。至于模块之间的传值等问题都包含在这里面了。

在模块化开发中,不同模块之间有的时候也存在依赖关系,例如Module A   需要跳转到Module B 里面的一个页面,第一种解决方案是Module A 直接依赖Module B,第二种是通过App 中转。

Module A 直接依赖Module B 这种方法最简单但增加了耦合无疑是不可取的,在组件化中既不需要直接依赖也不需要通过App 中转,此时框架就充当中转。

 

 组件化

组件化的关键一步就是让某一个模块既可以作为一个application单独运行又可以作为一个library 引入到主模块,这一部分主要是通过gradle 实现。

一、新建Modules
1、新建Project,作为应用的主Module。

2、新建Module:"Common",类型选择"Android Library",作为所有其它Module的基础依赖库。

3、新建Module:"Home",类型选择"Android Library",依赖"Common"。

二、增加一个Flag
1、在gradle.properties文件中增加一个Boolen键值对

 当isDebug为true时,每一个组件(Module)都可以单独运行,为false 的是组件作为library ,不可以单独运行。

2、修改app的build.gradle文件

 

 implementation project(':common')

if (!isDebug.toBoolean()) {
implementation project(':loginmodule')
}
这段脚本的意思是在idDebug 为false 的时候依赖对应的module。也就是isDebug 为false 的时候运行App,module loginmodule 才会被编译打包进入apk,而isDebug 为true 的时候运行app,module loginmodule  不参与编译也就不会被打包进apk。

3、修改loginmodule  的build.gradle文件

 

 3、处理配置文件

当我们新建一个library 的时候,此时它的配置文件是下面这个样子。

 

 如果library 里面有activity的时候我们可以这样修改

 

 最好不要设置application 标签的属性,否在编译期间app 下面的配置文件与module 下面的文件可能存在冲突等框,但是在 isDebug 为false的时候moudle可以作为一个应用单独运行,我们又希望设置一些属性,那么可不可以有连个配置文件,根据 isDebug 属性应用不同的配置文件呢?答案是可以。

在loginmodule下的build.gradle文件中配置AndroidManifest.xml。

 

 4、修改application 

library 情形下不需要applicationId ,单独运行的app 需要一个applicationId

 

 这一步不是必须的,即使没有设置applicationId 也会有一个默认的applicationId。

三、模块之间通信。
前面说了各个组件之间不可以直接引用彼此的类,如果组件A 想要打开组件B 里面的一个页面那要怎么办呢?此时需要一个中间件或者说是一个框架来帮我们完成这些事。目前最常用的就是ARoute 框架。

 

-----------------------------------
android多模块 安卓模块是什么意思
转自https://blog.51cto.com/u_16099200/6590840

标签:一个,App,Module,library,模块,组件,android,安卓
From: https://www.cnblogs.com/skynight/p/17662233.html

相关文章

  • 直播商城源码,android xml中设置水平虚线及竖直虚线
    直播商城源码,androidxml中设置水平虚线及竖直虚线水平虚线:line_stroke <?xmlversion="1.0"encoding="utf-8"?><shapexmlns:android="http://schemas.android.com/apk/res/android"  android:shape="line">  <stroke    and......
  • pytorch nn.LSTM模块参数详解
    nn.LSTM模块参数input_size:输入的维度hidden_size:h的维度num_layers:堆叠LSTM的层数,默认值为1bias:偏置,默认值:Truebatch_first:如果是True,则input为(batch,seq,input_size)。默认值为:False(seq_len,batch,input_size)bidirectional:是否双向传播,默认值为False 输入(in......
  • 成品直播源码推荐,android自定义显示图片+文字
    成品直播源码推荐,android自定义显示图片+文字 /** *@authorMartin-harry *@date2021/8/10 *@address *@Desc自定义toast */publicclassToastUtil{  /**   *显示文本+图片   *@paramcontext   *@parammessage   */  publicsta......
  • 三河凡科科技飞讯教学篇:振弦采集读数模块开发原理详细介绍
    三河凡科科技飞讯教学篇:振弦采集读数模块开发原理详细介绍振弦采集读数模块是一种用于采集弦振信息的模块,其原理是通过传感器感知弦的振动,将其转化为电信号,然后经过模拟处理和数字化处理,最终输出为可供后续处理的数字信号。 振弦采集读数模块由三个主要部分构成:传感器、模拟......
  • BOSHIDA DC电源模块在传输过程中如何减少能量的损失
    BOSHIDADC电源模块在传输过程中如何减少能量的损失DC电源模块是电子设备中常见的电源转换器,它可以将交流电转换成稳定的直流电,并且具有高效能、低功耗、可控性强等优点。在DC电源模块传输过程中,由于电能的转换过程中会产生一定的能量损失,因此如何减少能量损失,提高转换效率成为一......
  • 振弦采集读数模块开发原理详细介绍
    飞讯教学篇:振弦采集读数模块开发原理详细介绍振弦采集读数模块是一种用于采集弦振信息的模块,其原理是通过传感器感知弦的振动,将其转化为电信号,然后经过模拟处理和数字化处理,最终输出为可供后续处理的数字信号。振弦采集读数模块由三个主要部分构成:传感器、模拟处理电路和数字信号处......
  • DC电源模块在传输过程中如何减少能量的损失
    BOSHIDADC电源模块在传输过程中如何减少能量的损失 DC电源模块是电子设备中常见的电源转换器,它可以将交流电转换成稳定的直流电,并且具有高效能、低功耗、可控性强等优点。在DC电源模块传输过程中,由于电能的转换过程中会产生一定的能量损失,因此如何减少能量损失,提高转换效率成为......
  • Unity RenderTexture 当作为 Camera.targetTexture 时,在某些安卓手机或模拟器无法显示
    今天打包的时候遇到一个坑,就是用RenderTexture的时候,在某些手机上会显示黑屏,一查发现这是某些安卓设备才会出现的BUG(奇怪的是那台测试机是鸿蒙系统,懂的都懂)解决方法也很简单,就是不能用RenderTexture资源,而改成动态代码创建即可解决这个BUG同时解决了另一个RenderTexture的BUG,就......
  • flutter使用腾讯IM插件tencent_cloud_chat_sdk打安卓报“从内部类中访问本地变量param
    使用tencent_cloud_chat_sdk5.2.0版本打包安卓flutterbuildapk报以下错误/Users/tanglin/Documents/flutter/.pub-cache/hosted/pub.flutter-io.cn/tencent_cloud_chat_sdk-5.2.0/android/src/main/java/com/qq/qcloud/tencent_im_sdk_plugin/util/CommonUtil.java:401:错误:......
  • 多账号统一登陆,账号模块的系统设计
    多账号统一登陆,账号模块的系统设计来源:www.dustyblog.cn现在几乎大部分的App都支持使用多个第三方账号进行登录,如:微信、QQ、微博等,我们把此称为多账号统一登陆。而这些账号的表设计,流程设计至关重要,不然后续扩展性贼差。本文不提供任何代码实操,但是梳理一下博主根据我司账号......