CM10.1到三星wave的移植

    这个工作很早就在做了,只是一直懒得记录,现在整理下来。


    三星wave系列的手机采用的是Bada OS,各种程序各种没有,我于2011年9月购入Samsung Wave II(GT-S8530),从此,折腾的旅程开始了。

    国内的各个Bada论坛基本都已死,三星也在2012年直言放弃该系统,故我只能跟随国外XDA大神的脚步,开始了看满屏幕英文的旅程。XDA论坛上还活跃着很多的开发者和用户,其网址为http://forum.xda-developers.com/forumdisplay.php?f=919。 XDA上对于Wave系列手机Android项目的移植始于2011年,期间易手好几代开发者,到现在手机的基本功能均已满足(电话、信息、WIFI、蓝牙、移动数据……)。由于水平有限,我没能够对该项目做出贡献,但熟悉了android源码编译的过程,乐在其中。

    闲话少表,开始记录折腾之旅。

1.编译环境的搭建

    进行android源码编译的基础条件就是有一台装有linux或者mac的电脑,个人现在用的最顺手的是国内优秀团队制作的linux deepin12.12.1。编译环境的搭建完全参考google在AOSP项目官网的说明http://source.android.com/source/building.html,ubuntu系列的linux系统基本都预装了所需的应用,需要手动安装的Sun Java(哦,现在属于oracle了)的JDK1.6和Git1.7。Git的安装在新立得软件包管理器中安装,简单方便。JDK1.6的安装就稍麻烦了:

    首先,从http://www.oracle.com/中下载jdk6,我的版本是1.6.0_45,将下载的jdk-6u45-linux-x64.bin移动到用户主文件夹,文件右键>属性>权限更改为“允许作为程序执行文件”,终端运行 ./jdk-6u45-linux-x64.bin。将会解压出一个文件夹“jdk1.6.0_45”,终端运行 

        sudo mkdir /usr/lib/jvm/

        sudo mkdir /usr/lib/jvm/java/

        sudo  cp -r jdk1.6.0_45 /usr/lib/jvm/java/jdk1.6.0_45
    此时,jdk已安装完毕,下面进行配置


    终端执行:  sudo gedit /etc/profile
    在environment中修改,在文本最后添加
        export JAVA_HOME=/usr/lib/jvm/java/jdk1.6.0_45
        export JRE_HOME=/usr/lib/jvm/java/jdk1.6.0_45/jre  
        export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH  
        export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH 

        export PATH=~/bin:$PATH

    保存文件,然后执行:source /etc/profile。使其生效。

    由于ubuntu中可能会有默认的jdk,如openjdk,所以,为了使默认使用的是我们安装的jdk,还要进行如下工作。
    终端执行:
        update-alternatives --install /usr/bin/java java /usr/lib/jvm/java/jdk1.6.0_45/bin/java 300
        update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java/jdk1.6.0_45/bin/javac 300

     通过这一步将我们安装的jdk加入java选单。
    然后执行:
        update-alternatives --config java
    通过这一步选择系统默认的jdk
    这样,再在终端中分别输入
        java -version  javac -version   以检查版本
    显示

        java version "1.6.0_45"
       Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
       Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)

       javac 1.6.0_45

    JDK配置完成。

2.源代码的下载

    按照AOSP讲述步骤,下载repo到主文件夹bin目录并加入PATH。

    主文件夹下创建工程目录wave,进行repo init,终端执行:

        repo init -u git://github.com/CyanogenMod/android.git -b cm-10.1

    创建localmanifest.xml,新的repo版本识别目录有所改变,于是执行:

        mkdir ./repo/local_manifests

        cd .repo/local_manifests
        wget https://raw.github.com/Badadroid/android_wave_local_manifest/cm-10.1/local_manifest.xml

    localmanifest.xml文件被下载到~/wave/.repo/local_manifests文件夹内。

    为了方便进行源码的同步操作,我在wave目录下添加了repo断开自动重连的脚本文件,在wave目录下创建新文件,命名为repo.sh,在其内填入

        #!/bin/sh
        repo sync
        while [ $? -ne 0 ]
        do
        repo sync
        done

    保存,右键>属性>权限>允许作为程序执行文件,OK

    然后就可以进行源代码的下载同步了,终端执行:

        cd ~/wave

        ./repo.sh

    耐心等待吧,CM10.1的源代码大概有10G左右,开机下载一夜即完成。


3.源代码的编译

    源代码下载完成后,终于可以进行编译工作了,我同样制作了脚本文件build.sh,内容如下

        cd ~/wave/
        . build/envsetup.sh
        brunch wave

    编译,终端执行:

        cd ~/wave/

        ./build.sh

    出现错误,提示缺少schedtool,在新立得中安装即可。整个编译过程大约需要4个小时。(Intel i3 M330,4GB RAM)


阅读更多

没有更多推荐了,返回首页