编译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