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/
	

  

posted @ 2019-01-30 11:11  戴帽的和尚  阅读(511)  评论(0)    收藏  举报