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

这篇具有很好参考价值的文章主要介绍了Android组件化架构开发--为什么要使用组件化?组件分层?组件路由的简单实现。。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

android组件化架构开发

一.为什么要使用组件化

1.1 单工程项目结构

一般我们都是一个业务建一个包
Android组件化架构开发--为什么要使用组件化?组件分层?组件路由的简单实现。,Android进阶训练营,android,架构

缺点:

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

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

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

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

1.2 什么是组件化

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

二. 组件分层

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

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

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

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

Android组件化架构开发--为什么要使用组件化?组件分层?组件路由的简单实现。,Android进阶训练营,android,架构

三. 组件化项目搭建流程

3.1 创建业务组件

app模块

Android组件化架构开发--为什么要使用组件化?组件分层?组件路由的简单实现。,Android进阶训练营,android,架构

创建module

业务组件推荐选这个application,调试的时候需要用到,
Android组件化架构开发--为什么要使用组件化?组件分层?组件路由的简单实现。,Android进阶训练营,android,架构

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

Android组件化架构开发--为什么要使用组件化?组件分层?组件路由的简单实现。,Android进阶训练营,android,架构

修改下包名
Android组件化架构开发--为什么要使用组件化?组件分层?组件路由的简单实现。,Android进阶训练营,android,架构

3.2 创建基础组件

打包最后要成为library。

Android组件化架构开发--为什么要使用组件化?组件分层?组件路由的简单实现。,Android进阶训练营,android,架构

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

最后打包最后要成为library。

创建完毕。

Android组件化架构开发--为什么要使用组件化?组件分层?组件路由的简单实现。,Android进阶训练营,android,架构

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"
}

Android组件化架构开发--为什么要使用组件化?组件分层?组件路由的简单实现。,Android进阶训练营,android,架构

回到我们的业务组件中,

Android组件化架构开发--为什么要使用组件化?组件分层?组件路由的简单实现。,Android进阶训练营,android,架构

把全局参数赋值

//获取全局配置参数
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

Android组件化架构开发--为什么要使用组件化?组件分层?组件路由的简单实现。,Android进阶训练营,android,架构

初始化

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

路由组件跳转文章来源地址https://www.toymoban.com/news/detail-686085.html

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")
    }
}


到了这里,关于Android组件化架构开发--为什么要使用组件化?组件分层?组件路由的简单实现。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一篇读懂 Android 开发中模块化、组件化、插件化和热修复

    网上关于 “Android 开发\\\" 的文章很多,我本人学习 Android 开发的过程也借鉴了网上先辈们的文章;但大多数文章都从底层的细枝末节开始讲述,由下而上给人一种这门技术“博大精深”望而生畏的感觉;而我写这篇文章的初衷就是由上而下,希望别人在阅读的过程中能够觉得

    2023年04月08日
    浏览(40)
  • Android 组件化○

    1.组件化 组件化是指解耦复杂系统时,将多个功能模板拆分、重组的过程。在Android工程表现上就是把app按照其业务的不同,划分为不同的Module。 组件化架构的目的就是让每个业务模块变得相对独立,各个组件在组件模式下可以独立开发调试,集成模式下又可以集成到“app壳

    2023年04月20日
    浏览(77)
  • 【Android】从零搭建组件化项目

    组件化系列文章介绍的内容稍微多了点,本着研究透这玩意的精神,从组件化的简介开始说起。 什么是组件化? 将多个功能模板拆分、重组的过程。 为什么要使用组件化? 1、加快编译速度,提高开发效率,增强可维护性、移植性。 2、高内聚(软件模块是由相关性很强的代

    2024年02月15日
    浏览(48)
  • Android GreenDao 使用全面讲解,Android组件化入门

    5. 在多个线程中使用QueryBuilder 如果在多个线程中使用查询,则必须调用 forCurrentThread ()以获取当前线程的Query实例。Query的对象实例绑定到构建查询的拥有线程。 这使您可以安全地在Query对象上设置参数,而其他线程不会干扰。如果其他线程尝试在查询上设置参数或执行绑

    2024年04月27日
    浏览(51)
  • Vue组件化开发--公共组件的封装

    目录 为什么要封装组件 应用场景 vue自己封装组件(局部、全局)  Vue组件的三要素 ①全局组件 1)方式:  2)示例: ②局部组件 1)方式: 2)示例: 命名规范:(注意) 脚手架vue-cli中的组件 父传子(props) 通过 $on 传递父组件方法 $parent获取父组件然后使用父组件中的

    2024年02月05日
    浏览(58)
  • 组件化开发之如何封装组件-react

    组件是构建用户界面的基本单元,它是一个独立的、可重用的、可组合的代码单元,用于表示UI的一部分。 人话:当谈论组件时,就像在搭积木一样,每个组件都是一个 独立的、可以重复使用 的代码块,用来构建网页或应用的各个部分。比如界面的布局,像按钮、文本输入

    2024年02月11日
    浏览(62)
  • 组件化开发复习

    createApp 函数传入了一个对象 App ,这个对象其实本质上就是一个组件,也是我们应用程序的根组件 可以写为:  我们先来学习一下全局组件的注册:  全局组件需要使用我们全局创建的 app 来注册组件;  通过 component 方法传入组件名称、组件对象即可注册一个全局组件了;

    2024年02月15日
    浏览(65)
  • Vue 组件化开发

    提示:这里可以添加本文要记录的大概内容: Vue.js 是一种现代化的前端框架,可以用于构建可复用的组件化应用程序。Vue.js 提供了一种基于组件的架构,使得开发人员可以将应用程序分解为多个可重用的组件。 Vue.js 组件是一个可复用的代码模块,可以在 Vue.js 应用程序中使

    2024年02月15日
    浏览(49)
  • 小程序组件化开发

        随着小程序的普及,越来越多的开发者开始使用小程序进行开发,而小程序的组件化开发已经成为了一种标配的开发模式。本文将深入介绍小程序组件化开发的相关知识,包括组件的定义、生命周期、通信和使用等方面,帮助大家更好地理解和使用小程序的组件化开发

    2023年04月20日
    浏览(48)
  • Android彻底组件化—UI跳转升级改造

    (2)host对应的是share。在组件化框架中,每个组件对应一个唯一的host,例如分享组件的host就是share,读书组件的host是reader等等。 host是路由分发的第一级,根据host可以定位到每个组件。 host还可以对所有的路由URL进行一个分组,只有调用到该分组的路由的时候,组内的路由

    2024年04月16日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包