android 4.4.4源码下载_编译_nexus5刷机_内核编译_驱动helloworld_framework修改
--------1over(裸机+系统)--------
vbox挂载共享
sudo mount -t vboxsf D /mnt/D/
sudo apt-get update
sudo apt-get install git gnupg flex bison gperf build-essential \
zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
libx11-dev:i386 libreadline6-dev:i386 \
libgl1-mesa-dev g++-multilib mingw32 tofrodos \
python-markdown libxml2-utils xsltproc zlib1g-dev:i386
--------2over(android需要的环境+jdk6)--------
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x repo
export PATH=/home/fbb/bin:$PATH
git config --global user.email "fbb@fbb.com"
git config --global user.name "fbb"
KTU84P android-4.4.4_r1 KitKat Nexus 5、Nexus 7 (flo/deb/grouper/tilapia)、Nexus 4、Nexus 10
repo init -u https://android.googlesource.com/platform/manifest -b android-4.4.4_r1
repo sync
--------3over(源码下载over)--------
下载nexus 5 的硬件驱动:
关键字:编译android 刷到nexus 5
https://developers.google.com/android/drivers
Nexus 5 (GSM/LTE) ("hammerhead")
Nexus 5 (GSM/LTE) binaries for Android 4.4.4 (KTU84P)
/*
Nexus 5 (GSM/LTE) binaries for Android 4.4.4 (KTU84P)
Hardware Component Company Download SHA-256 Checksum
NFC, Bluetooth, Wi-Fi Broadcom Link f258605e24c9c3d4e78c9af934f3516a4f8d3410da697005fad42cad36c5ed5c
Camera, Sensors, Audio LG Link fc72704e0fba9c51c6505ae009e474570de27ee8565d51483368d8dae6c0f44e
Graphics, GSM, Camera, GPS, Sensors, Media, DSP, USB Qualcomm Link 8603d85ad511346d65c27c3747919da280523b86d55a39dfce657a4ca1b0685b
*/
过程:
根据链接下载 三个 tgz的文件,
解压后是sh文件放到源码的跟目录,
执行sh文件,会在源码根目录下生存vendor文件夹。
命令:
mkdir drivers
curl https://dl.google.com/dl/android/aosp/broadcom-hammerhead-ktu84p-5a5bf60e.tgz > ~/drivers/broadcom-hammerhead-ktu84p-5a5bf60e.tgz
curl https://dl.google.com/dl/android/aosp/lge-hammerhead-ktu84p-49419c39.tgz > ~/drivers/lge-hammerhead-ktu84p-49419c39.tgz
curl https://dl.google.com/dl/android/aosp/qcom-hammerhead-ktu84p-f159eadf.tgz > ~/drivers/qcom-hammerhead-ktu84p-f159eadf.tgz
tar -zxf broadcom-hammerhead-ktu84p-5a5bf60e.tgz
tar -zxf lge-hammerhead-ktu84p-49419c39.tgz
tar -zxf qcom-hammerhead-ktu84p-f159eadf.tgz
cp ~/drivers/extract-broadcom-hammerhead.sh ~/android-4.4.4_r1/extract-broadcom-hammerhead.sh
cp ~/drivers/extract-lge-hammerhead.sh ~/android-4.4.4_r1/extract-lge-hammerhead.sh
cp ~/drivers/extract-qcom-hammerhead.sh ~/android-4.4.4_r1/extract-qcom-hammerhead.sh
./extract-broadcom-hammerhead.sh
./extract-lge-hammerhead.sh
./extract-qcom-hammerhead.sh
内核:
参考:
参考网址:http://blog.csdn.net/qq1084283172/article/details/54880488
官网:https://source.android.com/source/building-kernels
内核配置菜单的支持库:
sudo apt-get install lib32ncurses5-dev
内核编译:
cd android-4.4.4_r1/
mkdir kernel
cd kernel/
git clone https://android.googlesource.com/kernel/msm.git
git branch -a
git checkout origin/android-msm-hammerhead-3.4-kk-r1
export PATH=/home/fbb/android-4.4.4_r1/prebuilts/gcc/linux-x86/arm/arm-eabi-4.7/bin:$PATH
export CROSS_COMPILE=/home/fbb/android-4.4.4_r1/prebuilts/gcc/linux-x86/arm/arm-eabi-4.7/bin/arm-eabi-
export ARCH=arm
export SUBARCH=arm
make distclean //内核编译清空
make hammerhead_defconfig
make menuconfig //调用配置的菜单。enable loadable module suppot (启动模块支持,驱动模块内部的一些设置)
make -j16
编译后的内核文件路径:arch/arm/boot/zImage-dtb
查看内核版本命令:
cd arch/arm/boot/
dd if=zImage-dtb bs=1 skip=$(LC_ALL=C od -Ad -x -w2 zImage-dtb | grep 8b1f | cut -d ' ' -f1 | head -1) | zgrep -a 'Linux version'
编译完后的内核版本:
Linux version 3.4.0-g9eb14ba (fbb@fbb-pc) (gcc version 4.7 (GCC) ) #1 SMP PREEMPT Mon Aug 14 11:29:51 CST 2017
新编译的内核替换原来的内核:
cp /home/fbb/android-4.4.4_r1/device/lge/hammerhead-kernel/zImage-dtb /home/fbb/test/zImage-dtb //原来的内核备份
cp /home/fbb/android-4.4.4_r1/kernel/msm/arch/arm/boot/zImage-dtb /home/fbb/android-4.4.4_r1/device/lge/hammerhead-kernel/zImage-dtb
系统自带的内核版本:
Linux version 3.4.0-gd59db4e (android-build@vpbs1.mtv.corp.google.com)
(gcc version 4.7 (GCC) ) #1 SMP PREEMPT Mon Mar 17 15:16:36 PDT 2014
Nexus 5内核文件路径:device/lge/hammerhead-kernel
此处有两种方法:
1,把新编译的内核替换为下载下来的内核,然后重新对android源码编译。
2,用工具重新置编辑bootimg,然后只刷boot.img.(这种方法是,android源码已经编译完了,后编译的内核。建议不要用这种,亲测的结果是,内核一会是之前的版本,一会是新编译的版本)
编译android源码
参考:
android 源码官网:https://source.android.com/source/building
参考网址:http://blog.csdn.net/qq1084283172/article/details/54562606
清理:为了确保新安装的二进制文件在解压后会被适当考虑在内,请使用以下命令删除所有以前编译操作的已有输出:
make clobber
设置环境:使用 envsetup.sh 脚本初始化环境。请注意,将 source 替换成 .(一个点)可以省去一些字符,这种简写形式在文档中更为常用。
source build/envsetup.sh
或
. build/envsetup.sh
选择目标:
lunch
输入:9
选择的:
9. aosp_hammerhead-userdebug
编译代码:
make -j16
刷机
参考(网页下面写了一些android的驱动的配置):http://blog.csdn.net/qq1084283172/article/details/54562606
前提:先配置usb的配置文件:
sudo gedit /etc/udev/rules.d/51-android.rules
sudo sed -i 's/username/fbb/g' /etc/udev/rules.d/51-android.rules
进入刷机模式的命令:
adb reboot bootloader
查看usb:
lsusb
真机刷机:
fastboot -w flashall
--------4over(源码编译over,内核用的google编译好的)--------
----5over(内核编译完成,内核替换了,重新编译android源码)----
hal 测试:
source build/envsetup.sh
lunch
9
mmm device/generic/goldfish/gps/
编译内核的环境:
export PATH=/home/fbb/android-4.4.4_r1/prebuilts/gcc/linux-x86/arm/arm-eabi-4.7/bin:$PATH
export CROSS_COMPILE=/home/fbb/android-4.4.4_r1/prebuilts/gcc/linux-x86/arm/arm-eabi-4.7/bin/arm-eabi-
export ARCH=arm
export SUBARCH=arm
hello.c
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
MODULE_LICENSE ("GPL");
__init int hello_init(void)
{
printk (KERN_INFO "Hello world\n");
return 0;
}
__init void hello_exit(void)
{
printk (KERN_INFO "Goodbye world\n");
}
module_init(hello_init);
module_exit(hello_exit);
Makefile
KERNELDIR ?= /home/fbb/android-4.4.4_r1/kernel/msm
obj-m := hello.o
all:
make ARCH=arm -C $(KERNELDIR) M=$(PWD) modules
参考2:
obj-m := test.o
KERN := /home/micky/soft/kernel/goldfish/
PWD :=$(shell pwd)
ARCH=arm
CROSS_COMPILE=arm-eabi-
CC=$(CROSS_COMPILE)gcc
LD=$(CROSS_COMPILE)ld
all:
$(MAKE) -C $(KERN) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) M=$(PWD) modules
adb push *.ko /data/local/
clean:
-rm -rf *.o *.ko *.mod.c .*.cmd *.order *.symvers .tmpversions
模拟器内核下载:
git clone https://android.googlesource.com/kernel/goldfish.git
tar -zcf goldfish.tar.gz goldfish
git branch -a
git checkout remotes/origin/android-goldfish-3.4
framework
1,
source build/envsetup.sh
或
. build/envsetup.sh
2,选择目标:
lunch
输入:9
选择的:
9. aosp_hammerhead-userdebug
3,mmm frameworks/base/
cp /home/fbb/android-4.4.4_r1/out/target/product/hammerhead/system/framework/framework2.jar /mnt/D/
cp /home/fbb/android-4.4.4_r1/out/target/product/hammerhead/system/framework/framework.jar /mnt/D/
cp /home/fbb/android-4.4.4_r1/out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar /mnt/D/