安卓

安卓模块化开发

2020-06-10  本文已影响0人  田涛347

先决条件

1.android开发工具,我用的是android studio
2.maven私服,私服的搭建参照网上,这里会用到对应的maven地址和相关的账号。(上传需要账号,私服对应上传仓库需要开启访客可访问)

模块化架构图

模块化架构图

1.业务模块依赖底层工具模块和UI基础模块

2.各业务模块独立开发,开发好稳定版本上传至maven私服中供项目使用

3.pp应用引用各个模块aar包,使用模块中功能。

注:模块开发时,各个模块的资源(layout,color,dimen,string,drawable,mipma等资源)应带上模块前缀,避免不同模块间出现相同资源名称,导致不可预知错误。

工程结构

工程结构

1.项目由app壳工程,业务module模块,底层lib模块

2.壳工程写demo入口测试调试module模块代码,根据具体模块情况,编写相关入口页面。

3.module模块写业务代码。

4.底层lib模块主要引用底层依赖包中使用的依赖,固定不用修改。

module模块添加打包信息

apply plugin: 'maven'

def isReleaseBuild() {
    return VERSION_NAME.contains("SNAPSHOT") == false
}

def getRepositoryUsername() {
    return hasProperty('NEXUS_USERNAME') ? NEXUS_USERNAME : ""
}

def getRepositoryPassword() {
    return hasProperty('NEXUS_PASSWORD') ? NEXUS_PASSWORD : ""
}

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: RELEASE_REPOSITORY_URL) {
                authentication(userName: getRepositoryUsername(), password: getRepositoryPassword())
            }
            pom.project {
                groupId = GROUP
                artifactId = POM_ARTIFACT_MODULE_ID
                version = VERSION_NAME
                packaging = POM_PACKAGING
            }
            snapshotRepository(url: SNAPSHOT_REPOSITORY_URL) {
                authentication(userName: getRepositoryUsername(), password: getRepositoryPassword())
            }
        }
    }
}

gradle.properties中维护版本和maven私服信息

GROUP=groupname
VERSION_NAME=versionname
POM_ARTIFACT_MODULE_ID=modulename
POM_PACKAGING="aar"
#前面配置的snapshots仓库地址
SNAPSHOT_REPOSITORY_URL=http://ip:port/repository/maven-snapshots/
#前面配置的releases仓库地址http:
RELEASE_REPOSITORY_URL=http://ip:port/repository/maven-releases/
NEXUS_USERNAME=username
NEXUS_PASSWORD=password

上传aar包

上传aar包

点击左侧gradle工具栏,在弹出的窗口中选中我们要打包的module,选择Tasks->upload->uploadArchives,双击uploadArchives进行上传。

引用上传后aar包

在工程的build.gradle文件中添加私服信息

allprojects {
    repositories {
        google()
        jcenter()
        maven { url 'https://maven.aliyun.com/repository/jcenter'}
        maven { url 'https://jitpack.io' }
        maven { url 'http://ip:port/repository/maven-snapshots/' }
        maven { url 'http://ip:port/repository/maven-snapshots/' }
    }
}

在需要的地方引用aar包

api 'groupname:modulename:versionname@aar'
上一篇 下一篇

猜你喜欢

热点阅读