ubuntu编译android4.0.3源码

1.ubuntu安装
a.下载64位桌面版镜像文件ubuntu-12.10-desktop-amd64
b.下载EasyBCD
    添加新条目——>NeoGrub——>安装——>配置
    添加
    root (hd0,0)
    kernel (hd0,0)/vmlinuz boot=casper iso-scan/filename=/ubuntu-xx.xx-desktop-amd64.iso ro quiet splash locale=zh_CN.UTF-8
    initrd (hd0,0)/initrd.lz
    把ubuntu-xx.xx-desktop-amd64.is 换成自己的版本就可以了!
    保存设置

    把ubuntu-xx.xx-desktop-amd64.iso文件也拷贝到C盘里解压Ubuntu-xx.xx-desktop-amd64.iso中casper文件夹下面的vmlinuz和initrd.lz到C盘
c.重启安装
    Ctrl+Alt+T 输入 sudo umount -l /isodevice
    安装注意选择分区,选Ext4文件系统,挂载点为/,安装启动引导器的设备选/dev/sda ATA
    安装完成后重启
2.ubuntu环境搭建
a.安装jdk
下载jdk1.6.0_43.bin文件置于/usr/lib/jvm/java中
然后,在shell中执行:
代码:
sudo chmod u+x /usr/lib/jvm/java/jdk1.6.0_43.bin

修改bin文件权限,使其可执行
然后,执行
代码:
sudo /usr/lib/jvm/java/jdk1.6.0_12.bin
安装完毕

b.jdk环境配置
sudo gedit /etc/environment
添加
JAVA_HOME=/usr/lib/jvm/java/jdk1.6.0_43
CLASSPATH=.:/usr/lib/jvm/java/jdk1.6.0_43/lib:/usr/lib/jvm/java/jdk1.6.0_43/jre/lib
PATH添加
:/usr/lib/jvm/java/jdk1.6.0_43/bin
执行
. /etc/environment

java -version 测试是否配置成功
c.android sdk
sudo gedit /etc/environment
PATH添加
:~/sdk/tools:~/sdk/platform-tools
执行
. /etc/environment
3.源码下载
编译环境
参考http://source.android.com/source/initializing.html
$ sudo apt-get install git gnupg flex bison gperf build-essential \
  zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
  libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
  libgl1-mesa-dev g++-multilib mingw32 tofrodos \
  python-markdown libxml2-utils xsltproc zlib1g-dev:i386
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
源码下载
参考http://source.android.com/source/downloading.html
$ mkdir ~/bin
$ PATH=~/bin:$PATH

$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY

主线上最新版本
$ repo init -u https://android.googlesource.com/platform/manifest
分支,用-b参数制定branch名字
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.3_r1
填写用户名和email
$ repo sync

4.源码编译
参考:http://source.android.com/source/building.html
http://wenku.baidu.com/view/626d4a2258fb770bf78a552f.html

a. 修改源码权限
    执行 cd WORKING_DIRECTORY
    sudo chmod -R 777 *

b. 开始编译
    cd WORKING_DIRECTORY
     make clean
    make update-api
    make -j4
    注意:make update-api 只是首次编译时需要执行,后面重新编译时只需先make clean  再make -j4 。
    编译时间大概为40分钟左右,编译时间跟机器配置有关。
    make -jx x代表开启多少个线程来下载源码,有效利用CPU资源,但有可能会出现内存问题
    如:
    make: *** [out/host/linux-x86/obj/EXECUTABLES/clang_intermediates/clang] Error 1
    这时候还是直接使用make方法
    如编译过程出错,将会编译中断,并给出错误提示,可根据提示去百度搜索相关解决办法
c. 编译完成
    编译完成时,会在源码目录生成out文件夹如:
    out/target/product/generic/obj/PACKAGING/systemimage_unopt_intermediates/system.img
    out/target/product/generic/system.img
    out/target/product/generic/ramdisk.img
    out/target/product/generic/userdata.img
5.源码编译FQA
a.编译出的apk缺少资源文件
    修改 build\target\product\generic.mk
    添加 CUSTOM_LOCALES:= hdpi mdpi ldpi xhdpi xlarge
b.编译出的文件未被混淆
    android在编译时默认关闭了混淆选项,在build/core目录有个proguard.flags文件,其实在proguard的过程中,编译器会调用包括本地目录下和系统定义了的多个proguard.flags文件,而在这个文件中混淆的选项被禁止了, 故而编译出来的apk仍未混淆。因此将如下句子注释掉便可实现真正的混淆编译:
# Don't obfuscate. We only need dead code striping.
-dontobfuscate(将该句加个#号注释掉)

编译Android4.0.3的常见错误:
参考:http://blog.csdn.net/yiyaaixuexi/article/details/8330645
    make: *** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] Error 1  
    gcc和g++版本太高了,把默认的4.6版本换为了4.4
    sudo apt-get install gcc-4.4
    sudo apt-get install g++-4.4
    sudo rm -rf /usr/bin/gcc /usr/bin/g++
    sudo ln -s /usr/bin/gcc-4.4 /usr/bin/gcc
    sudo ln -s /usr/bin/g++-4.4 /usr/bin/g++
    如是64bit系统,则还需装如下包
    sudo apt-get install g++-4.4-multilib

6.环境相关FQA
a.adb的no permissions问题
    可参考:http://developer.android.com/tools/device.html
    sudo gedit /etc/udev/rules.d/51-android.rules
    添加SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0666"
    更改权限chmod a+r /etc/udev/rules.d/51-android.rules
    重启udev sudo /etc/init.d/udev restart
    重新插拨usb
b.eclispe no java virtual machine was found错误
    编辑eclipse.ini
    在-vmargs 参数的前面添加
    -vm
    /usr/lib/jvm/java/jdk1.6.0_43/bin
c.安装eclipse svn
    安装javaHL
    sudo apt-get install libsvn-java
    编辑eclipse.ini
    在-vmargs下增加:
    -Djava.library.path=/usr/lib/jni
    Subclipse报Failed to load JavaHL Library错误:
    将原来配置的
    -Djava.library.path=/usr/lib/jni
    改为
    -Djava.library.path=/usr/lib/x86_64-linux-gnu/jni


7. 编译源码模块
a.source build/envsetup.sh
b.使用mmm命令来编译指定的模块,例如QuickSearchBox应用程序:
    mmm packages/apps/QuickSearchBox/
c.apk文件生成到 out/target/product/generic/system/app

8.其它ubuntu相关
a.添加Eclipse快捷方式
    sudo gedit /usr/share/applications/eclipse.desktop
    键入以下内容:将Exec和Icon中的路径换为你的Eclipse的路径,注意Ubuntu中是区分大小写的。
    [Desktop Entry]
    Name=eclipse
    Name[zh_CN]=eclipse
    Comment=eclipse Client
    Exec=/home/datao/eclipse/eclipse
    Icon=/home/datao/eclipse/icon.xpm
    Terminal=false
    Type=Application
    Categories=Application;
    Encoding=UTF-8
    StartupNotify=true
b.安装svn软件rabbitvcs
    sudo add-apt-repository ppa:rabbitvcs/ppa   添加源
    sudo apt-get update   更新仓库
    sudo apt-get install rabbitvcs-core rabbitvcs-nautilus3 rabbitvcs-cli   安装相关软件
    安装 RabbitVCS Gedit 扩展
    sudo apt-get install rabbitvcs-gedit
    最后输入以下命令重启 Nautilus 就可以使用 RabbitVCS 了。
    nautilus -q
c.安装samba访问局域网服务器
    sudo apt-get install samba


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值