天天看點

Android基礎知識——Android SDK Manager詳解

做Android開發時,免不了使用Android SDK Manager,安裝需要的sdk版本、buildTools版本等等。下圖展示了2016.11.16号Android SDK Manager所有的package。很多Android開發的新人在使用的時候可能會疑惑了:這些package到都是什麼功能呢,都要安裝嗎?本篇文章将為你把這些疑惑解開(如果你隻想知道需要安裝哪些package,直接跳至文末)。

1. SDK Manager 目錄結構

SDK Manager 的package目錄結構如下面兩幅圖所示

Android基礎知識——Android SDK Manager詳解
Android基礎知識——Android SDK Manager詳解

大體上可以分為Tools、Platforms和Extras三部分。install需要的package後,Android Studio将在本地建立對應的檔案目錄,如圖是部落客安裝了一些package之後,PC上的目錄結構:

Android基礎知識——Android SDK Manager詳解

通過本地檔案,我們可以了解到install某個package之後,會提供什麼樣的功能,由檔案夾的命名找到對應的package并不是很難,比如紅色圈出來的三塊,很容易知道來自SDK Manager的Tools目錄下面。下面我們将通過檢視Tools、Platforms和Extras三部分的本地檔案的方式帶大家詳細了解SDK Manager。

1. Tools

Tools檔案夾下包括三種tools:Android SDK Tools,Android SDK Platform-tools和Android SDK Build-tools。對應于本地檔案夾的tools,platform-tools和build-tools。

  1. Android SDK Tools

    Android SDK Tools對應的本地檔案夾的存儲目錄如下圖所示:

    Android基礎知識——Android SDK Manager詳解

    SDK Tools包含了很多重要的工具,比如:ddms用于啟動Android調試工具;draw9patch則是繪制android平台的.9圖的工具;monkeyrunner則是一個不錯的壓力測試工具,模拟使用者在手機上随機按鍵;mksdcard是模拟器SD映像的建立工具,emulator是Android SDK模拟器主程式;traceview是android平台上重要的調試工具,可以列出每個方法調用所使用的事件,展開方法還能看到方法被調用其他方法所占用的時間百分比,這樣就可以知道那個方法用了最多的資源,進而可以對其進行優化或者将其搬離主線程。其他工具就不一一介紹了,感興趣的自行了解。

    由此可見,SDK Tools是需要安裝的。

  2. Android SDK Platform-tools

    SDK Platform-tools的本地檔案夾對應的檔案目錄

    Android基礎知識——Android SDK Manager詳解

    Platform-tools同樣包含了很多重要工具:adb是android調試工具,以指令行的形式和模拟器或者連接配接的手機進行通訊;sqlite3幫助開發者在PC上檢視sqlite資料庫等其它工具。同上,其他工具可以參考Google的開發者文檔了解。

    SDK Platform-tools也是需要安裝的。

  3. Android SDK Build-tools

    Android SDK Build-tools和Android SDK Tools以及Android SDK Platform-tools不同的地方是,Android SDK Managert 保留了Android SDK Build-tools的老版本,而其他兩類Tools隻提供最新版的update。在部落客的電腦上安裝過的Build-tools就有這幾個版本:

    Android基礎知識——Android SDK Manager詳解

    早期的Build-tools放在Platform-tools中,2013年之後為了

    将編譯相關的元件從platform-tools元件中解耦,Google建立了Build-tools存放,并且Build-tools可以獨立于IDE更新。

    Decoupled the build-specific components of the Android SDK from the platform-tools component, so that the build tools can be updated independently of the integrated development environment (IDE) components.
    為什麼Build-tools需要保留舊的版本,stack overflow給出的解釋是保持向後相容的能力,新的Build-tools可能移除了老版的一些特性,此時對采用老版Build-tools build的工程來說,還得接着用舊版。
    they keep the old build tools because as they update the tools, some features become deprecated. But app developers might have source code that relies on those features so they keep the old versions available to support those old code bases.
    部落客的24.0.2版本的Build-tools包含的工具如下:
    Android基礎知識——Android SDK Manager詳解

    包括 aapt(Android Asset Packaging Tool)安卓資源打包工具:編譯應用程式的資源檔案(包括 AndroidManifest.xml 和你的 Activitiy 的 xml 檔案),生成 R.java 檔案,這樣你就可以從你的java代碼中引用資源;aidl:把 .aidl 接口轉換成 java 接口;dx:轉化 .class 中間代碼為dvlik中間代碼,所有經過 java 編譯的生成 .class 檔案都需要此工具進行轉換,最後打包進 apk 檔案中等工具等等功能。

    綜上,部落客建議大家建立新工程時盡量使用最新版的build-tools,一個是新版的修複老闆的一些bug,二個是功能和性能上都會有提升。

2. Platforms

每個Android版本對應于一個Platforms版本,2016.11.16号官方給出的SDK版本可選項從Android 2.1到最新的Android 7.1.1。每個版本的Platforms又包括Android SDK 的SDK Platform,Document,Sources以及System Image。

  1. SDK Platform

    這個好了解,就是該版本編譯好的SDK,肯定是必須裝的

  2. Document

    離線的文檔,友善你查閱API使用說明

  3. Sources

    源代碼,一個是學習Google優秀的源代碼,二個是檢視源碼友善調錯。

  4. System Image

    編譯好的系統映像,模拟器可以直接加載,一般沒必要install,建立需要的模拟器後在擷取也不遲。Android Studio 2.0之後,官方提供的模拟器已經很好用了,個人覺得可以不用Genymotion。

3. Extras

Extras中包含了很多blahblahblah的,比較重要的是這三個Android Support Repository , Android Support Library, Google Repository 。想知道這三者的差別,得先知道Android Studio和Eclipse在建構Android 項目時的差別。AS采用gradle建構,而eclipse采用ant建構。是以Google提供了Respository用于Android Studio,而Library用于Eclipse。

  1. Android Support Repository

    包含支援庫的本地 Maven 存儲庫,該存儲庫提供了一組豐富的 API,這些 API 相容大多數版本的 Android。該工具是 Android Wear、Android TV 和 Google Cast 等産品的必備工具。Google之是以要提供Android Support Repository,主要基于以下三點的考慮:向後相容——新的SDK加入的新特性可以在舊版SDK展現;提供不适合打包進framework的功能——一些非強制要求的特性通過Android Support Repository的方式,供開發者選用;為了支援不同形态的裝置——就像上面提到的,不同的裝置之間的差異功能由Support Repository實作。Android Support Repository目前包含了13類的支援庫,我們常用的有v4 ,v7,v13 這三種Support Library。關于Android Support Repository更多詳解,參考Android Support Library的前世今生。

  2. Google Repository

    該存儲庫可為您的應用提供各種功能和服務,包括 Firebase、Google 地圖、遊戲成就和排行榜等。

除了這三個之外Intel x86 Emulator Accelerator用于加速Intel x86架構的手機模拟器,如有需要可以安裝。

4. 總結

說了這麼多,一張圖概括下Android SDK Manager扮演的角色就是知乎—康建偉總結的下圖:

Android基礎知識——Android SDK Manager詳解

本文的誕生要感謝

1. Android SDk Manager裡面到底哪些東西是必須下載下傳的?

2. What are the Android SDK build-tools, platform-tools and tools? And which version should be used?

3. Update the IDE and Tools

4. android sdk裡的各目錄作用

5. Android Support Library的前世今生

6. android what is the difference between Android Support Repository vs Android Support Library vs Google Repository vs Google Play Services

很慚愧,做了一點微小的貢獻!