一、什麼是Android SDK、API
Android SDK(Software Development Kit)提供了在Windows/Linux/Mac平臺上開發Android應用的開發組件,Android支持所有的平臺,其包含了在Android平臺上開發移動應用的各種工具集。
工具集不僅包括了Android模擬器和用於Eclipse的Android開發工具插件(ADT),而且包括了各種用來調試、打包和在模擬器上安裝應用的工具。
Android SDK主要是以Java語言爲基礎,用戶可以使用Java語言來開發Android平臺上的軟件應用。通過SDK提供的一些工具將其打包成Android平臺使用的apk文件,然後用SDK中的模擬器(Emulator)來模擬和測試軟件在Android平臺上運行情況和效果。
爲Android 的開發提供開發環境,提供爲們所需要的工具集,而API 測試我們所需要的那個工具
例子:
A 開發的應用,B想使用,那麼A 把自己寫的代碼打包成jar或者其他,又B來使用,A 代碼中B要使用的功能就是API 了
二、到底是使用官方提供的SDK 還是自己編譯的SDK 呢?
- 這就好比是你自己在Android studio 中開發的Demo有一個依賴A,和一個別人寫的依賴B,兩者功能相同,那卻別是什麼呢?
依賴(SDK,以下稱SDK)的存在可以很有效的提高開發效率、代碼質量、複用率減少項目體積等等好處,一個成熟的SDK具有體積小(相對)、功能易用、擴展性(最主要)好等優點,
- 那我們拿上面的A、B 來說,有一個新的功能添加的時候,是自己的代碼非常容易修改,B 就相對難搞了,
- A 中只有自己想要個功能的代碼,B 不能剔除無用代碼
當然上面的原理在SDK 中還是有用的
三、編譯自己的SDK
以下兩篇文章是編譯前準備的,推薦閱讀
自我進階(一) Android 源碼編譯,環境準備
自我進階(二) Aandroid 源碼編譯
1. 源碼文件AndroidSoucre文件,初始化編譯環境
. build/envsetup.sh
2. 編譯SDK
make sdk
使用的還是make命令
編譯完成之後,配置環境變量
1. sudo vim /etc/profile
在最後一行插入:
export PATH=$PATH:路徑/out/host/linux-x86/bin
export ANDROID_PRODUCT_OUT=路徑/target/product/generic_arm64
退出保存
說明:
2. /out/host/linux-x86/bin有我們要執行的emulator命令
3. /target/product/generic_arm64 是Android鏡像存放目錄,執行emulator命令時會用到
四、 運行emulator
emulator -partition-size 20480
android 使用的Android 鏡像文件爲system.img、userdata.img和ramdisk.img,不單獨指定的時候是使用我們指定的編譯目標的目錄 out/target/product/generic_arm64下的文件,編譯內核默認/prebuilts/qemu-kernel/arm64/kernel-qemu
五、瞭解emulator常用的命令
emulator -help 查看所有命令
- -sysdir <dir>
earch for system disk images in dir 在目錄中查找系統磁盤映像
- system <file>
從<file讀取初始系統圖像
- ramdisk
ramdisk映像(默認值/ramdisk.img
爲什麼單獨說這三個命令呢?
前面說過Android 模擬器運行需要四個文件
- Linux Kernel鏡像zImage
- system.img
- userdata.img
- ramdisk.img
後面三個是Android鏡像,第一個是系統內核,一部分編譯Android的人就是希望將自己編譯的鏡像文件刷到自己的機器上,重新編譯部分SDK 或者添加自己定製的應用,重新打包system.img來滿足自己的需求