android组件化之路--组件发布

android组件化之路--组件发布

组件化背景

在开发过程中,随着开发的模块越来越多,团队成员互相交叉开发,模块不清晰,相互改代码的情况经常发生,极易造成功能被别人篡改而且ReCheck不够,上线之后等着线下报bug吧。
而组件化(也叫模块化)的开发方式就是为了解决上述问题,模块间相互独立,开发人员互相维护自己的模块,在此不细讲组件化的流程,主要说一下组件化之后的模块发布流程。

组件发布流程

(本文以发布到github为例)

本着不盲目学知识的态度,看功能之前有必要了解此功能之所为所不为,因此在讲组件发布流程之前有几个问题需要阐述一下:

  1. 什么是组件?
    这里的组件可以理解为我们抽离的功能以及业务module,可以被主程序所依赖的模块;这里的组件可以理解为我们抽离的功能以及业务module,可以被主程序所依赖的模块;

  2. 为什么要发布组件?
    组件化开发的模式的优点不言而喻,那么组件化之后为什么要把模块进行发布呢?当然这里说的发布并不是单指发布到jencent这种,而是提供一个供别人依赖的方式,可以是公司的私服,本地maven,或者是github、jencent。。。
    至于为什么要发布,原因有下面几种:
    1 ):安全性:一般在大一些的互联网公司,公司的安全保密机制都比较高,会把整个app的所有的代码都给所有参与开发的同事,而是仅仅自己负责的模块,这个时候要使用其他模块的东西怎么办,拷贝模块源码吗,所以只能做依赖处理。
    2 ):代码权限控制:依赖module的方式保不准会被调用次模块的同事给修改代码,发布之后只能自己修改自己的module。
    2 ):方便管理:在开发流程中,单模块升级的情况很常见,最方便管理的方式就是在maven中管理不同的模块版本。
    3):使用便捷:Android使用gradle管理依赖,发布的组件通过gradle使用依赖的方式极为简便。
    4 ):编译较快:多module的开发模式在项目的编译期由于要进行多module的检查比较耗时,组件发布之后,使用依赖方式能缩短编译时间。

  3. 发布准备工作(本例以发布到github为例);
    1 ):github账号,仓库
    这个登录github按照流程建立一个仓库就ok,在自己的账号下建立仓库或者登录自己的账号建立一个组织,然后在组织下创建仓库都行,只不过是最后发布的仓库地址的名称不同,一个是自己的名字,组织下创建的仓库是组织名。
    新建仓库或者新建组织
    2 ):要打包的组件module

  4. 发布流程:
    4.1 ):在本地clone github上的仓库
    4.2 ):将依赖的组件的gradle配置maven发布配置:
    可以将配置发布maven的配置单独写在一个自定义gradle中,然后 组件的gradle apply from此自定义的gradle。例如:

     //在组件module的gradle中
    apply from: 'maven-release-aar.gradle'
    

    在组件module的gradle同级目录中创建文件maven-release-aar.gradle,

    // 1.maven-插件
    	apply plugin: 'maven'
    // 2.maven-信息
    ext {
        // 这个路径是从Github上Clone的本地路径
        GITHUB_REPO_PATH = "/Users/zhoubo/project/github_repository/androidlib"
        PUBLISH_GROUP_ID = 'com.zhoubo.mylib'
        PUBLISH_ARTIFACT_ID = 'mylibname'
        PUBLISH_VERSION = '1.0.0'
    }
    // 3.maven-路径
    uploadArchives {
        repositories.mavenDeployer {
            def deployPath = file(project.GITHUB_REPO_PATH)
            repository(url: "file://${deployPath.absolutePath}")
            pom.project {
                groupId project.PUBLISH_GROUP_ID
                artifactId project.PUBLISH_ARTIFACT_ID
                version project.PUBLISH_VERSION
            }
        }
    }
    // 源代码一起打包(不需要打包源代码的不要添加这几行)
    task androidSourcesJar(type: Jar) {
        classifier = 'sources'
        from android.sourceSets.main.java.sourceFiles
    }
    artifacts {
        archives androidSourcesJar
    }
    

    其中最上面的路径指我们从github clone下来的仓库的本地路径,打aar包发布maven可以这么配置,jar包的话去掉上方的最下面的配置(androidSourceJar)。
    4.3 ):发布到本地仓库:
    配置完成后sync gradle后会出现upload的task:

发布到本地仓库的task目录

运行此uploadArchives就可以打包本组件并发布到本地仓库中

4.4 ):从本地仓库push到github仓库中就ok了。

组件使用

在project级别的gradle中添加仓库的url:

	allprojects {
	    repositories {
	        google()
	        jcenter()
	        maven { url "https://raw.githubusercontent.com/组织或者用户名/仓库名/master"}
	        maven { url 'https://jitpack.io' }
	    }
	}

然后在使用此依赖的module中,gradle中依赖:

	implementation 'com.zhoubo.mylib:mylibname:1.0.0'

结束语:
本文是使用github为例做的上传,使用私服或者其他平台的话类似但不尽相同,依赖方式也会不太一样

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值