android源码编译问题杂记

前言:
    1)有◎这个标志的内容,都是我遇到的比较烦人的问题。
    2)总的思路可以参考下面的网址,
       本文主要介绍经络以及遇到的问题以及解决方法。
       http://blog.csdn.net/zhaoxy_thu/article/details/12657265
    3)我总会碰到网络的问题,所以访问网络出错时需要多试几次。
    
■编译环境的准备
1)本来想用U盘装个试用版,从U盘启动着用,可是不能保存设置及更新。
    所以只好搞一个虚拟机了。
    Win7 32bit + VMware6.5下面安装(虚拟硬盘150G,2G内存,2核CPU)
    Ubuntu 12.04.4 LTS (GNU/Linux 3.11.0-18-generic x86_64)
    http://www.ubuntu.com/download/desktop

2)成功安装完成后,修改原列表
    http://wiki.ubuntu.org.cn/Qref/Source
    注意:一定要选对版本。比如Precise(12.04)版本 :
        需要将Raring(13.04)版本源地址中的 raring 替换为 precise 即可。
    经过多次试验还是选国内的比较快一点。我选的如下列表:
    1.北京交通大学更新服务器(教育网/电信百兆接入)
    2.网易163更新服务器(广东广州电信/联通千兆双线接入)
    3.搜狐更新服务器(山东联通千兆接入,官方中国大陆地区镜像跳转至此)
    4.Ubuntu官方提供的其他软件(第三方闭源软件等):

3)就是将系统update到最新以及安装语言支持。

4)◎安装完后这里会碰到一个问题,就是flashplugin-installer:downloading无反映
    这个我感觉最好的办法就是手动下载后安装。
    如果因为Ctrl+c造成有锁的话,
    #sudo rm /var/cache/apt/archives/lock
    #sudo rm /var/lib/dpkg/lock
    #sudo apt-get remove --purge  flashplugin-installer
    #sudo dpkg --configure -a
    实在还是有锁就重启试试。

    我有点忘记了,好像应该是如下网址下载安装。
    http://fpdownload.macromedia.com/get/flashplayer/pdc/11.2.202.341/install_flash_player_11_linux.x86_64.tar.gz
    解压后执行如下语句即可安装。
    #sudo cp libflashplayer.so /usr/lib/mozilla/plugins

■android相关编译环境的准备
    官方教程URL如下:
    http://source.android.com/source/building.html
    这里面基本步骤基本都有,这里就不详述,只记述问题以及解决办法。
    Python、GNU Make都是Ubuntu12.04自带的,而且版本都符合要求,所以不用管。
◎安装JDK
    下面就需要安装JDK,官方方法我试过不好使。
    ubuntu 12.04 下默认是安装了openjdk的,不过这个jdk问题比较多,
    因为你甚至无法启动Eclipse,所以还是需要自己安装jdk的。
    
    1.下载jdk6
    从http://download.java.net/jdk6/根据操作系统的选择对应的安装包,
    我的是ubuntu 12.04 64bit的,下载如下文件,
    http://www.java.net/download/jdk6/6u38/promoted/b04/binaries/jdk-6u38-ea-bin-b04-linux-amd64-31_oct_2012.bin

    2.在/usr/local下创建目录
    #sudo mkdir java
    #cd /usr/local/java
    #cd 存放jdk的目录
    #cp jdk-6u38-ea-bin-b04-linux-amd64-31_oct_2012.bin /usr/local/java

    3.修改权限+执行安装
    #cd /usr/local/java
    #sudo chmod u+x jdk-6u38-ea-bin-b04-linux-amd64-31_oct_2012.bin
    #./jdk-6u38-ea-bin-b04-linux-amd64-31_oct_2012.bin

    4.修改环境变量
    #sudo vim /etc/environment  
    将里面的变量设置为:
    PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/java/jdk1.6.0_38/bin"
    CLASSPATH=.:/usr/local/java/jdk1.6.0_38/lib
    JAVA_HOME=/usr/local/java/jdk1.6.0_38
    保存退出。

    配置profile:
    #sudo vim /etc/profile
    在文件的末尾添加如下内容:
    export JAVA_HOME=/usr/local/java/jdk1.6.0_38
    export JRE_HOME=/usr/local/java/jdk1.6.0_38/jre
    export PATH=$PATH:/usr/local/java/jdk1.6.0_38/bin
    export CLASSPATH=./:/usr/local/java/jdk1.6.0_38/lib:/usr/local/java/jdk1.6.0_38/jre/lib
    配置好了后重新加载:
    #. /etc/profile

    5.ubnuntu默认安装了openjdk,需要设置默认jdk6
    #sudo update-alternatives --install /usr/bin/java java /usr/local/java/jdk1.6.0_38/bin/java 300  
    #sudo update-alternatives --install /usr/bin/javac javac /usr/local/java/jdk1.6.0_38/bin/javac 300

◎Installing required packages (Ubuntu 12.04)
    #sudo apt-get install libgl1-mesa-glx:i386
    下列软件包有未满足的依赖关系:
     libgl1-mesa-glx:i386 : 依赖: libglapi-mesa:i386 (= 8.0.4-0ubuntu0.7)
                            推荐: libgl1-mesa-dri:i386 (>= 7.2)
    E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。
    貌似在Ubuntu 12.04 LTS 64bit 中【libgl1-mesa-glx:i386】和Xorg不兼容。
    一旦安装libgl1-mesa-dri:i386这个就会报告卸载Xorg等包,
    这样一来Xwindow就启动不了了,画面进不去,干脆不要安装了。
    下面这句也就没有执行的必要了。
    #sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
    貌似这个不影响编译,后面我再验证下。

◎下载repo以及初期化
    官网指令为
    curl https://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
    但是对我都不适用,要么是连不上,
    #repo init -u https://android.googlesource.com/a/platform/manifest
    要么就是下载源码时报错: could not verify the tag v1.12.13.

    有一个URL可以下载repo的各个版本
    http://code.google.com/p/git-repo/downloads/list?can=1&q=
    于是我下载了个repo-1.19 的。可是还是有这个问题。
    又找到了如下网址发现了所谓的tag v1.12.13,
    https://android.googlesource.com/tools/repo/+/v1.12.13/repo
    将脚本copy出来后另存为repo后搞定。

    看来这个版本一致在更新,所以可能会碰到这个问题。
    是不是将上面的URL中的版本号替换为前面错误的tag后的号就找到通用答案了呢?
    有待于以后验证。google不知道是怎么定义这个问题的。


你可能感兴趣的:(Linux,&,Unix,android)