先决条件
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'