一.配置环境变量
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. 22 (代表google的n5手机)//aosp_hammerhead-userdebug
4. make update-api //首先编译api
5. make -j8 //正式开始编译 后面的数字表示使用系统几核进行编译,其实不管数字有多大使用的核数肯定不超过机器的内核数量
备注:首次编译的时间比较长,如果编译一次后,修改后再次编译的话就会快很多,编译完成后产看out/target/product/hammerhead(这是我刚才在上面选择的设备型号)/
如果在此目录下,生成了:boot.img,cache.img,recovery.img,system.img,userdata.img等相关文件的话,基本上可以断定编译成功了。
四.配置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
3.选择要刷机的手机对应的编号
4. adb reboot bootloader
5. fastboot flashall -w
result:刷机完成后会显示:
.....
rebooting...
六.以后单独编译某个模块,使用Push的方式推到手机即可(比如编译SystemUI模块)
1. mmm frameworks/base/packages/SystemUI/ //通常此目录只包含一个模块,而且这个模块包含(.mk文件,说明他是可单独编译的)
2. 最后terminal中会显示Install:out/target/product/hammerhead/system/priv-app/SystemUI/SystemUI.apk
接下来需要替换你手机中的SystemUI.apk
3. ***就在自己的项目下(我是cplus项目)
--->1.adb root
--->2.adb remount
--->3.adb push out/target/product/hammerhead/system/priv-app/SystemUI/SystemUI.apk system/priv-app/SystemUI
七.如果编译的是frameworks/base下的整个文件(和第六步差不多)
1. mmm frameworks/base/
2. 最后terminal中会显示Install:out/target/product/hammerhead/system/framework/framework.jar
3. --->1.adb root
--->2.adb remount
--->3.adb push out/target/product/hammerhead/system/framework/framework.jar system/framework
七。如果改变了api的话(比如:修改了PhoneWindManager.java,或者frameworks/base/core等关于系统api的文件)
1.make update-api
2.mmm frameworks/base
3.再push进去
关于Android源码的编译,运行。整体思路就是这样的。可能在以上步骤中,每个人遇到的问题不同(我只是在我电脑上实验成功了这些指令)。大家可以参看下面的博客链接。
http://jileniao.net/linux-android-building.html
http://wenku.baidu.com/link?url=HWBk3p9_fGcs7oYuQ0uSnPsslyxeWGcyiorJUw43bZgLkpMGxqeN3efR3XyI5UKtSSA-bYjnHUk3nGpW_3VBstnI6IgUXF_85yDGO_JaiCy
http://www.cnblogs.com/hoji-real/articles/2144892.html
http://www.cnblogs.com/bluestorm/p/4419135.html
http://blog.csdn.net/luobin1984/article/details/7994671
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. 22 (代表google的n5手机)//aosp_hammerhead-userdebug
4. make update-api //首先编译api
5. make -j8 //正式开始编译 后面的数字表示使用系统几核进行编译,其实不管数字有多大使用的核数肯定不超过机器的内核数量
备注:首次编译的时间比较长,如果编译一次后,修改后再次编译的话就会快很多,编译完成后产看out/target/product/hammerhead(这是我刚才在上面选择的设备型号)/
如果在此目录下,生成了:boot.img,cache.img,recovery.img,system.img,userdata.img等相关文件的话,基本上可以断定编译成功了。
四.配置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
3.选择要刷机的手机对应的编号
4. adb reboot bootloader
5. fastboot flashall -w
result:刷机完成后会显示:
.....
rebooting...
六.以后单独编译某个模块,使用Push的方式推到手机即可(比如编译SystemUI模块)
1. mmm frameworks/base/packages/SystemUI/ //通常此目录只包含一个模块,而且这个模块包含(.mk文件,说明他是可单独编译的)
2. 最后terminal中会显示Install:out/target/product/hammerhead/system/priv-app/SystemUI/SystemUI.apk
接下来需要替换你手机中的SystemUI.apk
3. ***就在自己的项目下(我是cplus项目)
--->1.adb root
--->2.adb remount
--->3.adb push out/target/product/hammerhead/system/priv-app/SystemUI/SystemUI.apk system/priv-app/SystemUI
七.如果编译的是frameworks/base下的整个文件(和第六步差不多)
1. mmm frameworks/base/
2. 最后terminal中会显示Install:out/target/product/hammerhead/system/framework/framework.jar
3. --->1.adb root
--->2.adb remount
--->3.adb push out/target/product/hammerhead/system/framework/framework.jar system/framework
七。如果改变了api的话(比如:修改了PhoneWindManager.java,或者frameworks/base/core等关于系统api的文件)
1.make update-api
2.mmm frameworks/base
3.再push进去
关于Android源码的编译,运行。整体思路就是这样的。可能在以上步骤中,每个人遇到的问题不同(我只是在我电脑上实验成功了这些指令)。大家可以参看下面的博客链接。
http://jileniao.net/linux-android-building.html
http://wenku.baidu.com/link?url=HWBk3p9_fGcs7oYuQ0uSnPsslyxeWGcyiorJUw43bZgLkpMGxqeN3efR3XyI5UKtSSA-bYjnHUk3nGpW_3VBstnI6IgUXF_85yDGO_JaiCy
http://www.cnblogs.com/hoji-real/articles/2144892.html
http://www.cnblogs.com/bluestorm/p/4419135.html
http://blog.csdn.net/luobin1984/article/details/7994671