安卓从入门到进阶第一篇(环境搭建)
“轉發,助力一波!”
1.1?系統配置
1.1.1 開發環境
我們平時使用的電腦環境,基本都是Windows操作系統,為了開發Android去將電腦裝成Linux系統,顯而易見不太友好,于是市面上便有公司開發出來模擬器,可以模擬一個硬件環境,我們在上面安裝Linux系統,來模擬出來一個開發環境。這里我是在Windows 7 64位操作系統,內存為8G(后續需要加大內存),CPU為AMD八核處理器,頻率3.30GHZ,具體如下圖所示:
1.1.2?VMware Workstation
我們這里選擇VMware Workstation 12 PRO版本,從網絡下載此版本,按照提示一步步安裝即可。安裝應用,我們時刻記得,盡量安裝在純英文的路徑下,防止有些應用出現未知錯誤。
1.1.3 Ubuntu 16.04
1.1.3.1 下載鏡像
我們這里選擇Android開發經典的Linux系統Ubuntu,?Ubuntu以其友好的桌面系統,以及軟件包依賴集成,使得我們使用起來非常方便,這里我們選擇Ubuntu 16.04來進行開發。
從官網http://releases.ubuntu.com/?找到Ubuntu 16.04.5 LTS (Xenial Xerus)
擊進入下載頁面,我們這里選擇64-bit PC (AMD64) desktop image進行下載。
1.1.3.2 安裝鏡像
打開VMware Workstation,選擇創建新的虛擬機,出來向導界面。
我們點擊下一步,選擇安裝程序光盤鏡像文件,點擊瀏覽,選擇下載的Ubuntu 16.04鏡像,點擊下一步。
后填寫全名,用戶名,密碼以及確認密碼信息,點擊下一步。
給虛擬機起個名稱,選擇保存虛擬機的路徑,此路徑對應的磁盤空間,必須充足,至少有200G的空閑空間。確定好后,點擊下一步。
填寫需要的硬盤大小,我們這里填寫300G。按照當前Android的代碼大小以及編譯過程所需的硬盤空間,建議200G以上,這里選擇300G。如果在開發過程中發現空間不夠,檢索Vm擴容,同時配合使用gparted工具進行操作即可。
點擊下一步,確定后進入安裝系統中。?我們只需要保持網路暢通,等待最終完成即可。在安裝完后,我們關閉下虛擬機,設置下虛擬的參數,具體為:
右鍵Ubuntu 16.04,選擇設置,進入設置主界面。
我們將內存改到6G多,太小了編譯中會出現莫名其妙的錯誤,無法編譯。修改完后在進到處理器的界面,選擇對應的設置下。
我們這里改成8核,提高效率。這里的核數跟你當前的硬件CPU核數關聯,這里我的CPU是8核的,所以這里配置為8。
1.1.3小結
這一小節,我們通過安裝VMware Workstation虛擬機,在虛擬機上安裝一個Ubuntu 16.04系統,以此來作為我們Android的開發環境。既然環境已經搭建好了,讓我們來下載Android源碼。
1.2?源碼下載
上一節我們完成了環境搭建,那么這一節就來抓取Android源碼。
1.2.1下載repo
因為我們的Android代碼比較龐大,所以代碼是需要進行有效的管理。市面上主要的代碼管理方式有SVN和Git,SVN屬于集中式倉庫管理,當一個人提交的時候,其他人是不能提交,在小的團隊里面,SVN可以滿足要求,但是當同一時間提交人數增加時,由于SVN的集中式管理模式,導致一人提交,其他人都會失敗,反復提交影響工作效率。記得當時公司使用SVN,在合并代碼后進行提交,都要在深夜或者周末,沒人的時候進行操作,避免沖突。為了解決集中管理的方式,Git的分布式管理產生。Git使用差分方式,分布式存儲的模式進行開發,避免了SVN的問題。Android源碼目錄較多,如果用一個Git倉庫管理,顯得笨重不夠靈活,于是便建立了多個Git倉,而為了方便管理這些Git倉庫,出現了repo工具,repo工具將Git倉庫集中起來,進行統一管理,因此我們需要進行下載repo。
創建放置repo的路徑,設置環境變量
mkdir ~/bin PATH=~/bin:$PATH
首先讓我們安裝curl工具,此工具用來下載repo,我們使用
sudo apt-get install curl 安裝。
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o ~/bin/repo ? #使用tuna的git-repo鏡像
下載完后,將其配置成可執行。
chmod a+x ~/bin/repo
1.2.2 抓取代碼
首先我們安裝git
sudo apt-get install git
并且配置git的全局信息
git config --global user.name “codegg” git config --global user.email codegg@home.com
這兩個信息會在你抓取代碼,以及提交代碼的時候使用。
由于國內訪問Google的速度過慢,我們使用國內的鏡像代碼,而這里我們使用清華鏡像的代碼,于是輸入如下命令,進行下載。
wget -c?https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar
下載完后,將其解壓開來
tar vxf aosp-latest.tar
解壓完成,我們進入目錄cd aosp
現在我們使用repo進行同步,首先使用
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-9.0.0_r3
進行初始化,-b參數來選擇對應的Android版本,我們這里選擇android-9.0.0_r3,如果想選擇別的版本,在
https://source.android.com/source/build-numbers.html#source-code-tags-and-builds中選擇對應的版本,替換-b參數后的內容即可。
初始化完成后,我們使用repo sync 更新代碼,此過程比較漫長,可以稍微打個盹去了。
1.2.3 小結
通過這一章節,我們知道了Android源碼使用的是Git分布式管理方式,同時Git整個是由repo進行管理。通過repo,將對應Android版本的代碼抓取下來。既然已經下載下來代碼,那么我們先編譯版本出來看看。
1.3?編譯環境
1.3.1 配置軟件包源
我們需要安裝編譯中使用的軟件,而如果用國外的源去下載,就太慢了,于是我們使用國內清華地址進行下載源。具體操作為:
cd /etc/apt/
sudo gedit sources.list
將下面這些信息配置上,同時記得將之前的備份,防止出錯。
默認注釋了源碼鏡像以提高 apt update 速度,如有需要可自行取消注釋
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
預發布軟件源,不建議啟用
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
1.3.2 安裝軟件包
輸入如下命令,進行安裝即可。
sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386
sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g+±multilib
sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev
sudo apt-get install git-core gnupg flex bison gperf
sudo apt-get install zip curl zlib1g-dev gcc-multilib g+±multilib
sudo apt-get install libc6-dev-i386
sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev
sudo apt-get install lib32z-dev ccache
sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4
sudo apt-get install libssl-dev
sudo apt-get install aptitude
1.3.3 編譯
編譯時記得我們的虛擬機必須配置很大的內存,這里我使用7.5G編譯通過。盡量將自己的電腦升級到12G以上內存。
使用source ./build/envsetup.sh命令,將當前工程下的項目檢索出來,同時生成一些簡單命令,以供后續使用。輸入命令后的界面如下:
然后輸入lunch
我們這里選擇2,arm64的eng版本。
然后我們輸入
make -j4 | tee build.log
便開始漫長的編譯過程,直到完成。模擬器編譯很慢,只能慢慢等著,當編譯完成后,會顯示編譯100%,完成。
然后我們輸入emulator啟動模擬器,運行起來的效果會是如下:
1.3.4 小結
這一節完成源碼的編譯,以及模擬器的啟動,讓我們將整個的編譯流程順了下來。小插曲,模擬器啟動過程一直出現異常,經過幾十分鐘后,能到桌面,但是沒法使用,于是后面的講解會通過另一種方式來展示。本來計劃的是可以一路在源碼中修改編譯,現在看來這個方式不行。當然,如果有人知道Android 9源碼編譯出來的img,在烏班圖下模擬器不能正常運行的原因,歡迎交流。如果你的電腦順利運行起來,也請告訴我下電腦配置。
下一節會來講解源碼各個目錄的含義,以及我們常用的目錄,同時編譯出來的out目錄下,都有什么內容,做到全面的講解。這里不僅是理論,重要的是實戰。這里會少講代碼,盡量讓你手把手的實戰,跟蹤流程。
后續的課程主要講解內容為
操作系統原理簡介
安卓啟動流程 系統框架 APK運行機制 文件系統 RECOVERY代碼 View顯示框架 虛擬機簡單講解 HOOK原理剖析 JNI實現原理 調試一切 破解反編譯
歡迎大家加入星球,一起學習!
不懼風霜
大話Android安全攻防
總結
以上是生活随笔為你收集整理的安卓从入门到进阶第一篇(环境搭建)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【办公软件有哪些】万彩办公大师教程丨PD
- 下一篇: Win10安装YOLOv3.0