上一篇:Tasks中沒有build選項的解決辦法
概述:
在構建 aar 包時通常會在下面的選項中進行構建,但是對于如何構建,選擇哪種方式構建我還是處于懵逼狀態,所以我整理了一下幾種構建方式的區別以及如何選擇。
1. build
(位于 build
分組下)
build
會同時執行 assemble
+ check
(包含 lint 檢查等),速度較慢,且通常不需要額外檢查步驟。
2. assemble
(位于 build
分組下)
作用
- 構建所有變體(Variants):包括 Debug、Release 以及其他自定義構建類型(如
Staging
)和產品風味(Product Flavors)的組合。 - 生成所有可能的 AAR/APK:例如,如果你有
free
和paid
兩種產品風味,assemble
會生成:freeDebug
、freeRelease
paidDebug
、paidRelease
使用場景
- 需要一次性構建所有變體(如 CI/CD 環境打包全部分發版本)。
- 不關心具體構建類型時(但會顯著增加構建時間)。
輸出路徑
/build/outputs/aar/├── module-name-free-debug.aar├── module-name-free-release.aar├── module-name-paid-debug.aar└── module-name-paid-release.aar
3. assembleDebug
/ assembleRelease
(位于 other
分組下)
作用
- 針對單一構建類型:
assembleDebug
:僅構建 Debug 版本(未優化,含調試符號)。assembleRelease
:僅構建 Release 版本(經過 ProGuard 優化,無調試信息)。
使用場景
- 日常開發中快速生成 Debug 版 AAR 供測試。
- 發布時明確需要 Release 版 AAR(優化后的正式版本)。
輸出路徑
/build/outputs/aar/├── module-name-debug.aar # assembleDebug└── module-name-release.aar # assembleRelease
4. 關鍵區別
Task | 構建范圍 | 構建速度 | 典型用途 |
---|---|---|---|
assemble | 所有變體(Debug+Release+Flavors) | 慢 | 全量構建(如 CI 打包所有版本) |
assembleDebug | 僅 Debug 版本 | 快 | 開發調試 |
assembleRelease | 僅 Release 版本 | 中等 | 正式發布或分發給第三方 |
5. 為什么 assembleDebug/Release
在 other
分組?
- 歷史原因:Gradle 將“非標準”任務歸類到
other
,而assemble
是通用聚合任務。 - 實際無影響:分組僅是 UI 展示邏輯,功能完全正常。
6. 如何選擇?
? 推薦方式
使用 assembleRelease
(生成 Release 版 AAR)或 assembleDebug
(生成 Debug 版 AAR):
-
路徑:Gradle →
模塊名
→other
→Tasks
→build
→assembleRelease
/assembleDebug
-
生成位置:
/module-name/build/outputs/aar/module-name-release.aar /module-name/build/outputs/aar/module-name-debug.aar
? 不推薦直接使用 build
Task
build
會同時執行assemble
+check
(包含 lint 檢查等),速度較慢,且通常不需要額外檢查步驟。- 如果只是需要 AAR,直接運行
assembleRelease
更高效。
總結
- 開發階段:用
assembleDebug
(快速生成調試版)。 - 發布階段:用
assembleRelease
(生成優化后的正式版)。 - 批量構建:用
assemble
(但通常僅在自動化流程中使用)。