iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android组件化架构开发--为什么要使用组件化?组件分层?组件路由的简单实现。
  • 378
分享到

Android组件化架构开发--为什么要使用组件化?组件分层?组件路由的简单实现。

android架构 2023-08-31 12:08:23 378人浏览 安东尼
摘要

文章目录 android组件化架构开发一.为什么要使用组件化1.1 单工程项目结构1.2 什么是组件化 二. 组件分层三. 组件化项目搭建流程3.1 创建业务组件3.2 创建基础组件3.

文章目录

Android组件化架构开发

一.为什么要使用组件化

1.1 单工程项目结构

一般我们都是一个业务建一个包
在这里插入图片描述

缺点:

  1. 各种业务代码混杂在同一个模块里,开发人员在开发、调测过程的效率越来越低,定位某个业务问题,需要在多个业务代码混合的模块中寻找和跳转。

  2. 需要了解各个业务的功能,避免代码的改动影响其它业务的功能,导致开发和维护成本不断增加。

  3. 由于项目工程越来越庞大,编译完整代码所花费的时间越来越长。

  4. 代码复用性差,写过的代码很难抽离出来再次利用。

1.2 什么是组件化

是对数据和方法的简单封装,功能单一,高内聚,并且是业务能划分的最小粒度。

二. 组件分层

主入口(app):配置和主Activity,不包含任何业务代码,是应用的入口,只会依赖业务组件。

业务组件:通过路由通信。

功能组件:共有的业务封装。支付等等。

基础组件:依赖各种第三方SDK

在这里插入图片描述

三. 组件化项目搭建流程

3.1 创建业务组件

app模块

在这里插入图片描述

创建module

业务组件推荐选这个application,调试的时候需要用到,
在这里插入图片描述

业务组件名字,业务模块是工程的核心。

在这里插入图片描述

修改下包名
在这里插入图片描述

3.2 创建基础组件

打包最后要成为library。

在这里插入图片描述

3.3 创建功能组件(可有可无)

最后打包最后要成为library。

创建完毕。

在这里插入图片描述

3.4 依赖关系

在项目下的build.gradle添加全局配置参数。

ext {    isDebug = false // 当它为true时,调试模式,组件可以单独运行。 如果是false,正式编译打包的模式    android = [            compileSdk : 33,            minSdk     : 24,            targetSdk  : 33,            versionCode: 1,            versionName: "1.0"    ]    applicationId = [            "app" : "com.qfh.common",            "main": "com.qfh.moduleCore"    ]    library = [            "appcompat"       : 'androidx.appcompat:appcompat:1.4.1',            "material"        : 'com.Google.android.material:material:1.5.0',            "constraintlayout": 'androidx.constraintlayout:constraintlayout:2.1.3'    ]    libARouter = "com.alibaba:arouter-api:1.5.1"    libARouterCompiler = "com.alibaba:arouter-compiler:1.5.1"    libGson = "com.google.code.gson:gson:2.8.6"}

在这里插入图片描述

回到我们的业务组件中,

在这里插入图片描述

把全局参数赋值

//获取全局配置参数def cfg = rootProject.ext//plugins {//    id 'com.android.application'//}//区分是application还是library模块if (cfg.isDebug) {    apply plugin: 'com.android.application'} else {    apply plugin: 'com.android.library'}android {    namespace 'com.example.module.main'    compileSdk cfg.android.compileSdk    defaultConfig {        if (cfg.isDebug) {            apply plugin: 'com.android.application'        }        //全局配置参数赋值        applicationId cfg.applicationId.main        minSdk cfg.android.minSdk        targetSdk cfg.android.targetSdk        versionCode cfg.android.versionCode        versionName cfg.android.versionName        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'        }    }    compileOptions {        sourceCompatibility JavaVersion.VERSION_1_8        targetCompatibility JavaVersion.VERSION_1_8    }}dependencies {    //依赖基础组件    implementation project(':moduleBase:mylibrary')    testImplementation 'junit:junit:4.13.2'    androidTestImplementation 'androidx.test.ext:junit:1.1.3'    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'}

自此业务组件的gradle配置完成.

四. 组件路由的简单实现

4.1 使用ARouter实现页面跳转

使用注解Route

在这里插入图片描述

初始化

public class App extends Application {    @Override    public void onCreate() {        super.onCreate();        ARouter.openDebug();        ARouter.openLog();        ARouter.init(this);    }}

路由组件跳转

class DebugActivity : AppCompatActivity() {    override fun onCreate(savedInstanceState: Bundle?) {        super.onCreate(savedInstanceState)        setContentView(R.layout.activity_main)        ARouter.getInstance().build("/login/LoginActivity").navigation()    }}

4.2 ARouter实现数据传递

class DebugActivity : AppCompatActivity() {    override fun onCreate(savedInstanceState: Bundle?) {        super.onCreate(savedInstanceState)        setContentView(R.layout.activity_main)        ARouter.getInstance().build("/login/LoginActivity").withLong("key1",666L)            .withString("111","!1313")    }}

来源地址:https://blog.csdn.net/weixin_46039528/article/details/132484855

--结束END--

本文标题: Android组件化架构开发--为什么要使用组件化?组件分层?组件路由的简单实现。

本文链接: https://www.lsjlt.com/news/385612.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作