‘壹’ 如何单独编译安卓系统源码指定模块
android源码目录下的build/envsetup.sh文件,描述编译的命令
- m: Makes from the top of the tree.
- mm: Builds all of the moles in the current directory.
- mmm: Builds all of the moles in the supplied directories.
要想使用这些命令,首先需要在android源码根目录执行. build/envsetup.sh 脚本设置环境
m:编译所有的模块
mm:编译当前目录下的模块,当前目录下要有Android.mk文件
mmm:编译指定路径下的模块,指定路径下要有Android.mk文件
下面举个例子说明,假设我要编译android下的\hardware\libhardware_legacy\power模块,当前目录为源码根目录,方法如下:
1、. build/envsetup.sh
2、mmm hardware/libhardware_legacy/power/
编译完后 运行 make snod
会重新将你改过的模块打入到system.img中
‘贰’ 网上的那些给android手机刷机的“cm固件”是什么意思
这个是我在网上收来的材料 上面很详细的说明CM固件的由来 希望对你有用
CM系列固是网友们非常喜欢的安卓手机固件,但是CM与谷歌的Android又是什么关系呢。
众所周知,谷歌的Android是开源的,最早共享出源代码的时候,Android系统版本才发展到2.1与2.2的过渡时期,由于2.2版本中加入了JIT技术,可以大大提高安卓手机的运行效率,因此广大机友都对其给予厚望,但是谷歌共享的源代码仅能用于Nexus One这一款手机上,并不适合所有机型。因此CM应运而生。
CM的全称是CyanogenMod,他是一个Android爱好者组成的团队,他们通过Google共享的Android源代码,经过内核部分的修改和GPL协议开发出来了CM系列固件。CyanogenMod官方开发小组受于人数的制约,仅开发部分主流机型的CM系列固件,不过CyanogenMod官方开设了论坛,民间的高手也参与进来开发和维护CM系列固件,不断加入更多的机型支持,和CM系列固件维护。包括国内网友修改优化的各种固件,大多都是从CM固件中修改而来的。
如果没有CM团队,那么或许众多老款Android手机都只能停留在Android 1.6或2.1版本,很多全新功能都体验不到。也可以这样说,没有CyanogenMod
的全称是CyanogenMod,是一个基于开源Android系统,供某些手机使用的二级市场固件。它提供一些在官方Android系统或手机厂商没有提供的功能 ,例如:支持Free Lossless Audio Codec - FLAC (无损音频压缩编码)音频格式的音乐,多点触控, 从SD外置存储器运行程序,压缩缓存,大量APN的名单,重新启动功能,Wi-Fi无线网络支持,蓝牙,USB网络分享等。CyanogenMod也是第一个使用BFS作任务管理器的操作系统。也许上面的解释太过专业,简单来说,CM安卓系统就是一款基于安卓系统,进行修改定制的第三方系统。同时,CyanogenMod声称提供比官方固件版本更高性能和更可靠的系统固件。
根据CM系统的代号分类为:
CM5是Android 2.1的ROM
CM6是Android 2.2的ROM
CM7是Android 2.3的ROM
CM8是Android3.0的ROM
CM9是Android 4.0的ROM
CM10是Android 4.1的ROM
Cyanogen团队是目前全球最大的Android第三方编译团队,由于该团队曾先于google公司为很多手机,率先定制出稳定的1.6ROM而名声大噪。CM的ROM以开源、开放、稳定着称,目前仍有许多刷机发烧友使用其第三方定制ROM。
固件
目前(2012年)固件(firmware)一般存储于设备中的电可擦除只读存储器EEPROM(Electrically Erasable Programmable ROM)或FLASH芯片中,一般可由用户通过特定的刷新程序进行升级的程序。一般来说,担任着一个数码产品最基础、最底层工作的软件才可以称之为固件,比如计算机主板上的基本输入/输出系统BIOS(Basic Input/output System),在以前其实更多的专业人士叫它固件。
通常这些硬件内所保存的程序是无法被用户直接读出或修改的。在以前,一般情况下是没有必要对固件进行升级操作的,即使在固件内发现了严重的Bug也必须由专业人员带着写好程序的芯片把原来机器上的更换下来。早期固件芯片一般采用了ROM设计,它的Firmware代码是在生产过程中固化的,用任何手段都无法修改。
随着技术的不断发展,修改固件以适应不断更新的硬件环境成了用户们的迫切要求,所以,可重复写入的可编程可擦除只读存储器EPROM(Erasable Programmable ROM),EEPROM和flash出现了。这些芯片是可以重复刷写的,让固件得以修改和升级。
‘叁’ 如何自己编译android系统并制作刷机包
android系统制作刷机包方法:
【一】:下载安装最新版ROM助手(市场中有很多类似的制作工具,关键要求操作简单,功能强大),安装程序非常简单,只需在一只蘑菇首页内直接下载,并解压到自己的电脑安装即可。
【二】:如果已经下载了与机型匹配的ROM刷机包,那么现在可以直接打开ROM助手了,接下来绘制专属个性的完美刷机包就从这里开始吧。
【三】:打开软件后,它会自动升级到最新版本,另外打开主界面后,会直观简明的显示出它的所有功能,例如:性能优化,系统精简,预装APK,签名打包等等。提醒大家,不要贪心哦,要根据自己的需求点击需要操作的功能,如系统精简,然后进入操作界面,所有功能全部修改一遍也无妨,反正都是一键操作,省时省力。

‘肆’ 安卓系统(android)怎样才能成功编译安装‘make’命令
tar.gz(bz或bz2等) 一、安装1、打开一个SHELL,即终端2、用cd 命令进入源代码压缩包所在的目录3、根据压缩包类型解压缩文件(*代表压缩包名称) tar -zxvf ****.tar.gztar -jxvf ****.tar.bz(或bz2)4、用CD命令进入解压缩后的目录5、输入编译文件命令:./configure(有的压缩包已经 编译过,这一步可以省去) 6、然后是命令:make 7、再是安装文件命令:make install8、安装完毕如果安装了busybox命令就要这样用: busybox+空格+命令
‘伍’ 如何编译一个精简的Android系统
本次试验使用的android源码是4.2,编译的架构是mini-mips。
一、所做的工作
1、修改build/target/proct/mini.mk,去掉一些不必要的模块(例如Phone、DownloadManager等)
2、修改SystemServer.java,屏蔽一些service,让系统能够启动起来(例如,Location Manager、Telephony Registry)
3、修改dalvik/vm/native/dalvik_system_Zygote.cpp,注释掉因为检查不到外部存储而导致dalvik abort的地方 (这是googel的一个bug,在2013年1月份已解决,如果用这以后的代码不用修改此处)
4、修改WindowManagerService.java,把发送BOOT_TIMEOUT消息的时间改为0(之前为30秒)
二、系统优化后的效果(验证工作均在mips模拟器上进行)
1、节省运行内存,下面是全编译与mini编译的内存使用状态的对比
1)full build
MemTotal: 499360 kB
MemFree: 242064 kB
2)mini build
MemTotal: 499360 kB
MemFree: 395192 kB
2、缩短开机启动时间
在虚拟机上的启动时间
1)full build-29秒
2)mini build-14秒
3、只启动home程序,其余的应用程序均被移除
三、保留android的开发环境
1、adb,ddms,apkinstall等,都能正常工作
2、在eclipse中编写的android应用程序能够运行在该mini-android之上
四、开机自动启动指定应用程序
本次测试使用Gallery.apk应用程序,修改其源码后可以实现随系统的启动而自动启动的功能。
‘陆’ 我的手机上编译时间是11月10日,安卓更新时间是10月1日,这是什么意思
编译时间是手机系统软件版本编译完成的时间,新手机的系统编译时间通常会早于手机出厂和购买时间的。
‘柒’ 有手机的源代码,如何编译安卓4.4的系统
代码编译…
恐怕这个不是随随便便在这里几句话就能说明白的…
首先要下载安卓4.4的内核,
然后要把厂商的手机源代码编译进去,
还要自己写脚本,
很多都是很技术的活。
lz确定能hold住么?
‘捌’ Android系统如何运行动态编译的程序
把常用的应用程序编译到img文件中,就成了系统的一部分,用户不必自己安装,当然也卸载不了;
同时也可以删减系统自带的应用程序,精简系统;
1.\build\target\proct 目录下generic.mk文件:
Java代码 收藏代码
PRODUCT_PACKAGES := \
AccountAndSyncSettings \
DeskClock \
AlarmProvider \
Bluetooth \
Calculator \
Calendar \
Camera \
testMid \
CertInstaller \
DrmProvider \
Email \
Gallery3D \
LatinIME \
Launcher2 \
Mms \
Music \
我们添加一个testMid \ 应用名称。
2.把testMid包放入
\packages\apps 目录下,修改android.mk文件。
Java代码 收藏代码
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_PACKAGE_NAME := testMid
LOCAL_CERTIFICATE := platform
include $(BUILD_PACKAGE)
注:LOCAL_PACKAGE_NAME := testMid (包名必须和generic.mk中添加的相同)
编译源码,可以看到在
\out\target\proct\smdkv210\system\app
目录下生存了testMid.apk了。这时system.img也包含了此应用。
-------------------------------------------------------------------
特殊情况:有时,应用需要包含jar包,这时的app导入源码时会出现问题:
MODULE.TARGET.JAVA_LIBRARIES.libarity already defined by ... stop
由于 LOCAL_STATIC_JAVA_LIBRARIES := libarity 会引发错误信息。
目前解决方法是:
\build\core 目录下修改base_rules.mk
注释掉错误信息:
ifdef $(mole_id)
#$(error $(LOCAL_PATH): $(mole_id) already defined by $($(mole_id)))
endif
$(mole_id) := $(LOCAL_PATH)
--重新编译,这时可以通过了。
(2)、删除原厂(Telchips)带源码的应用程序,如DTV_DVBT
在/device/telechips/m801/device.mk
注释掉相应语句:
# PRODUCT_PACKAGES += \
# SampleDVBTPlayer \
同时,在/out/target/proct/m801/system/app 找到相应的.APK包,并删除
‘玖’ Android编译和运行在手机上使用的系统源码版本各是什么版本
如果app是和android系统一起进行编译,如果想让app的源码保持一套,却能够同时在android4.1和android4.2下进行编译。如果app源码与android系统的版本无关,那么,不存在问题。
但,如果app的实现代码与所依赖的framework的版本强相关,譬如,Location相关的API,在android4.1和android4.2上的差异比较大。应用如果是采用4.2的API来实现的,在配合android4.1系统编译时就会报错。此时,可以采用在Android.mk文件中,根据PLATFORM_SDK_VERSION的值,在编译时决定要编入哪些Java文件,源码中同时保留针对android4.1和android4.2的特有实现。
源码目录为:
‘拾’ 如何在Android系统源码的环境下用make来编译
第一个方法简单点,不过需要在Android系统源码的环境下用make来编译:
1. 在应用程序的AndroidManifest.xml中的manifest节点中加入
android:sharedUserId="android.uid.system"这个属性。
2. 修改Android.mk文件,加入LOCAL_CERTIFICATE := platform这一行
3. 使用mm命令来编译,生成的apk就有修改系统时间的权限了。