android 编译打包烧录

搭建环境

16年底,从深圳转战到杭州,当然也重新换了份工作,记得刚来的时候非常的辛苦,因为10月份广东还是比较热的,到杭州这边好冷,那时候严重的不适应,很严重的感冒… 这段时间尝试去了解了下源码,还是收获很多的,现在努力学习cpp中,准备往这方面转了。因为新公司都是在源码上编译的,所以或多或少也学习研究了下,记得刚开始下载android源码的时候,那个蛋疼,折腾了我一个多星期,现在写篇文章总结下。

  • 安装ubuntu系统,我选择的是在window上安装虚拟机,我知道好多人用mac去编译,穷屌丝也有穷屌丝的门路,钱不是我们阻止我们学习的障碍,充分利用window和linux各自的优势,我觉得并不比mac逊色多少。安装好了如下图所示:

  • 安装相应的库支持。

    sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zliblg-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev

根据我惨痛的经历,一般编译不成功基本都是环境有问题,代码有问题的可能性是非常的小的。如果有些库安装不了,使用 sudo apt-get update 一下,如果还是不行,就得自行搜索解决一下了。另外还要安装交叉编译器和jdk,其中如果对交叉编译器不明白的或者不知道如何配置的请看这篇文章 arm-linux-gcc搭建过程图解,其中jdk需要注意的是在android5.0之后就要使用openjdk了,具体原因就是因为oracle和google的那场官司了,使用命令 apt-get install openjdk-7-jdk.安装完成之后得配置下环境变量,可以在 etc/profile 或者是 ~/.bashrc文件最后输入:

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib

配置成功后,应该如下图所示:

另外,交叉编译器安装成功之后,要将linux根目录的Makefile文件中cpu架构改成arm的,如下图所示:

编译

  • 编译linux,执行build.sh config配置环境

    然后直接执行 ./build.sh 命令开始编译

  • 编译android

    首先要切换到我们的android目录下,然后执行envsetup.sh脚本配置我们的环境,然后选择我们要编译的分支,具体步骤如图:

接下来,我们要把linux编译好的uboot和kenel拷贝到我们android目录下,因为我们已经执行过我们的envsetup.sh脚本了,而envsetup.sh脚本又执行了我们的device/softwinner/common/vendorsetup.sh脚本,vendorsetup.sh的脚本中有个函数叫做extract-bsp(),我们来看下这个函数:

function extract-bsp()
{

    CURDIR=$PWD

    get_lichee_out_dir
    get_device_dir

    cd $DEVICE

    #extract kernel
    if [ -f kernel ] ; then
        rm kernel
    fi
    cp $LINUXOUT_DIR/bImage kernel
    echo "$DEVICE/bImage copied!"

    #extract linux modules
    if [ -d modules ] ; then
        rm -rf modules
    fi
    mkdir -p modules/modules
    cp -rf $LINUXOUT_MODULE_DIR modules/modules
    echo "$DEVICE/modules copied!"
    chmod 0755 modules/modules/*

# create modules.mk
(cat << EOF) > ./modules/modules.mk
# modules.mk generate by extract-files.sh, do not edit it.
PRODUCT_COPY_FILES += \    \$(call find-copy-subdir-files,*,\$(LOCAL_PATH)/modules,system/vendor/modules)
EOF

    cd $CURDIR
}

可以看到从linux目录拷贝kernel和一些modules,需要主要的是get_lichee_out_dir()函数,Linux目录一定要放在android目录上层目录下,自己查看源码即可。接下来,我们便可以执行我们的make命令来编译我们的android系统了,make后面可以带个参数表示执行编译的线程条数,如果 make -j8,后面的数字一般都是你电脑cpu的核数乘以2。

我的电脑是6核的,所以我可以用 make -j12,但是我就使用了make -j8,整个编译的过程很漫长,中途可能会报错,报错的原因90%以上都是环境没有配置好,大概一般的3个小时50分钟左右就会编译结束,当然这个时间也是根据你计算机cpu的能力的,像用公司的编译服务器编译,只需要十几分钟…

编译成功后,我们使用vendorsetup.sh脚本里面的pack函数将编译出来的镜像文件打包成rom,如图所示,红色部分表示生成的路径。

烧录

具体每个厂商都会提供烧录软件的,即使没有提供也会把烧录的步骤的脚本发给你的,比如芯灵图家的A33板子就是用PhoenixSuit烧录的,我们公司的是在fastboot模式下,烧录rom的。按照具体的步骤做就行了,接下来发张将自己编译过的android6.0系统烧录到硬件的效果图,很是有成就感,有么有。

访问虚拟机

毕竟是两个系统,操作起来也不是很方面,文件互访有很多方案,但是我觉得基于samba服务是最方便的,window本身就集成了samba服务,所以只需要在ubuntu系统上安装下即可,首先sudo apt-get install samba,安装完成之后,敲入命令vim /etc/samba/smb.conf , 在这个文件末尾添加几句话,如图所示:

接下来设置root的密码,敲入命令 smbpasswd -a root ,然后重新启动samba服务, service smb restart,查看samba进程是否启动 ps -ef。注意有点非常的重要,我们需要设置虚拟机网络为桥接模式,这样就会自动获取ip连接网络了。最后在window上映射我们Linux的磁盘,如图所示:

输入我们虚拟机的ip就行了,进入Z盘就很方便的访问我们linux中的文件系统了。可以看到这就是我们的Linux文件系统的根目录。当然你也可以通过ssh访问我们的linux,下面是我通过Xshell访问我们的虚拟机。

时间: 2024-10-24 20:04:15

android 编译打包烧录的相关文章

Ant编译打包Android工程流程

一.Ant编译打包android工程步骤 二.Ant apk签名 1.keystore签名    定义自己的签名文件 生成keystore文件:keytool -genkey -alias android.keystore -keyalg RSA - validity 20000 -keystore android.keystore 对应的java命令:jarsigner -verbose -keystore android.keystore -signedjar android_signed.

Android系列之Android 命令行手动编译打包详解

http://www.qdmm.com/BookReader/1222701,54263720.aspxhttp://www.qdmm.com/BookReader/1222701,54263869.aspxhttp://www.qdmm.com/BookReader/1222701,54263871.aspxhttp://www.qdmm.com/BookReader/1222701,54263876.aspxhttp://www.qdmm.com/BookReader/1222701,542

理解使用Gradle编译打包Android apk

本篇的目的:理解Gradle构建过程,解读Android Gradle插件的配置 阅读本文一定是要使用过Gradle生成apk,文中不会讲如何安装运行Gradle,如有需要可先看文末的参考文章. APK包是一个ZIP压缩包,从Java源代码.资源文件到生成这个APK,经过了编译打包一系列特定的过程,这个过程可以参看<使用Ant打包Android应用--apk生成过程>,也可以从自己的旧版SDK文档(/docs/tools/building/index.html)中找到.而这一系列特定的过程,重

Ant自动编译打包&amp;发布 android项目

Eclipse用起来虽然方便,但是编译打包android项目还是比较慢,尤其将应用打包发布到各个渠道时,用Eclipse手动打包各种渠道包就有点不切实际了,这时候我们用到Ant帮我们自动编译打包了. 1  Ant自动编译打包android项目 1.1   Ant安装 ant的安装比较简单,下载ant压缩包  http://ant.apache.org  (最新的为1.9.3版本),下载之后将其解压到某个目录(本人解压到E:\Program Files\apache-ant-1.9.3) ,然后配

Andorid进阶7—— Ant自动编译打包&amp;发布 android项目

http://www.cnblogs.com/tt_mc/p/3891546.html Eclipse用起来虽然方便,但是编译打包android项目还是比较慢,尤其将应用打包发布到各个渠道时,用Eclipse手动打包各种渠道包就有点不切实际了,这时候我们用到Ant帮我们自动编译打包了. 1  Ant自动编译打包android项目 1.1   Ant安装 ant的安装比较简单,下载ant压缩包  http://ant.apache.org  (最新的为1.9.3版本),下载之后将其解压到某个目录(

(转载)Ant自动编译打包android项目

1  Ant自动编译打包android项目 1.1   Ant安装 ant的安装比较简单,下载ant压缩包  http://ant.apache.org  (最新的为1.9.3版本),下载之后将其解压到某个目录(本人解压到E:\Program Files\apache-ant-1.9.3) ,然后配置环境变量(新建ANT_HOME环境变量,值为ant所在的目录,然后将ANT_HOME/bin添加到path中),如图: 打开命令行工具,输入 ant  -version ,如果出现如下结果,说明an

Android-Ant自动编译打包android项目 -- 2 ----签名与渠道包

上篇介绍了怎么使用ant自动编译打包现有的android项目,这篇将继续介绍如果如何在ant打包应用的时候加入签名信息以及自动打包渠道包. 1. 加入签名信息: 在项目的根目录下建一个ant.properties文件,输入如下内容,其中keystore密码和alias密码可以不指定(防泄漏),那么在命令执行的过程中会要求你输入. [html] view plaincopy #keystore的路径,必须使用正斜杠 key.store=E:/wp_android_sample/me.key #ke

Windows系统下Ant自动编译打包并签名Android应用——实践篇

1.背景 项目进行到一定程度了,每次发布前,产品要求打包测试,都需要手动从eclipse中导出签名APK,很是麻烦.于是想起了之前探索过的Ant自动签名打包.查看自己之前写的博客Windows系统下Ant自动编译打包并签名Android应用--探索篇,边动手边复习.但是后面遇到了一大串的问题... 2.问题解决过程 1).libs库中的第三方包 如果项目只是引用了第三方jar包,只要将jar包放入项目libs目录下就可以了,ant编译的时候会自动把第三方jar包加入进去的,没有任何问题. 2).

Android之编译打包apk时几个常用的技巧

今天和大家分享一下用eclipse打包apk时的三个小技巧: 一.防止被反编译而扰乱混淆加密: 1. 请打开project.properties文件中的这句话(即将这句前面的"#"去掉即可)    proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 2. 然后可以根据自己的需求对proguard-project.txt文件做出"例外"的方法或类的规则定