Android组件化

本文深入探讨了组件化项目构建的策略,包括基础组件、独立组件及总包组件的区分与构建方法。详细讲解了不同组件类型在build.gradle中的配置差异,以及组件清单文件的定制策略,特别强调了ARouter在组件间通信的应用。

一.组件化

首先新建项目 正常创建项目
需要使用几个组件就创建几个

当组件被整合到同一个app中的时候,多个组件的资源会产生冲突,
因此我们在资源文件命名的时候通常会带上组件名作为前缀
组件分为三种:

一种是基础组件,提供各种方法供别的组件使用。
另一种是可单独运行的独立组件。
最后一种是打包时包含其他组件的。

三种组件build.gradle的区别

基础组件
组件头

apply plugin: 'com.android.library'

普通组件
组件头

if(isLihaofanModule.toBoolean()) {
    apply plugin: 'com.android.application'
}else{
    apply plugin: 'com.android.library'
}

总包组件
组件头

apply plugin: 'com.android.application'

普通组件分为两种状态,一种是能单独打包运行的,这个作为独立app,所以是application
零一种是作为组件提供给别人使用的状态:library

当一个组件作为app单独存在时他需要applicationld,而且作为组件时用library
所以在defaultConfig里进行判断:

defaultConfig {
    if(isLihaofanModule.toBoolean()) {
        applicationId "com.example.lihaofan_day01_module"
    }
    
    minSdkVersion 15
    targetSdkVersion 29
    versionCode 1
    versionName "1.0"

这些判断使用的判断条件为:if(isLihaofanModule.toBoolean())
是在整个工程的gradle.properties文件中定义的

#是否需要单独编译 true表示需要,false表示不需要#isNeedHomeModule=true
isNeedHomeModule=false
#isNeedhotelModule=true
isNeedhotelModule=false
#isNeedMineModule=true
isNeedMineModule=false
#isNeedDestinationModule=true
isNeedDestinationModule=false
### 三种组件清单文件的区别
组件作为独立的app在清单文件中需要application的name属性
````xml
<application    android:allowBackup="true"    android:name=".appApplication"    android:icon="@mipmap/ic_launcher"    android:label="@string/app_name"

并且需要一个入口Activity

<activity android:name=".MainActivity">   
 <intent-filter>        
 <action android:name="android.intent.action.MAIN" />
 
 <category android:name="android.intent.category.LAUNCHER" />  
</intent-filter>
 </activity>

而且为library时是不需要入口的,所以就用不用 intent-filter

所以作为普通组件既需要单独作为APP运行,又需要作为library提供给其他组件。那么它的清单文件也需要两个

在这里插入图片描述

两个清单文件要用哪个需要在build.gradle中进行判断

sourceSets {     
     main {        
	 if (isNeedMineModule.toBoolean()) {            
 	    manifest.srcFile 'src/main/debug/AndroidManifest.xml'       
  	 }else {           
   	    manifest.srcFile 'src/main/release/AndroidManifest.xml'      
     	 }   
     }
 }

arouter使用

先导入依赖:所有组件化的项目都要导入arouter包

implementation ('com.alibaba:arouter-api:1.4.1')
annotationProcessor 'com.alibaba:arouter-compiler:1.2.2'

使用arouter跨组件传值需要两个组件都写:

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
javaCompileOptions {    
   annotationProcessorOptions {     
       arguments = [ AROUTER_MODULE_NAME : project.getName() ]    
       }
  }
标题基于Python的自主学习系统后端设计与实现AI更换标题第1章引言介绍自主学习系统的研究背景、意义、现状以及本文的研究方法创新点。1.1研究背景与意义阐述自主学习系统在教育技术领域的重要性应用价值。1.2国内外研究现状分析国内外在自主学习系统后端技术方面的研究进展。1.3研究方法与创新点概述本文采用Python技术栈的设计方法系统创新点。第2章相关理论与技术总结自主学习系统后端开发的相关理论技术基础。2.1自主学习系统理论阐述自主学习系统的定义、特征理论基础。2.2Python后端技术栈介绍DjangoFlask等Python后端框架及其适用场景。2.3数据库技术讨论关系型非关系型数据库在系统中的应用方案。第3章系统设计与实现详细介绍自主学习系统后端的设计方案实现过程。3.1系统架构设计提出基于微服务的系统架构设计方案。3.2核心模块设计详细说明用户管理、学习资源管理、进度跟踪等核心模块设计。3.3关键技术实现阐述个性化推荐算法、学习行为分析等关键技术的实现。第4章系统测试与评估对系统进行功能测试性能评估。4.1测试环境与方法介绍测试环境配置采用的测试方法。4.2功能测试结果展示各功能模块的测试结果问题修复情况。4.3性能评估分析分析系统在高并发等场景下的性能表现。第5章结论与展望总结研究成果并提出未来改进方向。5.1研究结论概括系统设计的主要成果技术创新。5.2未来展望指出系统局限性并提出后续优化方向。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值