Arouter配置指南

news2024/11/29 12:50:40

Arouter实现了大型App之间的轻耦合,降低代码的复杂度,易维护。如果不使用Arouter那么项目之前的关系可能是如下:底层模块间相互耦合,工程代码复杂度高,不便于管理。
请添加图片描述

Arouter

引入Arouter后希望底层模块间轻耦合,模块间的引用跳转交给Arouter完成,各个模块间的效果如下。
请添加图片描述
Module之间不通过依赖的关系,而是通过Arouter路由转发,App作为一个壳不实现具体功能,而是作为路由的中转,另外模块之间也可以通过Arouter相互引用。

Android项目Arouter引入

新建Android工程,新建四个模块分为App模块,base_interface模块, base_impl模块,app_setting模块。
在这里插入图片描述

依赖关系如下:
在这里插入图片描述
app_setting和base_impl间不相互依赖。将各个模块导入Arouter依赖,app作为Application,其他作为library. App模块build.gradle文件如下:


plugins {
    id 'com.android.application'
    id 'org.jetbrains.kotlin.android'
}

// kotlin/java混编
apply plugin: 'kotlin-kapt'

android {
    namespace 'com.hxzlj.multi_module'
    compileSdk 33

    defaultConfig {
        applicationId "com.hxzlj.multi_module"
        minSdk 21
        targetSdk 33
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

        //ARouter
        kapt {
            arguments {
                arg("AROUTER_MODULE_NAME", project.getName())
            }
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = '1.8'
    }
}

dependencies {

    implementation 'androidx.core:core-ktx:1.9.0'
    implementation 'androidx.appcompat:appcompat:1.6.1'
    implementation 'com.google.android.material:material:1.8.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.5'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'

	//工程依赖
    implementation project(path: ':base_impl')
    implementation project(path: ':app_setting')
    //Arouter
    api 'com.alibaba:arouter-api:1.5.1'
    kapt 'com.alibaba:arouter-compiler:1.5.1'
}

base_impl的build.gradle文件

apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
android {
    namespace 'com.hxzlj.base_impl'
    compileSdk 33

    defaultConfig {
        minSdk 21
        targetSdk 33
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

        //ARouter
        kapt {
            arguments {
                arg("AROUTER_MODULE_NAME", project.getName())
            }
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = '1.8'
    }
}

dependencies {

    implementation 'androidx.core:core-ktx:1.9.0'
    implementation 'androidx.appcompat:appcompat:1.6.1'
    implementation 'com.google.android.material:material:1.8.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.5'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'

    api project(path: ':base_interface')

    api 'com.alibaba:arouter-api:1.5.1'
    kapt 'com.alibaba:arouter-compiler:1.5.1'
}

必须注意, androidx必须要有android.enableJetifier=true。工程的gradle.properties中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/991961.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

海南开放大学——助力学习之路的智慧导航

在信息时代的今天,我们面临着大量的学习资源和知识碎片化的挑战。而面对这一挑战,海南开放大学(广播电视大学)以其先进的教育理念和创新的学习方式,为学习者提供了一个独特的学习平台,开启了智慧导航的学习…

10路混音播放芯片,AD按键可扩展,IO口资源丰富,WTR096A-16S

随着科技的不断进步,我们的生活中对于音频体验的需求也在日益增加。无论是玩具、娱乐设备还是智能家居产品,都需要高性能、多功能的混音播放芯片来提供卓越的音频处理和控制能力。正是在这个背景下,我们引入了全新的WTR096A-16S混音芯片&…

房贷利率下调一言难尽

号外:9.7教链内参《摩根大通研究称BTC生产成本约为1.8w刀》。 一大清早,打开手机,就收到了新华社的推送,说是工农中建四大行7号发了公告,明确了存量首套住房贷款调整的事。(新华社2023.9.8《四家银行发布公…

【新版】系统架构设计师 - 案例分析 - 总览

个人总结,仅供参考,欢迎加好友一起讨论 架构 - 案例分析 - 总览 新旧大纲对应 旧版新版系统规划软件架构设计设计模式系统设计系统建模分布式系统设计嵌入式系统设计系统的可靠性分析与设计系统的安全性和保密性设计系统计划信息系统架构的设计理论和实…

【观察】全栈智能:破解AI落地“最后一公里”难题

《系统论》认为:系统是由一些相互关联、相互作用、相互影响的组织部分构成并具有某些功能的整体。从系统的角度来看,如果把系统分解为部分,单独研究一个部分,就算把每个部分都研究清楚了,也回答不了系统整体性问题。 事…

C# 共享项目的应用

概述 共享项目也可以称为共享资产项目,它允许在多个目标项目之间共享的代码。 它支持编译器指令,可以有条件地包含特定于平台的代码,以便编译为引用共享项目的项目的子集。 还有 IDE 支持,可帮助管理编译器指令并直观显示代码在每个应用程序中的外观。 什么是共享项目? …

flink的物理DataFlow图及Slot处理槽任务分配

背景 在flink中,有几个比较重要的概念,逻辑DataFlow图,物理DataFlow图以及处理槽执行任务,本文就来讲解下这几个概念 概念详解 假设有以下代码:数据源和统计单词算子的并行度是2,数据汇算子的并行度是1&…

新知同享|Cloud 开发加速创新,更加安全

谷歌在云平台中深度集成了生成式 AI 功能 帮助出海企业及开发者 轻松借力 AI 推动和实现创新 一起来看 2023 Google 开发者大会上 Google Cloud 如何加速创新,加强信息安全 关注 Google Cloud 的 3 个 AI 重点发展领域 了解生成式 AI 功能如何助推创意落地 精彩大会…

【动手学深度学习】--循环神经网络

文章目录 循环神经网络1.算法介绍1.1无隐状态的神经网络(多层感知机)1.2有隐状态的循环神经网络1.3基于循环神经网络的字符级语言模型1.4困惑度 2.RNN从零开始实现2.1读取数据集2.2独热编码2.3初始化模型参数2.4循环神经网络模型2.5预测2.6梯度裁剪2.7训练 3.RNN简洁实现3.1读取…

嵌入式学习笔记(21)S5PV210的时钟域详解

时钟域:MSYS、DSYS、PSYS 因S5PV210的时钟体系比较复杂,内部外设模块太多,因此把整个内部的时钟划分为3大块,叫做3个域。之所以分为3个域,是因为210内部的这些模块彼此工作时钟频率差异太大了,所以又必要把…

【力扣每日一题】2023.9.9 课程表

目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 题目给我们一些课程的先修关系,也就是有些课我们需要先去学其他的课程才能学习,问我们是否可以学习完所有的课程。…

中科驭数携DPU系列创新产品亮相2023服贸会

9月2日至6日,由商务部、北京市政府主办的2023年中国国际服务贸易交易会(简称“服贸会”)在北京举行。在电信、计算机和信息服务专题展馆,中科驭数等一批国家专精特新“小巨人”携最新数据处理器DPU亮相,展示了多项创新…

PaddleOCR学习笔记3-通用识别服务

今天优化了下之前的初步识别服务的python代码和html代码。 采用flask paddleocr bootstrap快速搭建OCR识别服务。 代码结构如下&#xff1a; 模板页面代码文件如下&#xff1a; upload.html : <!DOCTYPE html> <html> <meta charset"utf-8"> …

Linux命令200例:free用来显示系统内存使用情况

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;CSDN领军人物&#xff0c;全栈领域优质创作者✌。CSDN专家博主&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0…

通达信自定义副图换手率指标 HSL_QD

LB:VOL/((REF(VOL,1)REF(VOL,2)REF(VOL,3)REF(VOL,4)REF(VOL,5))/5); DRAWBAND(25,RGB(0,0,0),IF((20MA(LB,5)*5)<40,20MA(LB,5)*5,40),RGB(205,205,0));{量比均线}{DRAWBAND(0,RGB(66,66,66),10,RGB(66,66,66))}; {DRAWBAND(10,RGB(66,66,66),MA(IF((100*VOL/CAPITAL3)<…

【数据结构--二叉树】平衡二叉树

题目描述&#xff1a; 代码实现&#xff1a; /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ int TreeHeight(struct TreeNode* root) {if(rootNULL)return 0;//左右子树中大的…

12分钟从Executor自顶向下彻底搞懂线程池

通读本篇文章前先来看看几个问题&#xff0c;看看你是否已经理解线程池 什么是池化技术&#xff1f;它有什么特点&#xff0c;哪些场景使用&#xff1f;Executor是什么&#xff1f;它的设计思想是什么样的&#xff1f;工作任务有几种&#xff1f;有什么特点&#xff1f;如何适…

小节1:Python字符串打印

1、字符串拼接 用可以将两个字符串拼接成一个字符串 print("你好 " "这是一串代码") 输出&#xff1a; 2、单双引号转义 当打印的字符串中带有引号或双引号时&#xff0c;使用\或\"表示 print("He said \"Let\s go!\"") 输…

OpenRoads两期工程量(挖填)方量计算

分别生成各期地形&#xff0c;由Create Terrain Model From Ascii File展点&#xff1b; 其中至少一期地形特征设为Existing组特征 创建挖填体积&#xff08;Terrain\Analysis\Create Cut Fill Volumes或Home\Model Analysis and Reporting\Civil Analysis\Create Cut Fill Vo…

深度学习相关VO梳理

相关论文 基于学习的VO 相关&#xff1a; DeepVO Towards End-to-End Visual Odometry with Deep Recurrent Convolutional Neural Networks&#xff08;ICRA&#xff0c;2017&#xff09; TartanVO: A Generalizable Learning-based VO(CoRL2021) SimVODIS: Simultaneous Vis…