編譯htc
㈠ google 的android系統應用層方面為什麼不選擇c或c++語言而選擇java,雖然java一次編譯到處運行,
C和C++編銀蔽譯後的二進制文件是和CPU架構相關的,應用層用java來做,這樣就把平台的差異性余手交給了底層,所以這樣就為應用層的開發帶來了好處,使得android的普及占據了很大的優勢性!
「只要在android這一個系統上能運行就可以了啊」,如果android使用C、C++這種平和硬體相關性很強的語言,那麼應用層的開發必然也要考慮硬體平台了,那麼開發一個應用層軟體,必然會出現ARM版本、MIPS版本、X86版本,或者htc XXX版、聯想 XXX版,moto XXX版,那麼給用戶帶來的是無盡的麻煩,用戶肯鋒毀州定會說,這個android太爛了,其實這樣的現象已經出現過了,現在很多非android的手機軟體都分平台的,比如最常用的手機QQ,下載的時候必須選你的手機是那種吧,但是就有一種java版不區分手機平台的。
另外,現在的jvm已經很強了(並且會更強:)),加上硬體平台的快速更代,效率方面已經不是主要瓶頸了。
所以,google android選擇了java。
㈡ 如何編譯一個可以燒寫進手機中的ROM,Android安卓開發者
首先.還是跟其它文章講的一樣.先下載ANDORID的源碼.在下源碼之前.請看下面第一步
----------
增加代碼,下真機配置
1
vim .repo/local_manifest.xml
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project path="kernel" name="kernel/msm" revision="refs/heads/android-msm-2.6.29"/>
<project path="hardware/htc/dream" name="platform/hardware/htc/dream" revision="master"/>
</manifest>
增加上面這段代碼,為一個配置.告訴伺服器.我們下的代碼.是要裝進真機的.
(就為了多下載一個KERNEL下來。。還有下載DREAM的真機配置參數..)
小哈在這里折騰了很久.很久..非常久..回憶起來內牛滿面
-----
下相關的代碼
2.
repo sync
-----
3.
vim env_rc
加入:
export EMU=/home/coconut/cupcake/out/host/linux-x86/bin
export ARCH=arm
export CROSS_COMPILE=arm-eabi-
export PATH=$PATH:/home/coconut/cupcake/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin:${EMU}
source env_rc
4.
編譯內核及無線網路驅動
$ cd $ANDROID/kernel
$ make ARCH=arm CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- msm_defconfig # 設定默認的msm配置
#編譯內核
make ARCH=arm CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-
#編譯無線網路驅動
cd $ANDROID/system/wlan/ti/sta_dk_4_0_4_32
make ARCH=arm CROSS_COMPILE=$ANDROID/prebuilt/linux-86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- KERNEL_DIR=$ANDROID/kernel
//內核拷到目錄下
$ cp $ANDROID/kernel/arch/arm/boot/zImage $ANDROID/vendor/htc/dream-open/kernel
$ cp $ANDROID/system/wlan/ti/sta_dk_4_0_4_32/wlan.ko $ANDROID/vendor/htc/dream-open/wlan.ko
5.
在HTC網站(developer.htc.com/adp.html)
下載名為signed-dream_devphone_userdebug-ota-14721.zip的包,並把它放在$ANDROID目錄下
$ cd $ANDROID
$ source build/envsetup.sh
$ lunch aosp_dream_us-eng # 指明機型
這樣編譯出來.就會在OUT下出來一個DREAM_OPEN的目錄.裡面就有相關的鏡像文件了.
$ cd vendor/htc/dream-open
$ ./unzip-files.sh # 解壓htc相關驅動
$ cd $ANDROID
$ vi buildspec.mk # 新建配置文件
----
Vim htc_dream.mk
vim /oracle/android/src/vendor/htc/dream-open/htc_dream.mk
在頭部增加
PRODUCT_PACKAGES := \
Calculator \
Email \
ImProvider \
SdkSetup \
VoiceDialer
完成。
回到根目錄
cd /oracle/android/src
vim buildspec.mk
加入( 2010.7.7 不需要加入):
#TARGET_PRODUCT:=htc_dream
#TARGET_PREBUILT_KERNEL:=kernel/arch/arm/boot/zImage
增加:
CUSTOM_LOCALES:=zh_CN
然後:
其中增加環境:
ubuntu 8.10 , sudo apt-get libelf-dev
make clean
// 保證PC有 1280 內存, 加上 1000 SWAP空間..虛擬機也是如此.
然後開始編譯 BOOT.IMG SYSTEM.IMG USERDATA.IMG:
make -j2
接下來
mmm -B $ANDROID/packages/apps/Luancher/ snod
cd out/target/proct/dream-open/
//先測試:
emulator -system . -kernel ~/cupcake/prebuilt/android-arm/kernel/kernel-qemu -data userdata.img
因為出來了BOOT.IMG.這個是真機的..所以不能用BOOT做為內核.要用模擬器來做內核.
//然後開始燒機
fastboot flash boot boot.img
fastboot flash system system.img
fastboot flash userdata userdata.img
fastboot reboot
㈢ 用htc官網的內核源碼可以用於編譯cm嗎
不能。源代碼是不太一樣的。
具體說來就比較復雜了。xda-developer那個網站的人有不少懂得 但是英文的
㈣ 如何移植android2.1源代碼到自己的手機上
一,准備好android2.1源碼編譯環境以及手機USB調試環境。
二,將手機上硬體驅動程序以及相關的配置文件通過ADB命令保存好。
三,針對不同的手機機型,製作相應的vendor配置文件。
四,編譯源碼。
五,通過手機提供的bootloader刷機或者直接以recovery的方式更新ROM。
在以上五個步驟中,其中最難處理的便是第2個步驟,這個步驟需要熟悉每個手機機型的硬體參數,並且能夠在手機上找到相關的驅動程序以及了解他們如何配置。而CyanogenMod團隊公布的源碼當中,己經將相關的工作做好了,編譯源碼之前僅僅需要執行相應的shell命令,便可順利的下載相應的手機驅動程序以及配置文件。
下面是移植步驟,供參考:
一,首先需要下載CyanogenMod 5.0.8的源碼:
$ mkdir android-cm5
$ cd android-cm5
$ repo init -u git://github.com/CyanogenMod/android.git -b eclair
$ repo sync
二,下載CyanogenMod需要的一些共同文件,如果想最終版本中不需要這些APK,也可以通過配置/vendor/cyanogen/cyanogen.mk文件將這些需要的APK COPY命令注釋掉。
$ cd vendor/cyanogen/
$ ./get-rommanager #下載一個RomManager.apk包,主要是刷ROM用的。我沒用過。
$ ./get-google-files #其它的一些google開發的android apk包,我也沒有用過!
三,下載針對htc legend(g6)的vendor.
$ cd ../../vendor/htc
$ git clone git://github.com/aleho/android_vendor_htc_legend.git #下載針對htc legend(g6)手機的vendor,裡麵包括相關的配置參數,以及從手機上下載驅動程序的SHELL命令。
$ mv android_vendor_htc_legend/ legend
$ cd legend
$ ./extract-files.sh #確保這個命令執行將你的手機連接好電腦並且開了手機USB調試,adb命令可以連接手機。這個過程主要是下載htc legend(g6)驅動程序以及配置文件。
四,針對CyanogenMod 5.0.8源碼打上htc legend(g6)的補丁包,這個補丁包主要是wifi和觸摸屏的,如果不做,觸摸屏將無法觸摸以及wifi功能無法啟動。
㈤ CM9的CM9.0
CM9也是CyanogenMod 9.0的簡稱。
CM:CyanogenMod,是一個免費的、團隊協作發布的Android 第三方編譯ROM的簡稱。
CM5是Android 2.1的ROM
CM6是Android 2.2的ROM
CM7是Android 2.3的ROM
CM8是Android3.0的ROM
CM9是Android 4.0的ROM
CyanogenMod是一個基於開源Android系統,供某些手機使用的二級市場固件。它提供一些在官方Android系統或手機廠商沒有提供的功能 ,例如:支持Free Lossless Audio Codec - FLAC (無損音頻壓縮編碼)音頻格式的音樂,多點觸控, 從SD外置存儲器運行程序,壓縮緩存,大量APN的名單,重新啟動功能,Wi-Fi無線網路支持,藍牙,USB網路分享等。CyanogenMod也是第一個使用BFS作任務管理器的操作系統。
CyanogenMod聲稱提供比官方固件版本更高性能和更可靠。
2008年9月HTC Dream電話發布後, 一種由Android社區發現其中一個可以在Android的Linux的子系統得到特權控制 rooting(也稱為 root access)的方法. 這個發現, 結合了Android開源的性質, 讓手機的固件可以隨意進行修改和重新安裝到手機。某些手機並不需要進行修改, 如Android開發手機和Nexus One, 這些用作開發用途的手機上。
現時,CyanogenMod固件是基於Android 2.2,也有大量由CyanogenMod的代碼被加入了。CyanogenMod的自定部分本來是由Cyanogen (Steve Kondik)編寫,不過加入了由xda-developers社區編寫的代碼(如已強化的主畫面, 已強化的調用程序和已強化的網頁瀏覽器)和其他的程序(如busybox)。
一個叫CyanogenMod Updater的程序提醒CyanogenMod用戶有新版本的CyanogenMod及安裝到他們的電話。用戶可以在Android Market下載該程序。
Cyanogen團隊是目前全球最大的Android第三方編譯團隊,由於該團隊曾先於google公司為很多手機 率先定製出穩定的1.6ROM而名聲大噪。CM的ROM以開源、開放、穩定著稱,仍有許多刷機發燒友使用其第三方定製ROM。 CyanogenMod
版本 Android版本 發行日期 3.1 Android 1.5 (Cupcake) 2009 3.2 2009 3.3.x 2009 3.4.x 2009 3.5.x 2009 3.6.x 2009 3.9.x 2009 4.0.x Android 1.6 (Donut) 2009 4.1.x 2009 4.2.x 2009 5.0.0 Android 2.0 / 2.1 2010-02-14 5.0.1 2010 5.0.2 2010 5.0.3.x 2010 5.0.4.x 2010-02-27 5.0.5.x 2010-03-19 5.0.6 2010-04-16 5.0.7 2010-05-25 5.0.8 2010-07-19 6.0.x Android 2.2 (Froyo) 2010-08-28 6.1.x 2010-12-06 7.1 Android 2.3.7 2011-10-11 9.0 Android 4.0 2012-03-27