###### tags: `Android` `Library` # aar檔打包與引用 在開發專案時,Android可選擇.jar檔或.aar檔的方式,提供 API 給第三方開發者使用。 - .jar:只包含.class和文件清單,無法引用資源檔(res) - .aar:可引用所有檔案,通常用於製作UI庫 ## 打包 1. 由於我們只提供API,而沒有畫面操作,所以可選擇沒有Activity的Module來製作。 2. 修改 Gradle 的 apply plugin 輸出 ``` //要輸出.aar檔,必須將Module配置為 library apply plugin: 'com.android.application' //預設值為输出 apk apply plugin: 'com.android.library' //修改成输出 library ``` 3. 在 Gradle 刪除 applicationId ``` defaultConfig { //applicationId "..." } ``` 4. 產生.aar檔 - 打開 Gradle Projects (View -> Tool Windows -> Gradle) 或點擊畫面右方的Gradle側標 - 到根目錄 Projects中,點擊assemble - 執行成功後,可在module中 build -> outputs -> aar 找到相關的 aar檔 ## 引用 1. 打開Project Structure (View -> Project Structure),選擇Import Jar/Aar Package 2. 在 Gradle 的 dependencies 增加 implementation,並Sync即完成 ``` dependencies { implementation project(':module_name-release') } ``` ## 其他引用方式 上述提到的引用方式是比較基本的,使用後發現會在 app 的同一層產生 module 且不能修改原始碼,有些不方便,不過都是Library了,本也就不該修改它XD 以下提供一些引用方式,可依需求來參考(方法1、2使用壓縮檔,方法3為Project): 1. 檔案檢視方式改成Project,打開libs(app -> libs)將aar或jar放入 `在相依庫加入 -> implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')` - 優點:在Android檢視方式下看不到、模組檔案小 - 缺點:無法修改原始碼 2. 如本文使用方式 - 優點:模組檔案小 - 缺點:在Android檢視方式下看得到、無法修改原始碼 3. 使用import(File -> Import Module -> 選擇Project路徑 -> 勾Import -> 修改模組名稱) `在相依庫加入 -> implementation project(':module_name')` - 優點:如同匯入一個新的Project,因此可以修改原始碼 - 缺點:在Android檢視方式下看得到、模組檔案較大 > [aar打包與引用](http://nickthomas55.pixnet.net/blog/post/225790715-android-aar%E6%AA%94%E6%89%93%E5%8C%85%E8%88%87%E5%BC%95%E7%94%A8) > [官方-創建Library](https://developer.android.com/studio/projects/android-library?hl=zh-cn) > [aar常識](https://blog.csdn.net/qq_32452623/article/details/79220522) > [製作公開Library](https://github.com/hehonghui/android-tech-frontier/blob/master/issue-17/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8Android-Studio%E6%8A%8A%E8%87%AA%E5%B7%B1%E7%9A%84Android-library%E5%88%86%E5%8F%91%E5%88%B0jCenter%E5%92%8CMaven-Central.md) > [Adding external library in Android studio](https://stackoverflow.com/questions/25610727/adding-external-library-in-android-studio)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up