Tiny210 从源代码开始创建Android
2013-01-04 14:21
375 查看
友善之臂的开发板手册上提供了从源代码开始创建Android的两个脚本:build-android,genrootfs.sh 以及使用***yaffs2格式的文件系统映像
这个用到了setenv脚本
1.将编译好的文件复制到rootfs_dir,并修改文件属性
2.建立linux文件设备节点
3.安装 prebuilt packages
4.安装内核模块与固件
将会在当前目录下生成rootfs_android.img文件,
1.build-android
1 #!/bin/bash 2 3 if [ ! -e "./jdk1.6.0_23" ]; then 4 tar xzf jdk1.6.0_23.tar.gz 5 fi 6 7 tar xzf symlinks.tgz 8 9 # if [ -e "../Android-2.2-apps/" ]; then 10 # cd ../Android-2.2-apps/ 11 # ./apply_patch.sh 12 # cd - 13 # fi 14 15 export PATH=$PWD/jdk1.6.0_23/bin:$PATH 16 . setenv 17 make -j$CPU_JOB_NUM || exit 1 18 19 # if [ -e "../Android-2.2-apps/" ]; then 20 # cd ../Android-2.2-apps/ 21 # ./build-apps 22 # cd - 23 # fi 24 25 exit 0
这个用到了setenv脚本
1 #!/bin/bash 2 3 CPU_JOB_NUM=$(grep processor /proc/cpuinfo | awk '{field=$NF};END{print field+1}') 4 5 PRODUCT='full_mini210' 6 7 source build/envsetup.sh 8 9 TARGET_PRODUCT=$PRODUCT 10 TARGET_SIMULATOR=false 11 TARGET_BUILD_TYPE=release 12 TARGET_BUILD_VARIANT=eng 13 14 export PATH TARGET_PRODUCT TARGET_SIMULATOR TARGET_BUILD_TYPE TARGET_BUILD_VARIANT 15
2.genrootfs.sh
主要是文件系统的打包。1.将编译好的文件复制到rootfs_dir,并修改文件属性
2.建立linux文件设备节点
3.安装 prebuilt packages
4.安装内核模块与固件
1 #!/bin/sh 2 3 PRODUCT=smdkv210 4 5 echo -n "Generating rootfs for Android..." 6 rm -fr rootfs_dir 7 cp -a out/target/product/${PRODUCT}/root/ rootfs_dir 8 cp -a out/target/product/${PRODUCT}/system/* rootfs_dir/system 9 cp -a out/target/product/${PRODUCT}/data/* rootfs_dir/data 10 chown root:root rootfs_dir -R 11 chmod 755 rootfs_dir/system/etc/dhcpcd/dhcpcd-run-hooks 12 chown 1014:2000 rootfs_dir/system/etc/dhcpcd/dhcpcd-hooks -R 13 chown 1000:1000 rootfs_dir/data -R 14 echo "...done" 15 16 function mvapk() 17 { 18 mv $1 rootfs_dir/mnt/apps 19 echo " $1" 20 } 21 22 if [ "${PRODUCT}" = "smdkv210" ]; then 23 echo -n "Create device file..." 24 mkdir rootfs_dir/dev/input 25 mknod rootfs_dir/dev/tty c 5 0 26 mknod rootfs_dir/dev/console c 5 1 27 mknod rootfs_dir/dev/fb0 c 29 0 28 mknod rootfs_dir/dev/pointercal c 10 119 29 mknod rootfs_dir/dev/input/event1 c 13 65 30 mknod rootfs_dir/dev/ts-if c 10 185 31 mknod rootfs_dir/dev/touchscreen c 10 180 32 mknod rootfs_dir/dev/touchscreen-1wire c 10 181 33 mknod rootfs_dir/dev/s3c2410_serial0 c 204 64 34 mknod rootfs_dir/dev/s3c2410_serial3 c 204 67 35 echo "...done" 36 37 echo -n "Install prebuilt packages..." 38 if [ -f vendor/samsung/common/busybox-bin.tgz ]; then 39 tar xf vendor/samsung/common/busybox-bin.tgz -C rootfs_dir/system 40 ln -sf /system/busybox/bin/busybox rootfs_dir/system/bin/sh 41 mkdir -p rootfs_dir/bin && ln -sf /system/busybox/bin/sh rootfs_dir/bin/sh 42 fi 43 if [ -f vendor/samsung/common/iwtools-bin.tgz ]; then 44 tar xf vendor/samsung/common/iwtools-bin.tgz -C rootfs_dir/system/bin 45 fi 46 echo "...done" 47 48 echo -n "Install kernel modules and firmware..." 49 if [ -f vendor/samsung/smdkv210/firmware.tgz ]; then 50 tar xf vendor/samsung/smdkv210/firmware.tgz -C rootfs_dir/system/etc 51 fi 52 if [ -f vendor/samsung/smdkv210/kernel-modules.tgz ]; then 53 tar xf vendor/samsung/smdkv210/kernel-modules.tgz -C rootfs_dir/system/lib 54 find rootfs_dir/system/lib/modules/ -name modules.* \ 55 -o -name source -o -name build | xargs rm -rf 56 fi 57 echo "...done" 58 59 echo -n "Install proprietary-open files..."#友善的东西我没有找到这个包。 60 [ -f FriendlyARMData.tgz ] && tar xf FriendlyARMData.tgz -C rootfs_dir 61 echo "...done" 62 63 64 cp vendor/friendly-arm/mini210/rootdir/* rootfs_dir/ -af 65 66 chown 1000:1000 rootfs_dir/data/app -R 67 chmod 775 rootfs_dir/data/app 68 chmod 664 rootfs_dir/data/app/*.apk 69 70 find rootfs_dir/ -name CVS -type d | xargs rm -rf 71 fi 72
3.***yaffs2格式的文件系统映像
使用mkyaffs2image-128M工具,可以把目标文件系统目录***成yaffs2格式的映像文件,当它被烧写入Nand Flash中启动时,整个根目录将会以yaffs2文件系统格式存在,缺省的Android内核已经支持该文件系统,在命令行输入:#cd /opt/FriendlyARM/mini6410/android/Android-2.3 #mkyaffs2image-128M rootfs_dir rootfs_android.img
将会在当前目录下生成rootfs_android.img文件,
相关文章推荐
- 从create-android-project.bat开始创建eclipse下可调试的cocos2dx c++工程
- 开始在Android上使用Retrofit并创建Http请求客户端
- Android 内核源代码交叉编译(创建自己的模拟器内核,哈哈终于搞定了)
- Android 内核源代码交叉编译(创建自己的模拟器内核,哈哈终于搞定了)
- Android 从Activity创建开始,绘制View的过程
- Android Transition 和 Activity & Fragment Transition详解(三)--从创建一个Scene开始
- 开始使用Android Sutdio(三)创建一个Hello World程序
- 【Android入门日记】二、从最开始开始---创建android工程
- 【Android入门日记】二、从最开始开始---创建android工程
- Unreal Engine 4 C++ 为角色创建一个可以Zoom的摄影机(源代码)
- android应用创建桌面快捷图标
- Android实现游戏摇杆的源代码
- Android 之ActivityThead、ActivityManagerService 与activity的管理和创建
- 如何使用CCRenderTexture创建动态纹理 Cocos2d-x 2.1.4 含iOS版源代码
- Android中如何区分界面组件创建和销毁的类型
- 开始使用Android Sutdio(五)高效快捷的使用AS
- Android Training - 创建自定义的Views(Lesson 4 - 优化Views)
- android 获取路径目录方法以及判断目录是否存在,创建目录
- Android的源代码结构
- Android 数据库操作 创建 添加 删除 查询