此文章主要記錄git/gerrit配置窿撬;MTK2601 AOSP Android5.1的編譯以及應(yīng)用開發(fā)。
1叁扫、git/Gerrit:
vim ~/.gitconfig
[User]
email =【你的郵箱歉糜,通常是公司企業(yè)郵箱】
name = 【gerrit服務(wù)器賬戶名】
[color]
ui = auto
diff = auto
[core]
editor = vim
# 說明:review的配置和代碼樹的使用有關(guān)聯(lián),所以一定保證正確
[review "Gerrit服務(wù)器地址幌蚊,例如110.110.110.110:9090"]
username =【Gerrit賬戶名】
#然后ssh-keygen生成的publickey復(fù)制到gerrit服務(wù)器
#next:
vim?? ~/.ssh/config
Host 【gerrit服務(wù)器IP】
KexAlgorithms +diffie-hellman-group1-sha1
Port 29418
User 【Gerrit賬戶名】
2、repo以及代碼樹編譯:
repo文件根據(jù)Google官方提供的大可自己修改溃卡。
從頭獲取整個代碼樹:
repo init -u ssh://IP地址:29418/repo/manifests -b android_watch_master
repo sync
等待代碼下載完畢溢豆。
編譯Android源碼:
1)Android5.1需要安裝openjdk7:
sudo add-apt-repositoryppa:openjdk-r/ppa
sudo apt-getupdate
sudo apt-getinstall openjdk-7-jdk
切換Java環(huán)境到j(luò)dk7.
其次,安裝依賴:
---------------------------------------------------------------------------------------------------------------
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 build-essential
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
---------------------------------------------------------------------------------------------------------------
2)在 .bashrc文件末尾添加:export USE_CCACHE = 1
為了提高編譯效率瘸羡,設(shè)置編譯器高速緩存:
prebuilts/misc/linux-x86/ccache/ccache-M50G
編譯步驟:
... 自己的配置 ...
source build/envstep.sh
lunch
make -j8
... 編譯成功 ...
3)如果有一下錯誤:
{
/home/elinksoft/code/8163/alps/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.6/bin/../lib/gcc/x86_64-linux/4.6/../../../../x86_64-linux/bin/ld: error: out/host/linux-x86/obj32/STATIC_LIBRARIES/libcompiler_rt_intermediates/libcompiler_rt.a(eprintf.o): unsupported reloc 43 against global symbol stderr
external/compiler-rt/lib/builtins/eprintf.c:32: error: unsupported reloc 43
collect2: ld returned 1 exit status
build/core/host_shared_library_internal.mk:44: recipe for target 'out/host/linux-x86/obj32/lib/libcompiler_rt.so' failed
make: *** [out/host/linux-x86/obj32/lib/libcompiler_rt.so] Error 1
make: *** Waiting for unfinished jobs....
host C++: libnativehelper_32 <= libnativehelper/JNIHelp.cpp
make: *** wait: No child processes.? Stop.
}
解決:
{
in file /art/build/Android.common_build.mk, find out:
# Host.
ART_HOST_CLANG := false
ifneq ($(WITHOUT_HOST_CLANG),true)
# By default, host builds use clang for better warnings.
ART_HOST_CLANG := true
endif
change to :
# Host.
ART_HOST_CLANG := false
ifeq ($(WITHOUT_HOST_CLANG),false)
# By default, host builds use clang for better warnings.
ART_HOST_CLANG := true
endif
If it still not works,try this in your android root path:
cp /usr/bin/ld.gold prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.6/x86_64-linux/bin/ld
}
4漩仙、System App
1)常用命令
croot、jgrep、cgrep讯赏、resgrep
mm -B
repo sync . -cj4
repo upload .
repo branch
git reset
repo abandon 0722
repo sync . -c
repo start 0722 --all
2)提交代碼樹review發(fā)現(xiàn)問題或者測試出現(xiàn)問題:
Cherry Pick到本地垮兑,gerrit上有命令可以直接復(fù)制使用;
修改后git commit --amend
repo upload .
3)導(dǎo)入aosp所有代碼到Android Studio:
前提是代碼樹已經(jīng)build成功漱挎;在代碼樹根目錄下執(zhí)行:
mmm development/tools/idegen/????? #這行命令的意思是編譯idegen這個模塊項目,然后生成idegen.jar文件
development/tools/idegen/idegen.sh??? #這行命令的意思是在根目錄生成對應(yīng)的android.ipr雀哨、android.iml IEDA工程配置文件
有了如上的這些操作以后磕谅,我們打開Android Studio,然后選擇打開一個現(xiàn)有的Android Studio項目雾棺,然后選擇打開源碼根目錄下的android.ipr文件
4)編寫Android.mk文件
make file比較復(fù)雜無法一一詳細(xì)說明膊夹,可以查閱其他資料;Android.mk編寫完成后捌浩,在對應(yīng)目錄下執(zhí)行mm -B即可模塊編譯放刨。
配合第(5)步的說明即可輕松開發(fā)app
5)系統(tǒng)工程無法在AS Build 通過,但是可以鏈接文件到AS:
使用 ln -s 把文件鏈接到Android? Studio工程目錄下(model/src/main/java等目錄)
最后就是adb常用命令尸饺,比較多就不寫了进统。
6)aosp下查找文件內(nèi)容常用命令
mv * .[^.]* repo_root/
grep BOOT_COMPLETED . -rsn|grep -v xml|grep -v txt|grep -v html
find -name? "filename"
find . -name 'gradle-wrapper.properties' -exec grep "bin" {} +;
sed -i s/MySystemService/System/g `grep MySystemService -rl ./`
adb ?shell ?pm list ?packages;adb shell ?pm path+ 包名浪听,例如:adb shell pm path com.cmsz.account螟碎;adb pull+安裝包路徑?
備注:博客收藏http://blog.csdn.net/wdaming1986