Android开发 环境搭建(ubuntu)
通過(guò)本節(jié)實(shí)現(xiàn)Android開發(fā)的環(huán)境搭建,主要內(nèi)容包括:
(1)Linux系統(tǒng)安裝。
(2)開發(fā)工具安裝。
(3)刷機(jī)。
2003年10月,Andy Rubin等人創(chuàng)建Android公司,并組建Android團(tuán)隊(duì)。
2005年8月17日,Google低調(diào)收購(gòu)了成立僅22個(gè)月的高科技企業(yè)Android及其團(tuán)隊(duì)。安迪魯賓成為Google公司工程部副總裁,繼續(xù)負(fù)責(zé)Android項(xiàng)目。
2007年11月5日,谷歌公司正式向外界展示了這款名為Android的操作系統(tǒng),并且在這天谷歌宣布建立一個(gè)全球性的聯(lián)盟組織,該組織由34家手機(jī)制造商、軟件開發(fā)商、電信運(yùn)營(yíng)商以及芯片制造商共同組成,并與84家硬件制造商、軟件開發(fā)商及電信營(yíng)運(yùn)商組成開放手持設(shè)備聯(lián)盟(Open Handset Alliance)來(lái)共同研發(fā)改良Android系統(tǒng),這一聯(lián)盟將支持谷歌發(fā)布的手機(jī)操作系統(tǒng)以及應(yīng)用軟件,Google以Apache免費(fèi)開源許可證的授權(quán)方式,發(fā)布了Android的源代碼。
本文主要參考文檔: 1-工作環(huán)境搭建指南;2-軟件編譯命令;ubuntu16.04開發(fā)環(huán)境搭建;AOSP(一)Ubuntu20.10編譯AOSP。
搭建步驟
一、安裝Ubuntu系統(tǒng)
為什么要在Linux搭建開發(fā)環(huán)境呢?從直觀來(lái)說(shuō),Android虛擬機(jī)在Linux下運(yùn)行速度更快,而且性能更穩(wěn)定。
我安裝的Linux環(huán)境是kubuntu-20.04.20-desktop-amd64.iso。
Google 會(huì)定期在 Ubuntu LTS (14.04) 和 Debian 測(cè)試版本中對(duì) Android 編譯系統(tǒng)進(jìn)行內(nèi)部測(cè)試。我們只要使用Ubuntu 14.04 以后的系統(tǒng)即可。
采用U盤啟動(dòng)安裝kubuntu系統(tǒng):
(1)制作啟動(dòng)盤:Windows可以使用UltraISO或者Rufus,Linux可以使用DD命令,另外還推薦開源多平臺(tái)的啟動(dòng)盤制作工具:ROSA。
(2)啟動(dòng)盤制作完成之后,開機(jī)按F12選擇從U盤啟動(dòng)進(jìn)入系統(tǒng)安裝界面就可以開始安裝了。
(3)推薦在安裝時(shí)自定義分區(qū)方案,將/home分區(qū)從/分區(qū)中獨(dú)立出來(lái),這樣如果系統(tǒng)出現(xiàn)問(wèn)題需要重裝,就不會(huì)影響日常數(shù)據(jù)。以下是基于1TB 硬盤的分區(qū)方案。
| / | 30G | ext4 | 根分區(qū)(安裝系統(tǒng)和軟件) |
| swap | 16G | swap | 緩存分區(qū)(物理內(nèi)存用盡后會(huì)使用此分區(qū)當(dāng)做虛擬內(nèi)存使用,建議掛載到固態(tài)硬盤) |
| /opt | 15G | ? | ? |
| /efi | 512MB | fat32 | efi引導(dǎo)分區(qū) (如果BIOS設(shè)置的UEFI引導(dǎo),則必須設(shè)置efi分區(qū)) |
| /home | 剩余空間 | ext4 | 用戶目錄(存儲(chǔ)日常用戶數(shù)據(jù),也是我們常常操作的分區(qū)) |
由于此步驟為我?guī)煾祹椭僮髦匮bkubuntu系統(tǒng),所以略過(guò)此步驟。
kubuntu安裝后還需要做一些配置才能愉快的使用,包括添加軟件源(更換為國(guó)內(nèi)的軟件源)、安裝中文輸入法、git等等。
1.添加軟件源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup #備份kubuntu默認(rèn)的源地址 kate /etc/apt/sources.list ?#Ubuntu中的sudo gedit指令在kubuntu中為katekate后打開配置文件,在文件開頭添加下面的阿里云的軟件源。我未進(jìn)行更改軟件源。
deb http://mirrors.aliyun.com/ubuntu/ quantal main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ quantal-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ quantal-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ quantal-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ quantal-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ quantal main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ quantal-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ quantal-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ quantal-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ quantal-backports main restricted universe multiverseupdate更新軟件列表,upgrade更新軟件
sudo apt-get update sudo apt-get upgrade2.安裝中文輸入法IBus拼音
sudo apt-get install ibus-pinyin ibus-setup輸入法的配置界面就會(huì)彈出,IBus Preference設(shè)置被打開。我們?cè)贗nput Method選項(xiàng)卡中,選擇自己喜歡的輸入方式,并配置自己喜歡的快捷鍵即可,通常情況下,IBus圖標(biāo)(一個(gè)小鍵盤)會(huì)出現(xiàn)在桌面右上角的任務(wù)欄中。有時(shí)候這個(gè)圖標(biāo)會(huì)自行消失,可使用命令ibus-daemon -drx,找回消失的IBus圖標(biāo)。
3.安裝git
git是程序員必備軟件。
sudo apt-get install git git config --global user.name yeling ? #設(shè)置git用戶名 git config --global user.email yeling@xxx.com.cn ?#設(shè)置git郵箱 ssh-keygen -t rsa #生成密鑰用于git驗(yàn)證,生成出的文件放到 ~/.ssh目錄下 #如果過(guò)去有密鑰,重裝電腦之前記得備份一下~/.ssh。新系統(tǒng)安裝完成后不用生成密鑰,直接把原有的~/.ssh的內(nèi)容復(fù)制到~/.ssh就可以了4.安裝配置ccache
sudo apt-get install ccache ccache -M 100G #配置ccache大小 ccache -S #檢查容量是否配置成功5.bashrc的易用性配置
.bashrc這個(gè)文件主要保存?zhèn)€人的一些個(gè)性化設(shè)置,如命令別名、路徑等。也即在同一個(gè)服務(wù)器上,只對(duì)某個(gè)用戶的個(gè)性化設(shè)置相關(guān)。~/bashrc:為每一個(gè)運(yùn)行bash shell的用戶執(zhí)行此文件.當(dāng)bash shell被打開時(shí),該文件被讀取。
kate ~/.bashrc #打開.bashrc source ~/.bashrc #修改完,保存關(guān)閉后,需執(zhí)行此命令,立即生效.bashrc有一些常用的bashrc配置可以提供我們的工作效率,以下功能,按需將對(duì)應(yīng)的代碼添加到~/.bashrc末尾,編輯完記得保存。
(1)客制化終端命令提示符(顯示git分支,自定義顏色顯示方式等)
#bash style 常用的客制化style 末尾添加 export PS1='\[\033[1;32m\]\u@\h \[\033[1;34m\]\w\[\033[1;36m\]$(__git_ps1)\[\033[1;37m\]\n$\[\033[0m\] ' #按如上配置,顯示的效果如下: link@NEON ~/project/complieCode/q/alps (dev_tecno_RC6) $ sudo apt update(2)添加歷史命令補(bǔ)全(終端的上下鍵翻閱歷史命令時(shí)可以按起始字符串智能匹配)
#bash history if [[ $- =~ i ]]; thenbind '"\e[A": history-search-backward'bind '"\e[B": history-search-forward' fi(3)添加編譯"mk"命令的項(xiàng)目名稱補(bǔ)全
#mk mk completion function _mk_completion() {local cur prev optsCOMPREPLY=()cur="${COMP_WORDS[COMP_CWORD]}"prev="${COMP_WORDS[COMP_CWORD-1]}" ?if [ -d "$(pwd)/../sagereal/mk/" ] && [ "$prev" != "mm" ];thenopts=`ls $(pwd)/../sagereal/mk/` COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )return 0elsereturn 1fi } complete -o nospace -F _mk_completion -o dirnames ./mk complete -o nospace -F _mk_completion -o dirnames ./mp(4)配置ccache
# 添加如下內(nèi)容配置ccache #ccache export CCACHE_EXEC=/usr/bin/ccache # ccache的執(zhí)行文件,一般都是這個(gè)路徑 export USE_CCACHE=true #開啟ccache export CCACHE_SLOPPINESS=include_file_mtime,time_macros # ccache緩存類型 export CCACHE_DIR=/home/yeling/project/CcacheData # ccache 緩存存放路徑,建議放在固態(tài)硬盤中(需提前建立此目錄) export CACHE_UMASK=002 unset CCACHE_HARDLINK二、安裝開發(fā)工具
很多 Android 開發(fā)者都會(huì)希望編譯 Android 源碼并刷進(jìn)自己的手機(jī)里面,但網(wǎng)上教程很多都僅僅是告訴你 lunch、make 等等,但你手里有一臺(tái)設(shè)備時(shí)卻發(fā)現(xiàn),你編譯出的鏡像由于驅(qū)動(dòng)關(guān)系是不能直接燒進(jìn)手機(jī)的。這里整理了一下,幫助大家可以更好的搭建編譯環(huán)境。
1.AOSP編譯環(huán)境搭建
(1)基于AOSP官方推薦使用Ubuntu 14.04+的版本,官方要求安裝如下庫(kù):
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip我安裝的庫(kù)為:
sudo apt-get install git-core bison g++-multilib git gperf libxml2-utils make zlib1g-dev zip build-essential curl gnupg flex gcc-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev xsltproc unzip libnss-sss libssl-dev git openjdk-8-jdk libusb-dev python-crypto fontconfig //以下為補(bǔ)充 #1安裝python sudo apt-get install python #之前沒安裝編譯不了,顯示沒有命令 #2安裝libncurses5 libncurses6 sudo apt install libncurses5 libncurses6 #編譯時(shí)報(bào)libncurses.so.5不能找到 #3安裝LLVM、libswitch-perl sudo apt install llvm-6.0 sudo apt install clang-6.0 sudo apt install libswitch-perl export LC_ALL=C ? ?#去除本地化設(shè)置 #4安裝Source Insight,神器,可以很方便的搜索,查找源碼中的內(nèi)容(/1)如果需要編譯M平臺(tái)以下還需要安裝以下軟件包(僅支持Ubuntu 14.04):
sudo add-apt-repository ppa:openjdk-r/ppa sudo apt-get update sudo apt-get install openjdk-7-jdk flex mingw32 tofrodos libswitch-perl(2)安裝JDK
sudo apt-get update sudo apt-get install openjdk-8-jdk #要編譯android源碼就必須使用OpenJDK,OpenJDK是OracleJDK的開源精簡(jiǎn)版 #配置JDK環(huán)境變量,由于系統(tǒng)已有,路徑能找到,此時(shí)可不配置 kate ~/.bashrc #文件末尾添加如下內(nèi)容 #set java environment export JAVA_HOME=/usr/bin #自己JDK存放路徑 export CLASS_PATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH=$PATH:$JAVA_HOME/bin(3)安裝Android Studio/SDK
#首先要下載AS的Linux版安裝包 #方式一,下載下來(lái)解壓,然后自動(dòng)安裝SDK即可,前提是有JDK #方式二,輸入以下命令 unzip android-studio-ide-143.2821654-linux.zip #解壓 cd ./android-studio/bin sh studio.h #配置Android SDK tool環(huán)境變量 kate ~/.bashrc #文件末尾添加如下內(nèi)容 # Android Monitor export ANDROID_MONITOR=/home/yeling/Android/Sdk/tools/ ? #SDK存放路徑 export PATH=$ANDROID_MONITOR:$PATH # platform-tools export PATH=$PATH:/home/yeling/Android/Sdk/platform-tools/ ?#SDK存放路徑 # build-tools export PATH=$PATH:/home/yeling/Android/Sdk/platform-tools/29.0.3 ?#SDK存放路徑 # 其他日常工具想在任意終端啟用,也可以按此種方式添加到環(huán)境變量 source ~/.bashrc #更新下~/.bashrc(4)安裝DLoader
#解壓后的文件夾,給DLoader加可執(zhí)行權(quán)限,在sprd_dloader內(nèi)打開bash,輸入命令 chmod +x DLoader ./DLoader ?#確認(rèn)DLoader可用 #配置DLoader環(huán)境變量 export DLPADER=/home/yeling/project/tools/DLoader R1.19.1901 ? #SDK存放路徑 export PATH=$ANDROID_MONITOR:$PATH source ~/.bashrc #更新下~/.bashrc檢查以上軟件是否安裝成功。
三、刷機(jī)
1.編譯整個(gè)系統(tǒng)代碼
AOSP編譯: (1)原生編譯方法:
#1整體編譯:(在項(xiàng)目的alps文件夾里打開bash,執(zhí)行命令) source build/envsetup.sh lunch X ? ? ? ? ?------> (編譯模擬器版本,也可以按需自行選擇) make -jX 2>&1 | tee build.log (如果是N核處理器,X則不大于2N) #make -j24 2>&1 | tee build.log ? ? ? ? ? ? ? ? ? # ? ? 或者make -j24 -k 2>&1 | tee build.log ? ? ? ? ? ? # ? ? ? ? 注:-j24取決于CPU的核數(shù) 查看cpu核數(shù):cat /proc/cpuinfo | grep processor | wc -l ? # ? ? ? ? ? ? 2>&1 表示將標(biāo)準(zhǔn)錯(cuò)誤重定向到標(biāo)準(zhǔn)輸出 ? # ? ? ? ? ? ? tee 表示同時(shí)將log輸出到控制臺(tái)和文件 # ? ? ? ? ? ? "-k": keep going when encounter error #remake的方法:依舊執(zhí)行make -j24 -k 2>&1 | tee rebuild.log #重新new需要先執(zhí)行clean方法 再進(jìn)行new操作 ? #2android模塊編譯: Build android module mmm <directory> #example: mmm frameworks Rebuild android module mmm -B <directory> #example: mmm -B frameworks/base Build android module by name make -j24 <module name> #example: make -j24 libjpeg #建議先使用:mmm -B,若無(wú)文件改變,再使用mmma,再次編譯即可使用mmm -B ? ? *************(建議在進(jìn)行模塊編譯的時(shí)間加入 | tee mmbuild.log,收集模塊編譯時(shí)的log,編譯完成后在log中查找“Install”即可查看編譯生成的文件,(可直接將生成的APK文件夾push到/system/app/(/system/priv-app)對(duì)應(yīng)的APK文件夾中)) #eg:mmm -B framework/base/ | tee mmbuild.log ? ? #在mmbuild.log中查找“Install”關(guān)鍵字可看到如下生成的文件 #Install:out/target/product/sagetel6582_wt_l/system/framework/ext.jar' #Install: out/target/product/sagetel6582_wt_l/system/framework/framework.jar?
2.下載至手機(jī)
#1整個(gè)系統(tǒng)下載:(在編譯后生成的項(xiàng)目文件名文件夾里(SP592XXXX)打開bash,執(zhí)行命令) DLoader -pac BC2c-XXXXX.pac -reset ?#SP592XXXX里的.pac文件,設(shè)置刷機(jī)后重啟 #DLoader -pac BC2c-XXXXX.pac -reset -nvbk false -filebk false #設(shè)置清除原系統(tǒng)備份數(shù)據(jù),版本不同原因 #等待顯示usb檢測(cè),將手機(jī)關(guān)機(jī),按住聲音下鍵,連接usb線至電腦,觀察下載進(jìn)度條,若無(wú)法刷機(jī),需嘗試三個(gè)鍵一起按 #下載成功顯示download success,觀察手機(jī) ? #2android模塊下載:(在alps/out文件夾里打開bash,執(zhí)行命令) adb devices ?#需要檢查能否連接上手機(jī),不能則需手機(jī)調(diào)至開發(fā)者選項(xiàng),USB調(diào)試模式 adb root ? ?#若之前手機(jī)里已安裝里user版本的系統(tǒng),則需要檢查能否下載,不能則需刷機(jī) adb install ./target/product/sp7731e_1h10/product/priv-app/Dialer.apk ?#找到Dialer.apk下載 #下載成功顯示 success,觀察手機(jī) android 10手機(jī)不需關(guān)機(jī)直接插usb線下載結(jié)語(yǔ)
這是葉大靈的Android開發(fā)第一步(圖片資源因操作問(wèn)題丟失了見諒),也是踏入互聯(lián)網(wǎng)行業(yè)的第一步......
覺得有幫助的朋友,不妨點(diǎn)個(gè)贊再走唄! ╰( ̄▽ ̄)╭ ~
總結(jié)
以上是生活随笔為你收集整理的Android开发 环境搭建(ubuntu)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Unity 场景练习02 仿风之旅人
- 下一篇: C语言字母的组合,C语言求字母的全部组合