[HOW-TO] Compile AOSP Froyo [ROM] Latest AOSP Froyo for Sapphire - xda-developers

来源:百度文库 编辑:神马文学网 时间:2024/04/29 02:01:45
[HOW-TO] Compile AOSP Froyo + [ROM] Latest AOSP Froyo forSapphire
Tired of usingsomeone else wrapped up Android OS? If you are like me, you probablywould like to take control over what you are using on your device. Thereisn't any Market or any Google Applications on this. This is intendedfor developing applications and have a working phone using the latestAndroid OS for HTC Magic/Sapphire's.
The recommended system for downloading and compiling Android OS fromsource (AOSP - Android Open-Source Project) is Ubuntu. I have a Mac withSnow Leopard, so I use VirtualBox to run a virtual machine that hasUbuntu installed on it. Once you have Ubuntu installed on the virtualmachine, you need to prepare it so that you can download and compilesuccessfully AOSP.
First, make sure your OS is up-to-date, by running the Update Managerfrom the System>Administration menu. Once that is completed, go toApplications>Accessories and open Terminal.
Type this command to install all the needed libraries (this is all oneline) - Ubuntu 10.04 64Bits:
Code:
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
Type this command to install all the needed libraries (this isall one line) - Ubuntu 32Bits (thanks to Szusz!):
Edit your /etc/apt/sources.list and add these lines on the end:
Code:
deb pl.archive.ubuntu.com/ubuntu/ jaunty multiverse
deb pl.archive.ubuntu.com/ubuntu/ jaunty universe
Code:
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
Prepare the OS to run Java 5.0, which is the only compatibleJava version for compiling. Recent versions of Ubuntu don't need thisstep (10.04+).
Code:
sudo update-java-alternatives -s java-1.5.0-sun
Fix a dependency with X11 (64Bits):
Code:
sudo ln -s /usr/lib32/libX11.so.6 /usr/lib32/libX11.so
Fix a dependency with X11 (32Bits):
Code:
sudo ln -s /usr/lib/libX11.so.6 /usr/lib/libX11.so
That's it for the Operative system. Now the tool that Googleuses to control the source files is Repo. To install type this:
Code:
cd ~
mkdir bin
curl http://android.git.kernel.org/repo >~/bin/repo
chmod a+x ~/bin/repo
PATH="$HOME/bin:$PATH"
Now to download the source files, compile etc, all you need todo is to copy this text to a file in Ubuntu (to create one, just type"gedit android.sh"):
PHP Code:
#!/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.kernel.org/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.kernel.org/platform/manifest.git -b $BRANCH
git clone git://android.git.kernel.org/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.htc.com/google-io-device.html http://member.america.htc.com/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
Save the file and make it executable with:
Code:
chmod 755 android.sh
To run it, just type:
Code:
./android.sh
That's it! Now just follow the instructions. It should ask foryour name, email and then later to what device are you compiling. Thescript that you put on the text file is meant for Sapphire, so youshould choose option that has sapphire on it, US version or EU version,with ENG on it, which will make the compiled OS with root access.
In the end, you'll have a set of .img files, ready to be installed onyour device.
Using your favourite recovery, wipe everything before flashing the OSand then boot into fastboot. I'm pretty sure that if you really want tocompile your own OS, you already know how to use fastboot. But anyway:
fastboot flash boot boot.img
fastboot flash system system.img
fastboot flash userdata userdata.img
Reboot your device and enjoy your own OS.
If you run into trouble, let me know.
Some fixes you might be interested:
Enable JIT on DalvikVM
Edit dalvik/vm/Android.mk
Code:
ifeq ($(TARGET_ARCH_VARIANT),armv5te)
WITH_JIT := true
endif
Edit vendor/htc/sapphire/BoardConfigVendor.mk
Code:
WITH_JIT := true
ENABLE_JSC_JIT := true
Add support for audio+video recording on camera
Code:
We need to add BUILD_WITH_FULL_STAGEFRIGHT := true to your vendor's Buildxxx.mk to be able to record audio+video on the camera.
Another property that needs to be active:Thanks to Jubeh
If you want to run this on 32A's, you need to replace the kernel for a32A one and you should be good to go.
Fix the prelinks issues. Make sure to make a backup of the file(build/core/prelink-linux-arm.map) because I'm almost sure it will getofficially fixed in the future.
PHP Code:
# 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]
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
libsgl.so               0xAB800000 # [???]
libskia.so              0xAB100000 # [~7M]
librs_jni.so            0xAB000000 # [~1M]
libRS.so                0xA9E00000 # [~2M]
libjnigraphics.so       0xA9D00000 # [<64K]
libskiagl.so            0xA9C00000 # [~1M]
# audio
libFLAC.so              0xA9B00000 # [???]
libaudiopolicy.so       0xA9A00000 # [~1M]
libaudiopolicygeneric.so 0xA9900000 # [???]
libsoundpool.so         0xA9800000 # [~1M]
libgps.so               0xA9700000 # [~1M]
libspeech.so            0xA9600000 # [~1M]
liboemcamera.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 # [???]
libaudio.so             0xA7A00000 # [~1M]
libcamera.so            0xA7900000 # [~1M]
libsonivox.so           0xA7800000 # [~1M]
libvorbisidec.so        0xA7700000 # [~1M]
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]
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]
libqcomm_omx.so               0xA3800000 # [<64K]
# 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
How to fix the camera:
http://forum.xda-developers.com/show...&postcount=502Drivers part
http://forum.xda-developers.com/show...&postcount=447Kernel part
---------------------
In case you don't want to do it yourself, you can just download thispackage, and flash it from recovery.
AOSP FROYO2.2 v3.1
v3.1 - thanks to Jack for debugging it!
- Bootanimation is working!
- Wifi + Kernel from Cyanogen, as mine went boggus and I can't test itif it works without a device.
- Full APN list
- Known bugs: camera onscreen controls do FC sometimes. Switching fromcamera to camcorder works, but fc when reverting back.
v3
- Live wallpapers support.
- Sound recorder is now visible to the user to use.
- All available languages are included.
- Fixed missing sound files.
- Cyanogen's camera fixes are included. Really a pleasure to learn fromwhat he has done!
v2.1
- Fixed camera - Use v2 and replace the boot.img withthis one
What's on it:
v2
- Fixed GPS (was missing gps.conf + libgps.so was being allocated towrong prelink).
- Fixed all prelink errors by mapping all the libraries to the correctmmap banks (edited build/core/prelink-linux-arm.map).
- Replaced Gallery3D (not complete at sources) by old enhanced Gallery(multitouch working!)
- Added the Text-To-Speech libraries from source (got those from sdk.mk)
- Fixed missing sounds (Lock.ogg and Unlock.ogg in OriginalSounds.mk)
- Camera still not working, but now we don't have a prelink error, soshould be fixable by replacing liboemcamera.so by one that works - maybeCyanogen's??)
- Bootanimation still not working... (i've looked into it and I can'tfigure out why it doesn't!)
v1
- AOSP 2.2 Froyo
- WiFi + Kernel 2.6.32 up and running.
- 3D Drivers
- JIT + JIT JSC enabled
- Multi-touch zoom on browser
Doesn't work:
- No boot animation, screen stays blank while booting but you can checkit out using "adb logcat"
- Camera
- Gallery has missing mdpi graphics, I'll fix it later