为了整合linux-bsp到android编译系统,我们对目录结构进行如下的调整:
sudo apt-get install uboot-mkimage    //还要装这个才能编译内核
//export ANDROID_JAVA_HOME=$JAVA_HOME
.
workspace
   |----------exdroid
        |    |-------android4.0.1
                |    |------- bionic
                   |    |------- development
                   |    |------- ......
        |    |------- lichee
                   |     |--------buildroot
                   |     |--------linux3.0
                   |     |--------uboot
                   |     |--------tools
                   |     |---------pack

. 相对以前的变化: 
a) 原来的 tools目录的 crane-win-v2已经取消,不会继续升级,其功能由 lichee/tools/pack取代。

3.新的打包流程 
c) 编译 bootloader/linux kernel 代码:
$./build.sh -p sun4i_crane -k 3.0
$cd ../android4.0.1
$source build/envsetup.sh
$lunch 7

e) 拷贝内核和模块到android 产品 device/softwinner/crane-evb/ 目录:
$extract-bsp

f) 编译android系统:
$make -j8在 out/target/product/crane-evb/ 目录下面会生成 boot.img, recovery.img, system.img 3个包。

g) 打包生成最终可烧录固件包
$pack取消tools工具之后,可以用pack命令生成固件,可烧录固件包生成的位置在 exdroid/lichee/tools/pack/out目录,比如 sun4i_crane_evb.img
如果编译的是EVB1.2的版本,需要到crane-evb目录下,修改package.sh脚本, 
把./pack -c sun4i -p crane -b evb修改为./pack -c sun4i -p crane -b evb-v12r

h)通过 livesuit工具可以直接烧录到小机里面。

4. fastboot使用 
a) 如何进入fastboot模式:
1) 启动开发板,在串口界面敲任意按键,可以进入u-boot;
2) 输入 fastboot命令,进入fastboot模式;
3) 通过pc端的 fastboot工具烧录各个固件包,( pc端的 fastboot 直接编译出来)
4) 退出fastboot模式:ctl+c

b) fastboot使用:
l 擦除分区:
fastboot erase {partition} ,例如
$fastboot erase boot //擦除boot分区
$fastboot erase system //擦除system分区
$fastboot erase data //擦除data分区l 烧写指定分区:

fastboot flash {partition} {*.img} ,例如
$fastboot flash boot boot.img //往flash boot分区烧录boot.img
$fastboot flash system system.img //往flas system分区烧录system.img
$fastboot flash data userdata.img

5. 其他技巧提示: 
$make bootimage打包生成boot.img,boot.img包含linux kernel和内存盘ramdisk
$make systemimage-nodeps打包在out/target/product/crane-evb/目录下生成android system.img

http://wenku.baidu.com/view/67e4f6d176eeaeaad1f3301e.html

       升级ubuntu到11.10,但在编译android的时候出错了。这个android在升级系统之前编译是没有错误的,对比发现升级到ubuntu11.10后gcc、g++的版本都是4.6.1。而升级之前的版本是4.4.6。我想多半原因就在这里了。要想解决问题需要更改ubuntugcc、g++默认编译器版本。google一把发现有两种方法可以更改。

       方法一:
       首先,看一下你的ubuntu都装了哪些版本的gcc 用命令:ls /usr/bin/gcc* -l  我的显示是
        lrwxrwxrwx 1 root root      7 2011-08-14 15:17 /usr/bin/gcc -> gcc-4.6
        -rwxr-xr-x 1 root root 224544 2011-10-06 05:47 /usr/bin/gcc-4.4
        -rwxr-xr-x 1 root root 237072 2011-09-17 17:25 /usr/bin/gcc-4.5
        -rwxr-xr-x 1 root root 302104 2011-09-17 05:43 /usr/bin/gcc-4.6

        由上面显示可以看出默认安装的是gcc-4.6,现在来改成gcc-4.4
        删除gcc-4.6的软连接文件/usr/bin/gcc。(只是删除软连接)
        命令:sudo rm /usr/bin/gcc
        然后建一个软连接,指向gcc-4.4。
        命令:sudo ln -s /usr/bin/gcc-4.4 /usr/bin/gcc
        ok了,现在用命令:gcc -v  显示如下:

        使用内建 specs。
        目标:i686-linux-gnu
        配置为:../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.4.6-11ubuntu2' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.4 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-targets=all --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu --target=i686-linux-gnu
线程模型:posix
gcc 版本 4.4.6 (Ubuntu/Linaro 4.4.6-11ubuntu2) 
       用同样的方法更改g++的默认版本。

       方法二:
       修改默认gcc和g++为4.4的版本
       sudo update-alternatives --remove-all gcc
       sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 40
       sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.4 40

       配置默认的gcc和g++
       sudo update-alternatives --config gcc
       sudo update-alternatives --config g++

制作过程跟全志科技的 Android 4.0 的固件制作过程一致,唯一不同的是:
pack 时要加上-c cardboot 选项,如 pack –c cardboot(前面的步骤和编译一般固件相同)
注意:卡启动固件和 Nand Flash 启动固件是不能相互替换使用的
Logo

更多推荐