靈感來自前段時間和我一個朋友吃飯,說道他們公司當前組件化開發流程。
1、Nexus安裝配置流程
實現該組件化開發需要Nexus工具,下載地址可以如下:
https://www.sonatype.com/download-oss-sonatype
下載對應的版本的Nexus,這里我下載的如下圖
下載之后直接解壓然后到指定的目錄下啟動該Nexus倉庫即可,我的相對目錄如下:(僅供參考)
nexus-2.14.5-02-bundle\nexus-2.14.5-02\bin\jsw\windows-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文件。這也就是實現了對應的組件化開發。囧....