美文网首页
ARouter路由

ARouter路由

作者: Mr_不靠谱_先森 | 来源:发表于2022-05-31 13:58 被阅读0次

    项目简介

    官方介绍ARouter is a framework for assisting in the renovation of Android componentization (帮助 Android App 进行组件化改造的路由框架)
    通俗的介绍阿里路由以及使用ARouter的好处,我们所使用的原生路由方案一般是通过显式intent和隐式intent两种方式实现的(这里主要是指跳转Activity or Fragment)。在显式intent的情况下,因为会存在直接的类依赖的问题,导致耦合非常严重;而在隐式intent情况下,则会出现规则集中式管理,导致协作变得非常困难。一般而言配置规则都是在Manifest中的,这就导致了扩展性较差。除此之外,使用原生的路由方案会出现跳转过程无法控制的问题,因为一旦使用了StartActivity()就无法插手其中任何环节了,只能交给系统管理,这就导致了在跳转失败的情况下无法降级,而是会直接抛出运营级的异常。这时候如果考虑使用自定义的路由组件就可以解决以上问题,比如通过URL索引就可以解决类依赖的问题;通过分布式管理页面配置可以解决隐式intent中集中式管理Path的问题;自己实现整个路由过程也可以拥有良好的扩展性,还可以通过AOP的方式解决跳转过程无法控制的问题,与此同时也能够提供非常灵活的降级方式。
    源码地址https://github.com/alibaba/ARouter

    使用方法

    1,Adding dependencies and configurations

    plugins {
        id 'com.android.library'
        id 'kotlin-android'
        id 'maven'
        id 'kotlin-kapt'
    }
    kapt {
        arguments {
            arg("AROUTER_MODULE_NAME", project.getName())
        }
    }
    def config = rootProject.ext
    android {
        compileSdkVersion config.android.compileSdkVersion
        buildToolsVersion config.android.buildToolsVersion
    
        defaultConfig {
            minSdkVersion config.android.minSdkVersion
            targetSdkVersion config.android.targetSdkVersion
    
            consumerProguardFiles "consumer-rules.pro"
        }
    
        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 "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
        compileOnly 'androidx.core:core-ktx:1.2.0'
        compileOnly 'androidx.appcompat:appcompat:1.1.0'
        api 'com.alibaba:arouter-api:1.5.1'
        kapt 'com.alibaba:arouter-compiler:1.5.1'
        compileOnly "com.google.code.gson:gson:2.8.6"
    }
    
    uploadArchives {
        repositories.mavenDeployer {
            // maven_lib_encode一些参数
            def mavenConstant = config.maven_lib_dlRouter
            // maven公共参数
            def mavenPublic = config.maven_public
    
            pom.project {
                version mavenConstant["version"]
                artifactId mavenConstant["artifactId"]
                groupId mavenPublic["groupId"]
                packaging mavenPublic["type"]
                description mavenConstant["description"]
            }
            // 是否为snapshot包
            def isSnapshot = pom.version.endsWith('-SNAPSHOT')
            def userName = mavenPublic["userName"]
            def passWord = mavenPublic["passWord"]
            // snapshot
            if (isSnapshot) {
                snapshotRepository(url: mavenPublic["snapShotUrl"]) {
                    authentication(userName: userName, password: passWord)
                }
            }
            // release
            else {
                repository(url: mavenPublic["releaseUrl"]) {
                    authentication(userName: userName, password: passWord)
                }
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:ARouter路由

          本文链接:https://www.haomeiwen.com/subject/vbkoprtx.html