Android Studio 中 build、assemble、assembleDebug 和 assembleRelease 構建 aar 的區別

上一篇:Tasks中沒有build選項的解決辦法

概述:

在構建 aar 包時通常會在下面的選項中進行構建,但是對于如何構建,選擇哪種方式構建我還是處于懵逼狀態,所以我整理了一下幾種構建方式的區別以及如何選擇。
在這里插入圖片描述

1. build(位于 build 分組下)

build 會同時執行 assemble + check(包含 lint 檢查等),速度較慢,且通常不需要額外檢查步驟。

2. assemble(位于 build 分組下)

作用
  • 構建所有變體(Variants):包括 Debug、Release 以及其他自定義構建類型(如 Staging)和產品風味(Product Flavors)的組合。
  • 生成所有可能的 AAR/APK:例如,如果你有 freepaid 兩種產品風味,assemble 會生成:
    • freeDebugfreeRelease
    • paidDebugpaidRelease
使用場景
  • 需要一次性構建所有變體(如 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/Releaseother 分組?

  • 歷史原因:Gradle 將“非標準”任務歸類到 other,而 assemble 是通用聚合任務。
  • 實際無影響:分組僅是 UI 展示邏輯,功能完全正常。

6. 如何選擇?

? 推薦方式

使用 assembleRelease(生成 Release 版 AAR)或 assembleDebug(生成 Debug 版 AAR):

  • 路徑:Gradle → 模塊名otherTasksbuildassembleRelease/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(但通常僅在自動化流程中使用)。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/81350.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/81350.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/81350.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

視頻質量分析時,遇到不同分辨率的對照視頻和源視頻,分辨率對齊的正確順序。

背景 我們平時在做視頻轉碼后,會用VMAF/PSNR得評分工具進行視頻對比的評分,但是這幾種客觀評分方式都有一個要求就是分辨率要一模一樣,因為這樣才對像素點做數學運算。 但是分辨率對齊其實有兩種選擇,例如源視頻是1080P&#xf…

【技巧】離線安裝docker鏡像的方法

回到目錄 【技巧】離線安裝docker鏡像的方法 0. 為什么需要離線安裝? 第一、 由于docker hub被墻,所以 拉取鏡像需要配置國內鏡像源 第二、有一些特殊行業服務器無法接入互聯網,需要手工安裝鏡像 1. 可以正常拉取鏡像服務器操作 服務器…

計算機網絡 : 網絡基礎

計算機網絡 : 網絡基礎 目錄 計算機網絡 : 網絡基礎引言1. 網絡發展背景2. 初始協議2.1 初始協議2.2 協議分層2.2.1 軟件分層的好處2.2.2 OSI七層模型2.2.3 TCP/IP五層(四層)模型 2.3 TCP/IP協議2.3.1TCP/IP協議與操作系統的關系&…

【2025最新】Windows系統裝VSCode搭建C/C++開發環境(附帶所有安裝包)

文章目錄 為什么選擇VSCode作為C/C開發工具?一、VSCode安裝過程(超簡單!)二、VSCode中文界面設置(再也不用對著英文發愁!)三、安裝C/C插件(編程必備神器!)四、…

Jmeter 安裝包與界面漢化

Jmeter 安裝包: 通過網盤分享的文件:CSDN-apache-jmeter-5.5 鏈接: https://pan.baidu.com/s/17gK98NxS19oKmkdRhGepBA?pwd1234 提取碼: 1234 Jmeter界面漢化:

HandlerInterceptor介紹-筆記

1. HandlerInterceptor簡介 org.springframework.web.servlet.HandlerInterceptor 是 Spring MVC 中用于攔截 HTTP 請求的核心接口。 public interface HandlerInterceptor {default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object ha…

C++循環效率比較與優化建議

在 C++ 中,不同循環結構(如 for、while、do-while、基于范圍的 for)在優化后的性能通常是等效的,因為現代編譯器會對它們進行底層優化,生成相似的機器代碼。循環的效率更多取決于循環體內的操作和數據訪問模式,而非循環結構本身的選擇。以下是關鍵點總結: 1. 傳統循環的…

北京孫河傲云源墅:限量典藏的主城墅居臻品

在限墅令的背景下,北京主城的墅居產品日益稀缺,而傲云源墅作為孫河墅區的杰出之作,憑借其獨特的價值,成為了眾多高端置業者的理想選擇。 傲云源墅所處的孫河地區,是北京公認的高價值板塊。其地位在 2025 年孫河 2902 …

簡單入門RabbitMQ

本章將帶大家來寫一個簡單的程序,使用 Java 創建RabbitMQ 的生產者和消費者 依賴引入 在 Maven 倉庫中輸入 amqp-client: 找到第一個 RabbitMQ Java Client ,點擊進去找到一個合適的版本然后將依賴引入到我們項目中的 pom.xml 文件中。 …

Git基礎使用方法與命令總結

Git 是一個分布式版本控制系統,用于跟蹤代碼或文件的修改歷史。以下是 Git 的基礎使用方法和常用命令,適合快速上手: 1. 安裝與配置 安裝 Git 下載地址:https://git-scm.com/downloads(支持 Windows/macOS/Linux&…

Oracle SYSTEM/UNDO表空間損壞的處理思路

Oracle SYSTEM/UNDO表空間損壞是比較棘手的故障,通常會導致數據庫異常宕機進而無法打開數據庫。數據庫的打開故障處理起來相對比較麻煩,讀者可以參考本書第5章進一步了解該類故障的處理過程。如果數據庫沒有備份,通常需要設置官方不推薦的隱含…

The Graph:區塊鏈數據索引的技術架構與創新實踐

作為Web3生態的核心基礎設施,The Graph通過去中心化索引協議重塑了鏈上數據訪問的范式。其技術設計不僅解決了傳統區塊鏈數據查詢的效率瓶頸,還通過經濟模型與多鏈兼容性構建了一個開放的開發者生態。本文從技術角度解析其架構、機制及創新實踐。 一、技…

在24GB顯存大小的GPU上運行27GB的Pytorch模型

在24GB顯存大小的GPU上運行27GB的Pytorch模型 一.背景:顯存不足時的破局之道1.1 大模型時代的顯存困境1.2 CUDA統一內存的魔法二.性能測試數據深度解讀關鍵發現:三.復現過程3.1 準備自定義分配器3.2 準備測試程序3.3 執行流程3.4 開始測試四.原理深度剖析4.1 統一內存的工作機…

Spring Boot 參數驗證

一、依賴配置 首先確保在 pom.xml 中添加了以下依賴&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId> </dependency> 這個依賴包含了 Hibernate Valida…

SHAP分析!Transformer-GRU組合模型SHAP分析,模型可解釋不在發愁!

SHAP分析&#xff01;Transformer-GRU組合模型SHAP分析&#xff0c;模型可解釋不在發愁&#xff01; 目錄 SHAP分析&#xff01;Transformer-GRU組合模型SHAP分析&#xff0c;模型可解釋不在發愁&#xff01;效果一覽基本介紹程序設計參考資料 效果一覽 基本介紹 基于SHAP分析…

在微創手術中使用Kinova輕型機械臂進行多視圖圖像采集和3D重建

在微創手術中&#xff0c;Kinova輕型機械臂通過其靈活的運動控制和高精度的操作能力&#xff0c;支持多視圖圖像采集和3D重建。這種技術通過機械臂搭載的光學系統實現精準的多角度掃描&#xff0c;為醫療團隊提供清晰且詳細的解剖結構模型。其核心在于結合先進的傳感器配置與重…

Qt事件循環機制

受事件循環機制影響&#xff0c;按鈕的樣式表改變了可能不會立即刷新。 需要使用 update() 或 repaint() 或者調用 QApplication::processEvents() 強制處理所有待處理的事件&#xff0c;從而確保界面更新。 在 Qt 中&#xff0c;事件循環&#xff08;Event Loop&#xff09;是…

Leaflet 自定義瓦片地圖與 PHP 大圖切圖算法 解決大圖沒辦法在瀏覽器顯示的問題

為什么使用leaflet 使用 Leaflet 來加載大圖片&#xff08;尤其是通過瓦片化的方式&#xff09;是一種高效的解決方案&#xff0c;主要原因如下&#xff1a; 1. 性能優化 減少內存占用&#xff1a;直接加載大圖片會占用大量內存&#xff0c;可能導致瀏覽器崩潰或性能下降。瓦片…

一種應用非常廣泛的開源RTOS(實時操作系統):nuttx

什么是NuttX&#xff1f; NuttX&#xff08;讀音接近“納特-艾克斯”&#xff09;是一種應用非常廣泛的開源RTOS&#xff08;實時操作系統&#xff09;&#xff0c;由Gregory Nutt博士主要推動開發。RTOS&#xff0c;即 Real-Time Operating System&#xff0c;直譯為“實時操…

Python中plotext 庫詳細使用(命令行界面中直接繪制各種圖形)

更多內容請見: python3案例和總結-專欄介紹和目錄 文章目錄 plotext概述1.1 plotext介紹1.2 安裝二、基本用法2.1 簡單繪圖2.2 散點圖2.3 折線圖2.4 條形圖2.5 直方圖2.6 標題和坐標軸標簽2.7 網格和坐標軸2.8 顏色和樣式2.9 多圖疊加三、高級功能3.1 多圖繪制3.2 對數坐標3.3…