Android SDK 開發中的 AAR 與 JAR 區別詳解

在 Android SDK 開發中,構建項目時我們常常會看到生成兩個不同的文件:一個是 build/outputs/aar/*.aar,另一個是 build/intermediates/aar_main_jar/debug/syncDebugLibJars/classes.jar。很多初學者會疑惑:它們之間有什么區別?為什么構建會生成兩個包?本篇博客將從生成路徑、結構內容和使用場景三個角度,系統解釋 AAR 和 JAR 的差異。


一、生成路徑解析

  • AAR 路徑:

    • build/outputs/aar/*.aar
    • 這是最終用于發布的 Android 庫包,是你寫的 SDK 的對外依賴形式。
  • JAR 路徑:

    • build/intermediates/aar_main_jar/debug/syncDebugLibJars/classes.jar
    • 這是 AAR 構建過程中的中間產物,只包含編譯后的 .class 字節碼文件,供內部依賴合并、同步等使用。

二、結構內容區別

內容.aarclasses.jar
Java 編譯后的 .class 文件??
AndroidManifest.xml??
res/ 資源文件(布局、drawable 等)??
assets 目錄??
原生庫(.so 文件)??
ProGuard 混淆配置文件??
AIDL 文件、R 文件??

classes.jar 可以看作是 AAR 包中的 Java 部分,它是構建 AAR 時被打包進去的一部分。


三、使用場景區別

? 使用 AAR 的情況:
  • 你的庫中包含資源文件(如 layout、drawable、string)
  • 你聲明了組件(Activity、Service、Provider)
  • 你打算作為 Android SDK 發布給其他開發者
? 使用 JAR 的情況:
  • 你開發的是一個純 Java 工具類庫
  • 沒有任何資源或 Android 相關特性
  • 可以跨平臺使用,例如在 Kotlin/Java 控制臺項目中

四、示意圖說明

AAR 文件結構:my-sdk.aar
├── AndroidManifest.xml
├── classes.jar      ← 編譯后的 Java 類
├── res/             ← 資源文件
├── assets/          ← 資產文件
├── jni/             ← .so 庫文件
├── R.txt            ← R 文件映射表
├── proguard.txt     ← 混淆配置文件

classes.jar 是其中的一部分,只包含 Java 類,缺失資源、Manifest 等信息,因此不能單獨用于 Android 項目。


五、總結

項目AARJAR
是否可直接用于 Android??(除非是純 Java)
是否包含資源文件??
是否包含 manifest??
是否是最終產物??(是中間產物)

一句話總結: AAR 是完整的 Android 庫包,包含 Java 字節碼和資源;JAR 是純 Java 字節碼的封裝,是構建過程中臨時生成的部分內容。

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

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

相關文章

服務器配置錯誤導致SSL/TLS出現安全漏洞,如何進行排查?

SSL/TLS 安全漏洞排查與修復指南 一、常見配置錯誤類型? 弱加密算法與密鑰問題? 使用弱密碼套件&#xff08;如DES、RC4&#xff09;或密鑰長度不足&#xff08;如RSA密鑰長度<2048位&#xff09;&#xff0c;導致加密強度不足。 密鑰管理不當&#xff08;如私鑰未加密存…

Day20打卡-奇異值SVD分解

今天學習非特征篩選的方法&#xff1a; 知識點回顧&#xff1a; 線性代數概念回顧&#xff08;可不掌握&#xff09;奇異值推導&#xff08;可不掌握&#xff09;奇異值的應用 特征降維&#xff1a;對高維數據減小計算量、可視化數據重構&#xff1a;比如重構信號、重構圖像&am…

temu采購自養號全流程解析:從賬號搭建到安全下單的技術閉環

temu 自養號采購下單技術是一個精細的過程&#xff0c;需要從多個方面進行考慮和操作&#xff0c;其核心在于通過技術手段模擬真實用戶行為&#xff0c;構建獨立、安全的賬號環境以確保賬號的安全性、真實性和采購下單的成功率。以下是對該技術的詳細解析 1. 賬號準備 手機號…

相機Camera日志分析之八:高通Camx HAL架構opencamera三級日志詳解及關鍵字

【關注我,后續持續新增專題博文,謝謝!!!】 上一篇我們講了:相機Camera日志分析之七:高通Camx HAL架構opencamera二級日志詳解及關鍵字 這一篇我們開始講: 相機Camera日志分析之八:高通Camx HAL架構opencamera三級日志詳解及關鍵字 目錄 【關注我,后續持續…

自定義類型-結構體(二)

結構體內存對齊 偏移量 指的是結構體中某個成員相對于結構體起始地址的字節距離 第一個成員的起始位置為0&#xff0c;一個字節表示一個單位 這里的數字表示的是該成員地址與結構體首地址之間的值 對齊規則 1.結構體第一個成員的第一個字節的偏移量為0 2.其余成員變量要…

【免費工具】圖吧工具箱2025.02正式版

DIY愛好者的必備工具 軟件截圖&#xff1a; —————【下 載 地 址】——————— 【本章單下載】&#xff1a;https://drive.uc.cn/s/f08aad37ddb14 【百款黑科技】&#xff1a;https://ucnygalh6wle.feishu.cn/wiki/HPQywvPc7iLZu1k0ODFcWMt2n0d?fromfrom_copylink …

DAX 權威指南1:DAX計算、表函數與計算上下文

參考《DAX 權威指南 第二版》 文章目錄 二、DAX簡介2.1 理解 DAX 計算2.2 計算列和度量值2.3 變量2.3.1 VAR簡介2.3.2 VAR的特性 2.4 DAX 錯誤處理2.4.1 DAX 錯誤類型2.4.1.1 轉換錯誤2.4.1.2 算術運算錯誤2.4.1.3 空值或 缺失值 2.4.2 使用IFERROR函數攔截錯誤2.4.2.1 安全地進…

【Linux系統】從零開始構建簡易 Shell:從輸入處理到命令執行的深度剖析

文章目錄 前言一、打印命令行提示符代碼功能概述 二、讀取鍵盤輸入的指令2.1 為什么不繼續使用scanf()而換成了fgets()&#xff1f;2.2 調試輸出的意義2.3 為什么需要去掉換行符&#xff1f; 三、指令切割補充知識&#xff1a; strtok 的函數原型 四、普通命令的執行代碼功能概…

湖倉一體架構在金融典型數據分析場景中的實踐

在數字經濟與金融科技深度融合的今天&#xff0c;數據已成為金融機構的核心戰略資產。然而&#xff0c;傳統數據架構面臨著三大困局&#xff0c;制約著金融機構數據價值的充分釋放。 一、需求驅動更多銀行數據分析場景 金融機構&#xff0c;特別是銀行業&#xff0c;面臨著雙重…

基于Llama3的開發應用(一):Llama模型的簡單部署

Llama模型的簡單部署 0 前言1 環境準備1.1 硬件環境1.2 軟件環境 2 Meta-Llama-3-8B-Instruct 模型簡介2.1 Instruct含義2.2 模型下載 3 簡單調用4 FastAPI 部署4.1 通過FastAPI簡單部署4.2 測試 5 使用 streamlit 構建簡易聊天界面6 總結 0 前言 本系列文章是基于Meta-Llama-…

模擬太陽系(C#編寫的maui跨平臺項目源碼)

源碼下載地址&#xff1a;https://download.csdn.net/download/wgxds/90789056 本資源為用C#編寫的maui跨平臺項目源碼&#xff0c;使用Visual Studio 2022開發環境&#xff0c;基于.net8.0框架&#xff0c;生成的程序為“模擬太陽系運行”。經測試&#xff0c;生成的程序可運行…

基于人工智能的個性化 MySQL 學習路徑推薦研究

基于人工智能的個性化 MySQL 學習路徑推薦研究 摘要: 隨著信息技術的飛速發展,數據庫在各行業應用廣泛,MySQL 作為主流數據庫之一,學習需求龐大。然而,不同學習者在知識水平、學習進度和目標上存在差異,傳統統一的學習路徑難以滿足個性化需求。本研究通過運用人工智能技…

OSPF綜合應用

? 要求&#xff1a; 1&#xff0c;R5為ISP&#xff0c;其上只能配置IP地址&#xff1b;R4作為企業邊界路由器&#xff0c; 出口公網地址需要通過PPP協議獲取&#xff0c;并進行chap認證 2&#xff0c;整個OSPF環境IP基于172.16.0.0/16劃分&#xff1b; 3&#xff0c;所有設備…

中國古代史1

朝代歌 三皇五帝始&#xff0c;堯舜禹相傳。 夏商與西周&#xff0c;東周分兩段。 春秋和戰國&#xff0c;一統秦兩漢。 三分魏蜀吳&#xff0c;二晉前后延。 南北朝并立&#xff0c;隋唐五代傳。 宋元明清后&#xff0c;皇朝至此完。 原始社會 元謀人&#xff0c;170萬年前…

ensp的華為小實驗

1.先進行子網劃分 2.進行接口的IP地址配置和ospf的簡易配置&#xff0c;先做到全網小通 3.進行ospf優化 對區域所有區域域間路由器進行一個匯總 對區域1進行優化 對區域2.3進行nssa設置 4.對ISP的路由進行協議配置 最后ping通5.5.5.5

華為OD機試真題——荒島求生(2025A卷:200分)Java/python/JavaScript/C/C++/GO最佳實現

2025 A卷 200分 題型 本專欄內全部題目均提供Java、python、JavaScript、C、C、GO六種語言的最佳實現方式&#xff1b; 并且每種語言均涵蓋詳細的問題分析、解題思路、代碼實現、代碼詳解、3個測試用例以及綜合分析&#xff1b; 本文收錄于專欄&#xff1a;《2025華為OD真題目錄…

IOC和Bean

IOC IOC將對象的創建&#xff0c;依賴關系的管理和生命周期的控制從應用程序代碼中解耦出來了 IOC容器的依賴注入(DI) 在程序運行過程中動態的向某個對象中注入他所需要的其他對象 依賴注入是基于反射實現的 Spring IOC 容器使用的是Map&#xff08;concorrentMap&#xff…

vue3: pdf.js 2.16.105 using typescript

npm create vite vuepdfpreview //創建項目npm install vue-pdf-embed npm install vue3-pdfjs npm install pdfjs-dist2.16.105 <!--* |~~~~~~~|* | |* | |…

Java面試全棧解析:Spring Boot、Kafka與Redis實戰揭秘

《Java面試全棧解析&#xff1a;Spring Boot、Kafka與Redis實戰揭秘》 【面試現場】 面試官&#xff1a;&#xff08;推了推眼鏡&#xff09;小張&#xff0c;你簡歷里提到用Spring Boot開發過微服務系統&#xff0c;能說說自動配置的實現原理嗎&#xff1f; 程序員&#xff1…

常見的提示詞攻擊方法 和防御手段——提示詞注入(Prompt Injection)攻擊解析

提示詞注入&#xff08;Prompt Injection&#xff09;攻擊解析 提示詞注入是一種針對大型語言模型&#xff08;LLM&#xff09;的新型攻擊手段&#xff0c;攻擊者通過精心設計的輸入文本&#xff08;提示詞&#xff09;操控AI模型的輸出&#xff0c;使其執行非預期行為或泄露敏…