灵感来自前段时间和我一个朋友吃饭,说道他们公司当前组件化开发流程。
1、Nexus安装配置流程
实现该组件化开发需要Nexus工具,下载地址可以如下:
https://www.sonatype.com/download-oss-sonatype
下载对应的版本的Nexus,这里我下载的如下图
下载之后直接解压然后到指定的目录下启动该Nexus仓库即可,我的相对目录如下:(仅供参考)
nexus-2.14.5-02-bundle exus-2.14.5-02injswwindows-x86-64
在该目录下执行如下start-nexus.bat直接启动仓库即可。
然后在浏览器访问http://localhost:8081/nexus进入到如下图:
欢迎界面如上图,可以点击右上角login按钮,默认Nexus的账号和密码分别是admin admin123,输入账号密码完成登录如下图:
点击add->HostedRepositories,然后如下图:
这里需要填写Repository ID和Repository Name,然后就是Deployment Policy这里尽量选择Allow Redeploy,否则同版本不允许重新(覆盖)发布,最后点击保存即可。
2、Android Stuido项目创建AAR文件并且提交到仓库
实现流程如下:
第一步创建Android Module
New -> Android Module -> Android Library
第二步配置Module的build.gradle
1、在该文件最顶部添加如下:
apply plugin: 'maven'
2、文件中添加如下:
uploadArchives { configuration = configurations.archives repositories.mavenDeployer { /*远程仓库的地址,貌似有具体ip的基本上都是建在局域网的仓库*/ repository(url: "http://localhost:8081/nexus/content/repositories/android/") {/*仓库地址*/ authentication(userName: "admin",/*用户名*/ password: "admin123")/*密码*/ } pom.project { name 'testvideo-library' /*项目的名称*/ packaging 'aar' /*要提交文件的类型*/ description '测试视频组件定义' /*描述*/ url "http://localhost:8081/nexus/content/repositories/android/"/*仓库地址*/ groupId "com.test.testvideo" /*注册sonatype账号时有填,这里是域名反转+项目名*/ artifactId "video" version '1.0.0' } } }
第三步:添加代码到仓库指定位置
实现方式一:命令行方式
在项目的根目录下执行如下命令:gradlew uploadArchives
实现方式二:工具
打开项目右上角gradle面板
点击如下图所示指定module下需要添加的aar文件到仓库
批注:这里说明下aar文件生成路径build/outputs/aar,这里建议每次修改提交前执行Rebuild Project。
3、主Moudle引用AAR文件
主项目根build.gradle文件添加本地仓库地址:
repositories{ mavenCentral() maven { url "http://localhost:8081/nexus/content/repositories/android/" } }
主项目build.gradle文件顶部添加如下:
apply plugin: 'maven'
然后在dependencies下添加引用
compile 'com.test.testvideo:video:1.0.0@aar'
说明:AAR文件是Android自己特有的包,包含src目录文件和res目录文件,这里会涉及合并res文件(包含清单文件和drawable文件等,所以对明明规范就有了更高一步的要求)
如上所有步骤实现则可以直接在主Module中直接调用对应的AAR文件里的Activity文件。这也就是实现了对应的组件化开发。囧....