分享

如何编译AOSP Froyo 最新G2 AOSP Froyo ROM - 羊头居士的鸟窝 - Zodiac Garden

 techres 2010-10-03
翻译自[HOW-TO] Compile AOSP Froyo + [ROM] Latest AOSP Froyo for Sapphire

说明:文章来自XDA-Developers,由羊头居士我翻译。文章内容仅作参考,不提供工具、 ROM等的分流。刷自行编译的ROM有风险,动手须谨慎。由于贸然操作导致的手机变砖,本人及原作者不负任何责任。

文章提要:大致介绍了 如何在Ubuntu环境下对最新的AOSP Froyo代码进行编译,并使之适用于G2 32B及32A。同时原作者提供了其编译的Froyo ROM。FroyoRider AOSP 2.2 即是基于此教程编译,如果以使用为目的建议直接使用FroyoRider。

提示:阅读 本文时,如果分栏没有关闭,建议点击右上方的“边栏”来关闭边栏。

正文:


对 使用别人制作的Android OS感到厌烦了?如果你像我一样,你大概希望能够自己掌控你的手机上使用的系统。这上面没有任何市场或者Google的应用及服务。这个ROM用于开发应 用程序,并使你拥有一个使用最新的适用于HTC Magic/Sapphire的Android系统的能够工作的手机。

下载和编译 Android系统源代码(从AOSP获得)建议使用Ubuntu系统。我有一个装了Snow Leopard的Mac,所以我使用VirtualBox来运行安装了Ubuntu的虚拟机。一旦你安装好了Ubuntu,你需要对他做好准备以便你能成 功下载编译AOSP代码。

首先,你要确定你的系统已经是最新的。你可以运行系统—管理中的升级管理器来确定。一旦升级完成,运行应用程序 —附件并打开终端。

键入下列命令来安装需要的库文件(下面的命令只有一行)——针对Ubuntu 10.04 64位版:

sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev valgrind lib32readline5-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev


使 用下面的方法来安装需要的库文件——针对Ubuntu 32位版(感谢Szusz!)

1.编辑/etc/apt /sources.list并且添加以下内容到最后:
deb pl.archive.ubuntu.com/ubuntu/ jaunty multiverse
deb pl.archive.ubuntu.com/ubuntu/ jaunty universe

2.在终端中运行下列命令(下面的命 令只有一行)
sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev valgrind libreadline5-dev gcc-multilib g++-multilib libc6-dev libncurses5-dev x11proto-core-dev libx11-dev libreadline5-dev libz-dev


使系统能 够运行Java5.0,这是编译所需要的兼容的Java版本。最近版本的Ubuntu不需要此步骤(10.04以上)。【居士注释:建议运行一下,不会有 问题,多上个保险嘛】执行以下命令:
sudo update-java-alternatives -s java-1.5.0-sun


修复一个X11的依赖关系:
64位:
sudo ln -s /usr/lib32/libX11.so.6 /usr/lib32/libX11.so

32位:
sudo ln -s /usr/lib/libX11.so.6 /usr/lib/libX11.so


操 作系统已经准备好了。接下来准备Google提供的管理源码的工具Repo。键入以下命令来安装:
cd ~
mkdir bin
curl http://android.git./repo >~/bin/repo
chmod a+x ~/bin/repo
PATH="$HOME/bin:$PATH"


现在开始进行下载源码、编译等工作,你 需要做的一切就是把下面的文本复制到Ubuntu的一个文件中(只要在终端中键入gedit android.sh即可):【居士注释:我的博客没有语法高亮……你可以先复制到一个有语法高亮的编辑器中检查一下】
#!/bin/bash
#Created by dferreira (lizned.arierref@gmail.com)
#Checkout and compile master repositories out of source.android.com

SOURCE_FOLDER=~/magicDroid
BRANCH="master";
KERNEL="android-msm-2.6.32";

#Check for Repo
if [ ! -f ~/bin/repo ]
then
    cd ~
    mkdir bin
    curl http://android.git./repo >~/bin/repo
    chmod a+x ~/bin/repo
    PATH="$HOME/bin:$PATH"
fi

#Create project folder
if [ ! -d $SOURCE_FOLDER ]
then
    mkdir $SOURCE_FOLDER
fi

cd $SOURCE_FOLDER

#clean old compiled files, there can be new stuff!
make installclean
make clean

#Get updated source files from AOSP
repo init -u git://android.git./platform/manifest.git -b $BRANCH
git clone git://android.git./kernel/msm.git -b $KERNEL #clone latest kernel project
cd $SOURCE_FOLDER/msm
git pull #check if anything new
cd $SOURCE_FOLDER
repo sync #update repo's

#Get HTC drivers if they don't exist already on folder
cd ~/magicDroid
if [ ! -f sapphire_update.zip ]
then    
    wget --referer=http://developer./google-io-device.html http://member.america./download/RomCode/ADP/signed-google_ion-ota-14721.zip?
    mv signed-google_ion-ota-14721.zip sapphire_update.zip
fi

#unzip the proprietary files from HTC for Sapphire
if [ ! -d vendor/htc/sapphire/proprietary ]
then
    cd $SOURCE_FOLDER/device/htc/sapphire/
    ./unzip-files.sh
fi

#Compile latest kernel
cd $SOURCE_FOLDER/msm
make ARCH=arm msm_defconfig
make ARCH=arm CROSS_COMPILE=$SOURCE_FOLDER/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- zImage -j4

#copy kernel to source if success!
if [ -f $SOURCE_FOLDER/msm/arch/arm/boot/zImage ]
then
    cp $SOURCE_FOLDER/msm/arch/arm/boot/zImage $SOURCE_FOLDER/device/htc/dream-sapphire/kernel
fi

#Compile wifi module to match the kernel
cd $SOURCE_FOLDER/system/wlan/ti/sta_dk_4_0_4_32
make KERNEL_DIR=$SOURCE_FOLDER/msm/ ARCH=arm CROSS_COMPILE=$SOURCE_FOLDER/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- -j4

#copy updated wlan.ko that matches the kernel
if [ -f $SOURCE_FOLDER/system/wlan/ti/sta_dk_4_0_4_32/wlan.ko ]
then
    cp $SOURCE_FOLDER/system/wlan/ti/sta_dk_4_0_4_32/wlan.ko $SOURCE_FOLDER/device/htc/dream-sapphire/wlan.ko
fi

#setup compiling environment and build images
cd $SOURCE_FOLDER
. build/envsetup.sh

#cd $SOURCE_FOLDER
lunch
make -j4

#get to compiled folder
cd $SOURCE_FOLDER/out/target/product/sapphire/
echo 'Your files ready for flashing are here:'
ls *.img  


保存 这个文件,然后执行下面的命令使它可执行:
chmod 755 android.sh


键 入下面的命令来运行它:
./android.sh


好了!只要按照以上的步骤运 行就行了。它会询问你的名字、Email地址然后问你你将编译到什么设备上。这个脚本适用于Sapphire,所以你应该选择有sapphire的选 项,US版本或EU版本,包括了ENG的标志,这样编译完成后能得到root权限。

最后,你将得到一系列.img文件,这些可以安装到你 的设备上。

在刷写系统之前,先使用你喜欢的Recovery,wipe一下所有的东西,然后重启到fastboot模式。我相信你既然想 编译你自己的系统,你一定会使用fastboot。但是以防万一:
fastboot flash boot boot.img
fastboot flash system system.img
fastboot flash userdata userdata.img

重 启你的设备然后享受你自己的系统吧~

如果你遇到任何问题,请告诉我。


一些你可能感兴趣的修复项:
在 DalvikVM上开启JIT
编辑dalvik/vm/Android.mk:
ifeq ($(TARGET_ARCH_VARIANT),armv5te)
    WITH_JIT := true
endif

编 辑vendor/htc/sapphire/BoardConfigVendor.mk:
WITH_JIT := true
ENABLE_JSC_JIT := true


如果你想在32A上运行这个系统, 你需要用32A的核心来替换这个核心,然后你应该就能顺利运行了。【居士注释:怎么替换?我不懂……可是作者就说了这一句……】

修 复预连接(prelink)的问题。确保你备份好了以下文件(build/core/prelink-linux-arm.map),因为我确信以后官方 会修复这个问题。
【居士注释:真TM长啊……】
# 0xC0000000 - 0xFFFFFFFF Kernel
# 0xB0100000 - 0xBFFFFFFF Thread 0 Stack
# 0xB0000000 - 0xB00FFFFF Linker
# 0xA0000000 - 0xBFFFFFFF Prelinked System Libraries
# 0x90000000 - 0x9FFFFFFF Prelinked App Libraries
# 0x80000000 - 0x8FFFFFFF Non-prelinked Libraries
# 0x40000000 - 0x7FFFFFFF mmap'd stuff
# 0x10000000 - 0x3FFFFFFF Thread Stacks
# 0x00000000 - 0x0FFFFFFF .text / .data / heap

# Note: The general rule is that libraries should be aligned on 1MB
# boundaries. For ease of updating this file, you will find a comment
# on each line, indicating the observed size of the library, which is
# one of:
#
#     [<64K] observed to be less than 64K
#     [~1M] rounded up, one megabyte (similarly for other sizes)
#     [???] no size observed, assumed to be one megabyte

# core system libraries
libdl.so                0xAFF00000 # [<64K]
libc.so                 0xAFD00000 # [~2M]
libstdc++.so            0xAFC00000 # [<64K]
libm.so                 0xAFB00000 # [~1M]
liblog.so               0xAFA00000 # [<64K]
libcutils.so            0xAF900000 # [~1M]
libthread_db.so         0xAF800000 # [<64K]
libz.so                 0xAF700000 # [~1M]
libevent.so             0xAF600000 # [???]
libssl.so               0xAF400000 # [~2M]
libcrypto.so            0xAF000000 # [~4M]
libsysutils.so          0xAEF00000 # [~1M]

# bluetooth
liba2dp.so              0xAEE00000 # [~1M]
audio.so                0xAED00000 # [~1M]
input.so                0xAEC00000 # [~1M]
libbluetoothd.so        0xAEA00000 # [~2M]
libbluedroid.so         0xAE900000 # [<64K]
libbluetooth.so         0xAE800000 # [~1M]
libdbus.so              0xAE700000 # [~1M]

# extended system libraries
libril.so               0xAE600000 # [~1M]
libreference-ril.so     0xAE500000 # [~1M]
libwpa_client.so        0xAE400000 # [<64K]
libnetutils.so          0xAE300000 # [~1M]

# core dalvik runtime support
libandroid_servers.so   0xAE200000 # [~1M]
libicuuc.so             0xADE00000 # [~4M]
libicui18n.so           0xAD900000 # [~5M]
libandroid_runtime.so   0xAD300000 # [~6M]
libnativehelper.so      0xAD100000 # [~2M]
libdvm-ARM.so           0xAD000000 # [???]
libdvm.so               0xACA00000 # [~6M]
# Note: libicudata.so intentionally omitted

# graphics
libpixelflinger.so      0xAC900000 # [~1M]
# libcorecg is for backward-compatibility with donut
libcorecg.so            0xAC800000 # [???]
libsurfaceflinger_client.so 0xAC700000 # [~1M]
libsurfaceflinger.so    0xAC500000 # [~2M]
libGLES_android.so      0xAC400000 # [~1M]
libagl.so               0xAC300000 # [???]

libGLESv1_CM.so         0xAC200000 # [~1M]
libGLESv2.so            0xAC100000 # [~1M]
libsgl.so               0xAC000000 # [???] 0xAB800000
#libOpenVG_CM.so         0xAC000000 # [???]
#libOpenVGU_CM.so        0xABF00000 # [???]
libEGL.so               0xABE00000 # [~1M]
libETC1.so              0xABD00000 # [<64K]

libacc.so               0xABC00000 # [~1M]

libexif.so              0xABB00000 # [~1M]
libcamera_client.so     0xABA80000 # [~1M]
libui.so                0xAB900000 # [~1M]
# libsgl is for backward-compatibility with donut
libskia.so              0xAB100000 # [~7M]
librs_jni.so            0xAB000000 # [~1M]
libRS.so                0xA9E00000 # [~2M]
libjnigraphics.so       0xA9D00000 # [<64K]
libskiagl.so            0xA9C00000 # [~1M]

# audio
libvorbisidec.so        0xA9B00000 # [~1M] 0xA9400000
#libFLAC.so              0xA9B00000 # [???]
libaudiopolicy.so       0xA9A00000 # [~1M]
libaudiopolicygeneric.so 0xA9900000 # [???]
libsoundpool.so         0xA9800000 # [~1M]
libgps.so               0xA9700000 # [~1M] 0xA7A00000
#libaudio.so             0xA9700000 # [~1M] not prelinked for msm
libspeech.so            0xA9600000 # [~1M]
libsonivox.so           0xA9500000 # [~1M]
libqcamera.so            0xA9400000 # [~1M]
libmedia_jni.so         0xA9300000 # [~1M]
libmediaplayerservice.so 0xA9200000 # [~1M]
libmedia.so             0xA9000000 # [~2M]
libFFTEm.so             0xA8F00000 # [~1M]
libSR_AudioIn.so        0xA8E00000 # [~1M] for external/srec
libaudioflinger.so      0xA8D00000 # [~1M]

# assorted system libraries
libsqlite.so            0xA8B00000 # [~2M]
libexpat.so             0xA8A00000 # [~1M]
libwebcore.so           0xA8300000 # [~7M]
libbinder.so            0xA8200000 # [~1M]
libutils.so             0xA8100000 # [~1M]
libcameraservice.so     0xA8000000 # [~1M]
libhardware.so          0xA7F00000 # [<64K]
libhardware_legacy.so   0xA7E00000 # [~1M]
libapp_process.so       0xA7D00000 # [???]
libsystem_server.so     0xA7C00000 # [~1M]
libime.so               0xA7B00000 # [???]
libcamera.so            0xA7900000 # [~1M]
liboemcamera.so         0xA7700000 # [~2M]
libdiskconfig.so        0xA7600000 # [<64K]
libemoji.so             0xA7500000 # [<64K]
libjni_latinime.so      0xA7400000 # [~1M]
libjni_pinyinime.so     0xA7300000 # [~1M]
libttssynthproxy.so     0xA7200000 # [~1M] for frameworks/base
libttspico.so           0xA7000000 # [~2M] for external/svox

# pv libraries
libpvasf.so                    0xA6F00000 # [???]
libpvasfreg.so                 0xA6E00000 # [???]
#libomx_sharedlibrary.so        0xA6D00000 # [~1M]
#libopencore_download.so        0xA6C00000 # [~1M]
#libopencore_downloadreg.so     0xA6B00000 # [~1M]
#libopencore_net_support.so     0xA6800000 # [~3M]
#libopencore_rtsp.so            0xA6200000 # [~6M]
libopencore_rtspreg.so         0xA6100000 # [~1M]
libopencore_author.so          0xA5D00000 # [~4M]
#libomx_aacdec_sharedlibrary.so 0xA5B00000 # [~2M]
libqcomm_omx.so               0xA5A00000 # [<64K] #0xA3800000
#libomx_amrdec_sharedlibrary.so 0xA5A00000 # [~1M]
#libomx_amrenc_sharedlibrary.so 0xA5900000 # [~1M]
#libomx_avcdec_sharedlibrary.so 0xA5800000 # [~1M]
#libomx_avcenc_sharedlibrary.so 0xA5700000 # [???]
#libomx_m4vdec_sharedlibrary.so 0xA5600000 # [~1M]
#libomx_m4venc_sharedlibrary.so 0xA5500000 # [???]
#libomx_mp3dec_sharedlibrary.so 0xA5400000 # [~1M]
#libopencore_mp4local.so        0xA5200000 # [~2M]
#libopencore_mp4localreg.so     0xA5100000 # [~1M]
libopencore_player.so          0xA4800000 # [~9M]

# opencore hardware support
libmm-adspsvc.so              0xA4700000 # [<64K]
#libOmxCore.so                 0xA4600000 # [<64K]
#libOmxMpeg4Dec.so             0xA4500000 # [~1M]
#libOmxH264Dec.so              0xA4400000 # [~1M]
#libOmxVidEnc.so               0xA4300000 # [~1M]
libopencorehw.so              0xA4200000 # [~1M]
libOmxVdec.so                 0xA4100000 # [~1M]
libmm-omxcore.so              0xA4000000 # [<64K]

# pv libraries
libopencore_common.so         0xA3900000 # [~7M]

# stagefright libraries
libstagefright_amrnb_common.so     0xA3700000 # [~1M]
libstagefright_avc_common.so       0xA3600000 # [~1M]
libstagefright_color_conversion.so 0xA3500000 # [<64K]
libstagefright_omx.so              0xA3400000 # [~1M]
libstagefrighthw.so                0xA3300000 # [~1M]
libstagefright.so                  0xA2F00000 # [~4M]

# libraries for specific hardware
libgsl.so               0xA2E00000 # [~1M]
libhtc_acoustic.so      0xA2D00000 # [<64K]
libhtc_ril.so           0xA2C00000 # [~1M]
liblvmxipc.so           0xA2B00000 # [~1M] for vendor/nxp
libreference-cdma-sms.so 0xA2A00000 # [<64K] for hardware/ril

# libraries for specific apps or temporary libraries
libcam_ipl.so           0x9F000000 # [???]
libwbxml.so             0x9EF00000 # [???]
libwbxml_jni.so         0x9EE00000 # [~1M]
libxml2wbxml.so         0x9EB00000 # [~1M]
libdrm1.so              0x9EA00000 # [~1M]
libdrm1_jni.so          0x9E900000 # [<64K]
libwapcore.so           0x9E800000 # [???]
libstreetview.so        0x9E700000 # [???]
libwapbrowsertest.so    0x9E600000 # [???]
libminiglobe.so         0x9E500000 # [???]
libearth.so             0x9E400000 # [???]
libembunit.so           0x9E300000 # [<64K]
libneon.so              0x9E200000 # [???]
libjni_example.so       0x9E100000 # [???]
libjni_load_test.so     0x9E000000 # [???]
libjni_lib_test.so      0x9DF00000 # [???]
librunperf.so           0x9DE00000 # [???]
libctest.so             0x9DD00000 # [<64K]
libUAPI_jni.so          0x9DC00000 # [???]
librpc.so               0x9DB00000 # [~1M]
libtrace_test.so        0x9DA00000 # [???]
libsrec_jni.so          0x9D800000 # [~2M]
libjpeg.so              0x9D700000 # [~1M]
libiprouteutil.so       0x9D600000 # [~1M] for external/iproute2
libnetlink.so           0x9D500000 # [<64K] for external/iproute2
libpagemap.so           0x9D400000 # [<64K] for system/extras/libpagemap
libstlport.so           0x9D100000 # [~3M] for external/stlport
libzxing.so             0x9D000000 # [<64K] for goggles
libinterstitial.so      0x9CF00000 # [<64K] for goggles
liblept.so              0x9CA00000 # [~5M] for external/leptonica



为了防止你不知道该怎么做,你可以直接下载下面的文件,解压缩然后使用 fastboot刷写。
AOSP FROYO 2.2 V2

fastboot flash system system.img
fastboot flash boot boot.img
fastboot flash userdata userdata.img

主要特点:
v2
-修复了GPS问题(是由于错误的预连接问题导致找不到gps.conf和 libgps.so)
-修复了所有预连接错误(编辑了build/core/prelink-linux-arm.map)
-用旧的集成 的图库替换了3D图库(源代码不完整,旧的可以使用多点触摸)
-从源代码里添加了TTS库(从sdk.mk中取得)
-修复了丢失的音效 (在OriginalSounds.mk中的Lock.ogg和Unlock.ogg)
-相机仍然不工作,但是现在我们没有预连接的错误了,所以 通过替换liboemcamera.so应该可以修复这个问题(Cyanogen的大概能好用?)
-开机动画仍然不好用……(我正在检查,但是我 搞不懂为什么不好用!)

v1
-AOSP 2.2 Froyo
-WiFi + Kernel 2.6.32 可以运行
-3D 驱动
-JIT + JIT JSC开启
-浏览器支持多点缩放

不好用的部分:
-没有开机动画,启动时屏幕空白。 但是你可以使用adb logcat来检查系统。
-相机
-图库没有mdpi图形支持,我不久就修复这个问题。


居 士注释:原帖有图,我就不转了。反正XDA不会被和谐……

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多