2017-7-4(Android SDK中每個資料夾的用處)

wyman_1007發表於2017-12-26

一般通過
Paste_Image.png
上面紅框截圖工具下載下來的SDK裡面的內容都是應該向下邊截圖一樣的:

Paste_Image.png
下面說一下主要的幾個資料夾是幹嘛的,方便以後整理。由於之前看到自己的SDK包下有40多G內容太嚇人了。

build-tools資料夾

此資料夾就是用於編譯android專案用到的。意思是該android專案用什麼版本的android編譯;

Paste_Image.png
在AS開啟專案裡面的gradle配置檔案裡面的builToolsVersion就是對應這裡的。

Paste_Image.png
所以一般我自己的該資料夾都有好幾個android版本可以進行編譯,主要是方便為之前的專案和網上下載下來的專案好編譯;如果在網上下載下來的專案裡面的gradle配置檔案自己的SDK沒有改builToolsVersion版本會編譯不成功的,解決方法一個就是下載專案要求的,第二個就是修改buildToolsVersion的版本號,這樣一改,一般下面的v4和v7相容包也要更改。即下面截圖部分:

Paste_Image.png

docs資料夾

其實該資料夾就是androidSDK文件,整個Android官網的頁面資訊都在這裡,如果你在斷網的情況下可以用瀏覽器開啟index.html
這樣就可以瀏覽到Android的官網,官方的API

Paste_Image.png

Paste_Image.png

extras資料夾

這個資料夾主要用於存放v4和v7包,還有一些是USB的驅動檔案(是放在這個資料夾下的另外個資料夾裡面)

platforms資料夾

這裡就是存放不同版本的SDK,在AS開啟專案裡面的gradle配置檔案裡面的targetSdkVersion就是對應這裡的。

Paste_Image.png
一般同build-tools資料夾一樣都會存放好幾個版本

Paste_Image.png

platform-tools資料夾

它主要是存放Android平臺的相關工具。如:adb.exe、sqlite3.exe

samples資料夾

該檔案是存放android官網寫一些Demo,學習Android,其實這裡就有很好的案例可以借鑑

Paste_Image.png

sources資料夾

這個資料夾其實就是存放android的原始碼,一般我們在AS開啟都會看到原始碼,是因為AS自帶反編譯功能把.class檔案都反編譯過來了,但是你把原始碼下下來,即這個資料夾有相關版本的原始碼,AS是可以找到對應的.java檔案而且這些檔案都有大量的註釋。這裡其實也是學習android原始碼的好地方。

Paste_Image.png

system-images資料夾

該資料夾就是存放虛擬機器檔案的,所佔的空間最大。一個版本的虛擬機器就可以有10幾G。所以如果需要瘦身SDK資料夾可以從此入手。

tools資料夾

這裡存放一些Android開發用到的工具。如生成.9圖片;除錯工具;DDMS等

add-ons資料夾

這個資料夾可能不是所有人都有,因為是下載了一些第三方框架才會出現此資料夾。如butterknife,okhttp等

SDKmanager

最後看看SDKmanager其實需要下載些什麼就足夠了。

Paste_Image.png

Paste_Image.png
Paste_Image.png
其實就下紅色框下的就可以進行開發了,(版本視需要下載);其餘是看自己需要是否下載如原始碼,擴充套件包第三方框架;

其實在我第一個截圖還有幾個資料夾是沒有說明的,在這裡我還沒有搞懂是怎麼出來的,但是肯定的是不影響你開發的,可能是當初編譯專案時產生出來的。算是我自己的知識盲區吧。

這裡記錄一下編譯專案的邏輯關係

這裡有篇文章關於這些問題:
Android Studio中gradle版本對應關係
Android studio 編譯需要保證:SDK Build Tools 版本,Gradle 版本,Gradle Plugin 版本 相容。
有個邏輯關係:

要重點關注Gradle版本的版本 ,因為版本決定了 SDK Build Tools 版本與 Gradle Plugin 版本。

compileSdkVersion,決定了app所能使用的api的上限,如果編譯SDK為api16的,則app不能api16之後新增的api,只能使用api16及之前的api。
minSdkVersion,決定了app所能使用的api的下限。
targetSdkVersion,如果targetSdkVersion是10但是手機系統的是11,那麼系統在某些方面會做向前相容,而不會使用最新的特性(比如大屏特性,api11才有的)。

相關文章