您的位置:首页 > 其它

编译安卓源码

2016-02-19 10:05 369 查看
一.配置环境变量

1.1.sudo apt-get install openjdk-7-jdk //将会安装上jdk

2.安装相关的软件:

sudo apt-get install build-essential make gcc g++ libc6-dev patch texinfo libncurses5-dev git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev build-essential zip curl libncurses5-dev zlib1g-dev valgrind libgtk2.0-0:i386 libpangox-1.0-0:i386 libpangoxft-1.0-0:i386
libidn11:i386 gstreamer0.10-plugins-base:i386 gstreamer0.10-plugins-good:i386 libxml2-utils

3.修改:vim ~/.bashrc

文档末尾添加:unset JAVA_TOOL_OPTIONS

4.修改完成后 source ~/.bashrc

二.下载Android源码

1.开始下载源码,从不同的服务器下载,指令不同。

mkdir work

mkdir android-5.1.1_r1_folio

cd android-5.1.1_r1_folio/

curl http://10.100.207.254:8080/static/repo > ./repo-conn //下载repo脚本到到本地

chmod +x repo-conn //给repo脚本加权限

sudo mv repo-conn /usr/local/bin/

ssh-keygen

cd .ssh/

vi config

ssh conntech

cat id_rsa.pub

ssh conntech

repo-conn init -u conntech:manifest.git -b android-5.1.1_r1_folio

git config --global user.email "renss@litsoft.com.cn"

git config --global user.name "renss"

repo-conn init -u conntech:manifest.git -b android-5.1.1_r1_folio

repo-conn sync

三.首次编译整套源码

1.准备

1. source build/envsetup.sh //这样会列出很多include....

2. lunch //会列出很多设备的名称,必须的选一种设备型号才可以编译

3. 14 (代表google的n5手机)//aosp_hammerhead-userdebug

4. make update-api //首先编译api

5. make -j8 //正式开始编译 后面的数字表示使用系统几核进行编译,其实不管数字有多大使用的核数肯定不超过机器的内核数量

备注:首次编译的时间比较长,如果编译一次后,修改后再次编译的话就会快很多

四.配置ADB环境变量

----------start------------(这部分,在同一台电脑上只需要执行一次即可!!!)

1. lsusb //查看usb使用情况 : 18d1:4ee2

2.sudo gedit /etc/udev/rules.d/70-android.rules //新建并且编辑这个文件

SUBSYSTEM=="usb", ATTRS{idVendor}=="230b", ATTRS{idProduct}=="0100",MODE="0666" //写入这句话,nexus所对应的ATTRS为18d1 idProduct对应为4ee1

3. sudo chmod a+rx /etc/udev/rules.d/70-android.rules //设置权限

4.sudo service udev restart //重启udev

5.修改~/.bashrc中的环境变量ANDROID_PRODUCT_OUT为:

export ANDROID_PRODUCT_OUT=~/work/android-5.1.1_r1/out/target/product/hammerhead //注意路劲写adb成自己的真实路径

export PATH=$PATH:~/work/android-5.1.1_r1_folio/out/host/linux-x86/bin

6.source ~/.bashrc

-----------end--------------------

五.刷机

1.source build/envsetup.sh //必须先进入到android源码的目录下面在开始执行此指令

2.lunch

make clean;//清除已经编译过到文件

===============================================================================

root@ThinkPad:~/work/android-5.1.1_r1_folio# ls

abi build development frameworks Makefile pdk system

art cts device hardware ndk prebuilts vendor

bionic dalvik docs libcore out repo-conn

bootable developers external libnativehelper packages sdk

root@ThinkPad:~/work/android-5.1.1_r1_folio# cd out/

root@ThinkPad:~/work/android-5.1.1_r1_folio/out# ls

root@ThinkPad:~/work/android-5.1.1_r1_folio/out# cd ../

root@ThinkPad:~/work/android-5.1.1_r1_folio# ls

abi build development frameworks Makefile pdk system

art cts device hardware ndk prebuilts vendor

bionic dalvik docs libcore out repo-conn

bootable developers external libnativehelper packages sdk

root@ThinkPad:~/work/android-5.1.1_r1_folio# source build/envsetup.sh

==============================================================================

3.选择要刷机的手机对应的编号

4. adb reboot bootloader

5. fastboot flashall -w

result:刷机完成后会显示:

.....

rebooting...

finished. total time: 66.378s

==============================================================

< waiting for device >//找不到usb设备

^C

louisgracia@ThinkPad:~/work/android-5.1.1_r1_folio$ lsusb **

Bus 004 Device 002: ID 8087:8000 Intel Corp.

Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 003 Device 002: ID 8087:8008 Intel Corp.

Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

Bus 001 Device 003: ID 093a:2510 Pixart Imaging, Inc. Optical Mouse

Bus 001 Device 005: ID 04f2:b39a Chicony Electronics Co., Ltd

Bus 001 Device 004: ID 8087:07dc Intel Corp.

Bus 001 Device 060: ID 18d1:4ee0 Google Inc.

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

louisgracia@ThinkPad:~/work/android-5.1.1_r1_folio$ /etc/udev/ //usb相关配置文件

hwdb.d/ rules.d/

louisgracia@ThinkPad:~/work/android-5.1.1_r1_folio$ /etc/udev/rules.d/70-android.rules **

/etc/udev/rules.d/70-android.rules: 行 1: ATTRS{idVendor}==8087,: 未找到命令

louisgracia@ThinkPad:~/work/android-5.1.1_r1_folio$ sudo vim /etc/udev/rules.d/70-android.rules **

[sudo] password for louisgracia:

louisgracia@ThinkPad:~/work/android-5.1.1_r1_folio$ sudo service ud //重启服务

udev udev-finish udisks2

louisgracia@ThinkPad:~/work/android-5.1.1_r1_folio$ sudo service udev restart //重启系统usb相关

louisgracia@ThinkPad:~/work/android-5.1.1_r1_folio$ adb reboot bootloader **

louisgracia@ThinkPad:~/work/android-5.1.1_r1_folio$ fastboot flashall -w**

Creating filesystem with parameters:

Size: 28521246720

Block size: 4096

====================================================================

六.以后单独编译某个模块,使用Push的方式推到手机即可

比如编译SystemUI模块

也要cd folio目录下

1. mmm frameworks/base/packages/SystemUI/ //通常此目录只包含一个模块

2. 编译完生成系统级别的apk,或者jar.

 ####比如:我重新编译生成了framework.jar,它生成的目录在out/target/product/hammerhead/system/framework

并且手机中对应的framework.jar在/system/framework/下面

***就在自己的项目下(我是cplus项目)

1.adb root

2.adb remount

3.adb push out/target/product/hammerhead/system/framework/framework.jar /system/framework/

备注:如果编译的是SystemUI的话,最后terminal中会显示Install:out/target/product/hammerhead/system/priv-app/SystemUI/SystemUI.apk

SystemUI.apk,才是真正要push进手机的。接下来再执行adb push指令即可。

   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: