翻译自[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不会被和谐…… |
|