android源碼編譯效率提升
1. android 編譯伺服器大概需要什麼配置 5
工欲善其事,必先利其器」,要想提高團隊整體的開發效率,盡可能的提前完成開發任務,必須要配備一套配置給力的開發設備。源碼編譯伺服器硬體配置的高低,直接影響著系統固件升級和ROM版本發布的速度和效率。
由於目前Google發布的最新版本的Android系統源碼體積越來越大,因此,越是定製高版本的系統,對編譯伺服器的硬體配置要求就越高,這里根據調研,給出目前Android
6.0及以下版本源碼定製開發的基本配置,供大家參考。
首先進行一波企業級android源碼編譯伺服器的推薦,這類推薦網上絕無僅有,這還是我進行了很久的調研,詢問很多朋友【其中包括不乏6年以上系統開發的大牛,也有之前公司的主管等】,也查了很多資料才挑選出來,提出需求後讓上級審批,目前上一級已經認可比審批,等待領導簽字。給力。
詳細
2. 自己可以編譯安卓源碼嗎
用最新的Ubuntu 16.04,請首先確保自己已經安裝了Git.沒安裝的同學可以通過以下命令進行安裝:
sudo apt-get install git git config –global user.email 「[email protected]」 git config –global user.name 「test」
其中[email protected]為你自己的郵箱.
簡要說明
android源碼編譯的四個流程:1.源碼下載;2.構建編譯環境;3.編譯源碼;4運行.下文也將按照該流程講述.
源碼下載
由於某牆的原因,這里我們採用國內的鏡像源進行下載.
目前,可用的鏡像源一般是科大和清華的,具體使用差不多,這里我選擇清華大學鏡像進行說明.(參考:科大源,清華源)
repo工具下載及安裝
通過執行以下命令實現repo工具的下載和安裝
mkdir ~/binPATH=~/bin:$PATHcurl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repochmod a+x ~/bin/repo
補充說明
這里,我來簡單的介紹下repo工具,我們知道AOSP項目由不同的子項目組成,為了方便進行管理,Google採用Git對AOSP項目進行多倉庫管理.在聊repo工具之前,我先帶你來聊聊多倉庫項目:
我們有個非常龐大的項目Pre,該項目由很多個子項目R1,R2,...Rn等組成,為了方便管理和協同開發,我們為每個子項目創立自己的倉庫,整個項目的結構如下:
這里寫圖片描述
執行完該命令後,再使用make命令繼續編譯.某些情況下,當你執行jack-admin kill-server時可能提示你命令不存在,此時去你去out/host/linux-x86/bin/目錄下會發現不存在jack-admin文件.如果我是你,我就會重新repo sync下,然後從頭來過.
錯誤三:使用emulator時,虛擬機停在黑屏界面,點擊無任何響應.此時,可能是kerner內核問題,解決方法如下:
執行如下命令:
通過使用kernel-qemu-armv7內核 解決模擬器等待黑屏問題.而-partition-size 1024 則是解決警告: system partion siez adjusted to match image file (163 MB >66 MB)
如果你一開始編譯的版本是aosp_arm-eng,使用上述命令仍然不能解決等待黑屏問題時,不妨編譯aosp_arm64-eng試試.
結束吧
到現在為止,你已經了解了整個android編譯的流程.除此之外,我也簡單的說明android源碼的多倉庫管理機制.下面,不妨自己動手嘗試一下.
3. 如何加速Android源碼的編譯
每個編譯單元都會產生一個obj文件,然後所以這些obj文件會被link到一起,並且這個過程很難並行
4. 如何編譯android手機源碼
編譯android系統源碼准備工作:
下載android源碼
在windows上用gitbash ,git clone 下載代碼
在linux上這樣下載
創建~/bin目錄,用來存放repo程序,如下:
$ cd ~
$ mkdir bin
初始化repo
repo是android對git的一個封裝,簡化了一些git的操作。
創建工程目錄:
$ mkdir android
$ cd android
下載repo腳本並使其可執行:
$ curl http://android.git.kernel.org/repo >~/bin/repo
$ chmod a+x ~/bin/repo
repo初始化:
$ repo init -u git://android.git.kernel.org/platform/manifest.git
在此過程中需要輸入名字和email地址。初始化成功後,會顯示:
repo initialized in /android
在~/android下會有一個.repo的隱藏目錄。
5)同步源代碼
$ repo sync
這一步要很久很久。
安裝linux系統,推薦ubuntu,圖形界面
安裝編譯需要的支持包
$ sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev
安裝java6.0
$ sudo apt-get install sun-java6-jdk
配置java環境
sudo gedit ~/.bashrc
末尾加上
JAVA_HOME=/usr/lib/jvm/java-6-sun
JRE_HOME=${JAVA_HOME}/jre
export ANDROID_JAVA_HOME=$JAVA_HOME
export CLASSPATH=.:${JAVA_HOME}/lib:$JRE_HOME/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export JAVA_HOME;
export JRE_HOME;
export CLASSPATH;
HOME_BIN=~/bin/
export PATH=${PATH}:${JAVA_PATH}:${HOME_BIN};
sudo source ~/.bashrc
是環境變數生效
編譯android源碼,並得到~/android/out目錄
$ cd ~/andoird
$ make
這一過程很久。
這就編譯結束了
5. android源碼編譯問題
應該是gcc編譯器的版本問題,cm那幫人總喜歡高版本的,你自己用4.8或4.9交叉編譯試一下
6. android編譯源碼,需要生成odex嗎
不是必須的
你這是編譯源碼,只需要編譯生成apk就行。
odex是從apk中提取的可運行文件,是class.dex通過dex優化過程將其優化生成的。主要的是為了提高程序的運行速度,如果沒有odex的話,系統要從apk包中提取dex再運行。
當然如果你想為了刷完機首次進入系統的時間縮短一些,可以生成odex。
我們當時做手機的時候就是.apk和.odex一起生成的,但是在我們後續系統應用開發的時候都是把odex刪了,因為如果我們新推一個系統apk是,原先的odex會和新的系統apk沖突
7. 如何高效閱讀android反編譯後的源碼
一、工具准備:apktool , dex2jar , jd-gui
二、使用dex2jar + jd-gui 得到apk的java源碼
1.用解壓工具從 apk包中取出 classes.dex 文件
用命令(dex2jar.bat classes.dex)得到一個 jar文件
2.用jd-gui反編譯工具將得到.jar文件反編譯成.java文件
三、使用apktool得到apk的xml文件
用命令(apktool d xxx.apk xxx_xml)反編譯xxx.apk包2.從 xxx_xml 文件夾得到xml文件四、第二步 得到的程序源代碼 和 第三步 得到的xml文件組合下,即可得到完整的apk源碼。
五、應用: 漢化/去廣告,加 values-zh-rCN, values-zh-rTW, values-de, values-fr
1.在步驟三的文件夾xxx_xml/res/ 下, 建文件夾: values-zh-rCN,values-zh-rTW
2.1復制valuesstrings.xml 到 values-zh-rCN 並翻譯.
2.2 去廣告見;
3.重建APK,用命令(apktool b xxx) ,輸出到ABC/dist/out.apk
或命令( apktool b xxx out.apk)
詳細代碼
8. 如何搭建android源碼編譯環境
1
編譯Android 源代碼,Android官方推薦64位的ubuntu系統,最好是10.04的,對於10.10、11.10、12.04版本的ubuntu系統也是可以,但是小編一直習慣使用10.04的,所以幾年來一直沿用至今
請不要使用32位的Ubuntu系統,更不要使用10.04以下的ubuntu系統,不然編譯會出現很多都問題,會浪費更多的時間,有的比較難解決,對於新人來說,還不如重新安裝一個64位的ubuntu系統
下面小編來說說怎麼樣查看當前安裝好的ubuntu系統是多少位的
按照下圖所示的方法打開終端,然後輸入命令並執行 uname -ar,在最後輸出的信息中如果有amd64或者 x86_64 字樣,那麼就說明是64位的系統了,否則就是32位的系統了
END
安裝jdk
1
jdk的安裝,雖然Android官方還是有介紹,現在jdk的安裝已經不支持使用添加源,然後用命令安裝了,只能取java官網下載jdk,然後安裝,然後將jdk的路勁添加到環境變數中,具體的安裝和添加變數的方法,可以查看本文參考資料中的文檔介紹,這里就不過多說明了
另外需說明的是,對於2.3版本以後的Android,需要使用jdk6,即jdk1.6,而不要使用jdk1.7的
2
對於安裝好的jdk,並且添加了環境變數,我們可以輸入並執行命令java -version 來查看jdk版本,若是有類似下面的信息輸入,那麼說明jdk安裝成功了
END
安裝編譯所需的工具
1
對於10.04的系統,我們只需要安裝下面這些軟體工具就可以了,直接復制到終端中,然後回車執行安裝就ok,安裝前保持電腦正常連接網路
sudo apt-get install git-core gnupg flex bison gperf build-essential \
zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \
x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \
libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \
libxml2-utils xsltproc
2
對於10.10的ubuntu系統,需要先安裝下面的工具軟體,直接輸入執行下面的命令就可以安裝:
sudo apt-get install git-core gnupg flex bison gperf build-essential \
zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \
x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \
libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \
libxml2-utils xsltproc
3
之後使用下面的命令做一個軟鏈接文件:
sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so
4
對於11.10的ubuntu系統,需要先安裝下面的工具,輸入並執行下面的命令:
sudo apt-get install git-core gnupg flex bison gperf build-essential \
zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \
x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \
libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \
libxml2-utils xsltproc
5
然後再安裝這個對於11.10系統特別需要的工具
sudo apt-get install libx11-dev:i386
END
設置高速緩存加快編譯速度
設置告訴緩存可以加快我們的編譯速度,對於配置不是很高的電腦,最好是進行這個設置,這樣可以為我們節約很多都時間
先用vi或者gedit軟體打開宿主目錄下的.bashrc文件,然後在文件的最後添加:
export USE_CCACHE=1
之後保存退出,重新登陸系統,使設置生效
在終端中,切換到源碼根目錄中,然後執行下面的命令,設置ccache的大小
prebuilts/misc/linux-x86/ccache/ccache -M 50G
其實ccache就是一個執行文件,後面的-M和50G是傳遞給ccache的參數,表示設置50G的緩存空間,這個大小可以根據我們的時間需要來修改
9. android編譯源碼後怎樣運行
編譯:
1. 初始化:
source build/envsetup.sh
2. 選擇target
lunch
然後選擇aosp_arm
3.
make -j4
等待大概2個小時,就可以順利編譯完成。
模擬器運行
直接運行emulator,會出現如下錯誤:
emulator: ERROR: You did not specify a virtual device name, and the system
directory could not be found.
原因是文件路徑沒有設置,解決辦法添加絕對路徑:
out/host/Linux-x86/bin/emulator -kernel prebuilts/qemu-kernel/arm/kernel-qemu -sysdir out/target/proct/generic/ -system out/target/proct/generic/system.img -ramdisk out/target/proct/generic/ramdisk.img -data out/target/proct/generic/userdata.img -sdcard sdcard.img -scale 0.7 -memory 512 -partition-size 1024
然後運行模擬器