在tiny4412源码下编写全系统编译执行脚本

简介: 今天心血来潮,想把之前做的开发板环境配置以及编译的东西重新整理一下,毕竟最近在搞开发,所以有必要温故而知新。以下是我整个Android-5.0的工程目录列表:其中build_4412_img.sh、copyimage_to_window_system.sh是我自己写的快速编译拷贝脚本。

今天心血来潮,想把之前做的开发板环境配置以及编译的东西重新整理一下,毕竟最近在搞开发,所以有必要温故而知新。

以下是我整个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修改记录,欢迎大家有空来学习。



目录
相关文章
|
Kubernetes 负载均衡 网络安全
openEuler 系统搭建高可用 Kubernetes 集群
在生产环境中,k8s 高可用集群部署能够确保应用程序稳态运行不出现服务中断情况。此处我们基于 openEuler 系统环境,配置 Keepalived 和 HAproxy 使负载均衡(LB/Load Balancer)、实现 k8s & KubeSphere 高可用集群部署。
947 1
VSCode用浏览器预览/运行html文件
VSCode用浏览器预览/运行html文件
|
数据安全/隐私保护
App逆向百例|05|某视频App参数分析
App逆向百例|05|某视频App参数分析
456 0
|
5月前
|
传感器 人工智能 搜索推荐
VR体育训练:从赛场到虚拟世界,运动训练的新纪元
VR体育训练:从赛场到虚拟世界,运动训练的新纪元
219 11
VR体育训练:从赛场到虚拟世界,运动训练的新纪元
|
搜索推荐 API
淘宝商品数据洞察:解锁精准营销新策略
在快速变化的商业环境中,高效的营销策略对企业至关重要。通过API获取淘宝APP的商品细节数据,企业可以精准分析产品特性、强化卖点,并制定灵活的价格策略。利用用户画像实现个性化营销,选择最佳渠道并优化内容,从而提升品牌影响力。这一方法不仅帮助企业抓住目标消费者,还能增强市场竞争力,促进长期发展。
|
SQL 关系型数据库 专有云
实时数仓 Hologres产品使用合集之如何针对模糊匹配查询设置索引
实时数仓Hologres是阿里云推出的一款高性能、实时分析的数据库服务,专为大数据分析和复杂查询场景设计。使用Hologres,企业能够打破传统数据仓库的延迟瓶颈,实现数据到决策的无缝衔接,加速业务创新和响应速度。以下是Hologres产品的一些典型使用场景合集。
|
机器学习/深度学习 存储 分布式计算
阿里开源首个DL框架,新型XDL帮你搞定大规模稀疏数据
12 月 21 日,阿里巴巴旗下的大数据营销平台阿里妈妈开源了其应用于自身广告业务的算法框架 X-Deep Learning(XDL)。该框架非常擅长处理高维稀疏数据,对构建推荐、搜索和广告系统非常有优势。此外,阿里还配套发布了一系列官方模型,它们都是阿里在实际业务或产品中采用的高效模型。
1477 0
阿里开源首个DL框架,新型XDL帮你搞定大规模稀疏数据
|
Java Android开发 开发者
【Google Play】从 Android 应用中跳转到 Google Play 中 ( 跳转代码示例 | Google Play 页面的链接格式 | Google Play 免安装体验 )
【Google Play】从 Android 应用中跳转到 Google Play 中 ( 跳转代码示例 | Google Play 页面的链接格式 | Google Play 免安装体验 )
1862 0
|
前端开发 芯片
【异步电路碎碎念1】 —— 到底什么是异步电路
【异步电路碎碎念1】 —— 到底什么是异步电路
682 0
【异步电路碎碎念1】 —— 到底什么是异步电路
|
算法 Java 数据安全/隐私保护
App逆向百例|06|某App mfsig分析
App逆向百例|06|某App mfsig分析
1407 0