AOSP编译/代码管理

此文章主要记录git/gerrit配置;MTK2601 AOSP Android5.1的编译以及应用开发。

1、git/Gerrit:

vim ~/.gitconfig

[User]

email =【你的邮箱,通常是公司企业邮箱】

name = 【gerrit服务器账户名】

[color]

ui = auto

diff = auto

[core]

editor = vim

# 说明:review的配置和代码树的使用有关联,所以一定保证正确

[review "Gerrit服务器地址,例如110.110.110.110:9090"]

username =【Gerrit账户名】

#然后ssh-keygen生成的publickey复制到gerrit服务器

#next:

vim   ~/.ssh/config

Host 【gerrit服务器IP】

KexAlgorithms +diffie-hellman-group1-sha1

Port 29418

User 【Gerrit账户名】

2、repo以及代码树编译:

repo文件根据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环境到jdk7.

其次,安装依赖:

---------------------------------------------------------------------------------------------------------------

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

为了提高编译效率,设置编译器高速缓存:

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发现问题或者测试出现问题:

Cherry Pick到本地,gerrit上有命令可以直接复制使用;

修改后git commit --amend

repo upload .

3)导入aosp所有代码到Android Studio:

前提是代码树已经build成功;在代码树根目录下执行:

mmm development/tools/idegen/      #这行命令的意思是编译idegen这个模块项目,然后生成idegen.jar文件

development/tools/idegen/idegen.sh    #这行命令的意思是在根目录生成对应的android.ipr、android.iml IEDA工程配置文件

有了如上的这些操作以后,我们打开Android Studio,然后选择打开一个现有的Android Studio项目,然后选择打开源码根目录下的android.ipr文件

4)编写Android.mk文件

make file比较复杂无法一一详细说明,可以查阅其他资料;Android.mk编写完成后,在对应目录下执行mm -B即可模块编译。

配合第(5)步的说明即可轻松开发app

5)系统工程无法在AS Build 通过,但是可以链接文件到AS:

使用 ln -s 把文件链接到Android  Studio工程目录下(model/src/main/java等目录)

最后就是adb常用命令,比较多就不写了。

6)aosp下查找文件内容常用命令

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容