今天心血来潮,想把之前做的开发板环境配置以及编译的东西重新整理一下,毕竟最近在搞开发,所以有必要温故而知新。
以下是我整个Android-5.0的工程目录列表:
其中build_4412_img.sh、copyimage_to_window_system.sh是我自己写的快速编译拷贝脚本。
book@book-virtual-machine:/work/android-5.0.2$ ls abi build_4412_img.sh development gen-img.sh Makefile prebuilts tools art copyimage_to_window_sysetm.sh device hardware ndk rodev vendor bionic cts docs kernel out sdk bootable dalvik external libcore packages setenv build developers frameworks libnativehelper pdk system
首先来看看build_4412_img.sh这个脚本,脚本对应的代码如下:
#build system IMG #build system img and copy img to window share #Y.X.YANG #date:2016.12.22 cd /work/android-5.0.2/kernel/ #首先切换到工程的kernel主目录 make -j4 #开始编译内核 echo $? if test $? -eq 0 #判断编译是否出错,出错直接退出,编译成功将生成的zImage拷贝至window共享目录 then echo "build 4412 kernel-img success!" cp /work/android-5.0.2/kernel/arch/arm/boot/zImage /mnt/hgfs/share/images/ else echo "build 4412 kernel-img fair!" exit 0 fi cd /work/android-5.0.2/ #kernel编译完成后接下来编译Android源码 . setenv #先设置编译环境,下面有setenv的源码 lunch full_tiny4412-eng #选择我们要编译的产品,我们这里选择4412的工程版本 make -j4 #编译 ./gen-img.sh #生成对应产品的img ./copyimage_to_window_sysetm.sh #将img拷贝到window共享目录
接下来这个就是setenv的源码:
#!/bin/bash CPU_JOB_NUM=$(grep processor /proc/cpuinfo | awk '{field=$NF};END{print field+1}') # java OPENJDK7_DIR=/usr/lib/jvm/java-7-openjdk-amd64 java_version_str=`java -version 2>&1 | grep '^java .*[ "]1\.7[\. "$$]'` if [ "x$java_version_str" = "x" ]; then export PATH=${OPENJDK7_DIR}/bin:$PATH fi PRODUCT='full_tiny4412' #这里是对应的产品 source build/envsetup.sh #和大多数安卓编译的方式一样的,这里只是把souce build/envsetup.sh放到setenv这个脚本里面来了 TARGET_PRODUCT=$PRODUCT TARGET_SIMULATOR=false TARGET_BUILD_TYPE=release TARGET_BUILD_VARIANT=eng export PATH TARGET_PRODUCT TARGET_SIMULATOR TARGET_BUILD_TYPE TARGET_BUILD_VARIANT #这里是对应的外部环境变量引用 # settitle COMBO4FA=${TARGET_PRODUCT}-${TARGET_BUILD_VARIANT} #设置标题 export PROMPT_COMMAND="echo -ne \"\033]0;[${COMBO4FA}] ${USER}@${HOSTNAME}: ${PWD}\007\""
接下来这个是gen-img.sh,作用是将生成在out目录下的img拷贝到源码的根目录下:
#!/bin/bash OUTDIR=out/target/product/tiny4412 #这里就是out生成img的路径 AHOSTBIN=out/host/linux-x86/bin #选择对应的工具 # install vendor files #安装供应商文件 if [ -d vendor/friendly-arm/tiny4412/rootdir/system/ ]; then cp -af vendor/friendly-arm/tiny4412/rootdir/system/* ${OUTDIR}/system/ fi if [ -d vendor/friendly-arm/tiny4412/rootdir/data/ ]; then cp -af vendor/friendly-arm/tiny4412/rootdir/data/* ${OUTDIR}/data/ fi # make images #生成img LOPTS="-T -1 -S ${OUTDIR}/root/file_contexts" ${AHOSTBIN}/make_ext4fs -s ${LOPTS} -l 629145600 -a system system.img ${OUTDIR}/system # eMMC Size | UserData partition Size #------------------------------------------------ # 4G | 2149580800 (2G) 2050*1024*1024 # 8G | 4299161600 (4G) # 16G | 10747904000 (10G) 10250*1024*1024 #------------------------------------------------ ${AHOSTBIN}/make_ext4fs -s ${LOPTS} -l 2149580800 -a data userdata-4g.img ${OUTDIR}/data ${AHOSTBIN}/make_ext4fs -s ${LOPTS} -l 4299161600 -a data userdata-8g.img ${OUTDIR}/data ${AHOSTBIN}/make_ext4fs -s ${LOPTS} -l 10485760000 -a data userdata-16g.img ${OUTDIR}/data
cp userdata-4g.img userdata.img #拷贝对应的img # ramdisk ${AHOSTBIN}/mkbootfs ${OUTDIR}/root | ${AHOSTBIN}/minigzip > ${OUTDIR}/ramdisk.img mkimage -A arm -O linux -T ramdisk -C none -a 0x40800000 -n "ramdisk" \ -d ${OUTDIR}/ramdisk.img ramdisk-u.img # minitools support #minitool 工具支持 MINITOOLS_PATH=/opt/MiniTools/tiny4412/images/Android5.0 if [ -d ${MINITOOLS_PATH} ]; then cp -f ramdisk-u.img ${MINITOOLS_PATH}/ cp -f system.img ${MINITOOLS_PATH}/ cp -f userdata*.img ${MINITOOLS_PATH}/ ls -l ${MINITOOLS_PATH}/ramdisk-u.img ls -l ${MINITOOLS_PATH}/system.img ls -l ${MINITOOLS_PATH}/userdata*.img fi
接下来这个是copyimage_to_window_system.sh,作用是将生成的img拷贝到window共享目录
sudo mv userdata-16g.img userdata-4g.img userdata-8g.img userdata.img system.img ramdisk-u.img /mnt/hgfs/share/images/
往后的文章会介绍如何修改4412上的配置文件,会做成sdk修改记录,欢迎大家有空来学习。
时间: 2024-09-20 16:05:18