前段時間大佬說,希望我們將項目中使用的library庫打包出來,方便公司內部的同事調用,還有可以提供給客戶使用。大佬發話了,趕緊動起來。
先聲明一下,我使用的AndroidStudio版本是3.0.1,不同版本下,編譯生成的jar包,保存的路徑可能都不一樣。
[jar包和aar包的區別](https://blog.csdn.net/ljx1400052550/article/details/80111051)
如何將library打包成jar包
(1)我們先來看一下library目錄下的build.gradle文件的內容,確保是library。上面圖片的第三行代碼,我們使用到了build/intermediates/bundles/release/目錄下的classes.jar。
其實,我們平時在編譯項目后,在library的build/intermediates/bundles/debug/下會生成一個classes.jar文件。但是你發現,我們這里并沒有用到這個目錄下的classes.jar,而是使用了build/intermediates/bundles/release/目錄下的classes.jar。網上很多文章說,項目編譯后就會在build/intermediates/bundles下面生成release文件夾,我試了之后,發現并沒有生成。
這個時候,我們需要下面的操作,生成release文件夾。步驟1:首先我們找到對應的library庫,我這里的library庫的名字是core。
步驟2:然后可以看到Tasks--build目錄下面有assemble、assembleDebug、assembleRelease這三個選項。
步驟3:
1:雙擊assemble,會在bundles目錄下面生成debug和release文件夾
2:雙擊assembleDebug,會在bundles目錄下面生成debug文件夾
3:雙擊assembleRelease,會在bundles目錄下面生成release文件夾
執行完成后,可以在build/libs/目錄下,看到abc.jar這個文件。
說兩個問題點:
(1)將library打包成jar包的這種方式,在build.gradle文件下面配置的依賴是不生效的。
(2)在library的libs目錄下引用了其他第三方jar包的同學,會發現這種方式生成的jar包,是沒有將libs目錄下的第三方jar包打包進去的,只是將library庫下的所有class文件打包進去。
[如何解決這些問題,看下一篇文章](http://www.lxweimin.com/p/9ca6cf6bdbbc)
如何將library打包成aar包
同樣在我們編譯項目后,在core/build/outputs/aar/目錄下,會生成debug模式的aar包如果發現該aar目錄下沒有debug模式的aar包,可以點擊Rebuild Project生成,或者使用下面的方式生成。
感覺生成aar包,會有緩存問題,我一般會先clean項目,然后再重新生成aar包
1:雙擊assemble,同時生成debug和release模式的aar包
2:雙擊assembleDebug,生成debug模式的aar包
3:雙擊assembleRelease,生成release模式的aar包
在別的項目引用aar包
為了方便管理,我們還可以使用maven或者jcenter的方式,對aar包進行版本管理。每當aar包需要更新版本的時候,我們可以不需要重新拷貝相應版本的aar包,直接在build.gradle文件修改相應的版本號就可以了。
[可以看我這篇文章](http://www.lxweimin.com/p/1a76b0536729)