本次试验使用的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应用程序,修改其源码后可以实现随系统的启动而自动启动的功能。
B. 编译安卓5.0源码使用什么系统
1、ubuntu需要安装openjdk 7
2、 如果没有openjdk 7的话,需要下载jdk7,然后修改 build/core/main.mk 177行,将requires_openjdk := true 改成false
3 、编译,如果出现chromium_org的问题,将 external/chromium_org/Android.mk 中 18行添加一个PRODUCT_PREBUILT_WEBVIEWCHROMIUM :=yes
4 、然后初始化编译环境
5 、make systemimage
不淡定的朋友赶紧开工吧!
C. 如何单独编译安卓系统源码指定模块
例如:你不想编译music进image中,你就在该文件里PRODUCT_PACKAGES:=这一项下的Music删除就可以了同理,你想把自己的app编译进image中,你先写好编译用的Android.mk文件,然后去到上面所说的文件里在PRODUCT_PACKAGES:=这一项添加对应的app包名一般来说,只要改这么一个文件就足够了。但是如果以上编译后发现还是编译到了image里面,那么它很有可能是一个已经编译好的apk文件预装到image里面去了,也是以我的sdk为例,进入device/产品目录/common/apk下看看有没有.apk文件,我的sdk里面这个目录下的.apk文件是全部预装到system/app里面的还有一个目录:/device/产品目录/common/preinstallapk这个目录里的apk也是预装到image里面去,只是并不是预装到system/app而已也就是说,你还要看看你不想编译进image里的app是不是预装进去,如果是预装进去的话,只要在对应目录下把该apk文件删除了就好了希望这些能帮到你!
D. 如何把应用程序app编译进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包,并删除
E. 如何把应用程序编译进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包,并删除。
F. 如何将apk源码编译进android系统
把源码放到packages/apps目录下
写个mk文件,放到你的app的工程根目录下
在源码中mmm这个app的路径
G. 安卓系统(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+空格+命令
H. 有手机的源代码,如何编译安卓4.4的系统
代码编译…
恐怕这个不是随随便便在这里几句话就能说明白的…
首先要下载安卓4.4的内核,
然后要把厂商的手机源代码编译进去,
还要自己写脚本,
很多都是很技术的活。
lz确定能hold住么?
I. 如何自己编译android系统并制作刷机包
android系统制作刷机包方法:
【一】:下载安装最新版ROM助手(市场中有很多类似的制作工具,关键要求操作简单,功能强大),安装程序非常简单,只需在一只蘑菇首页内直接下载,并解压到自己的电脑安装即可。
【二】:如果已经下载了与机型匹配的ROM刷机包,那么现在可以直接打开ROM助手了,接下来绘制专属个性的完美刷机包就从这里开始吧。
【三】:打开软件后,它会自动升级到最新版本,另外打开主界面后,会直观简明的显示出它的所有功能,例如:性能优化,系统精简,预装APK,签名打包等等。提醒大家,不要贪心哦,要根据自己的需求点击需要操作的功能,如系统精简,然后进入操作界面,所有功能全部修改一遍也无妨,反正都是一键操作,省时省力。
J. android系统如何在windows下编译
目前官网不提供在windows下对android的支持,只提供对linux/mac(类UNIX)的支持,可参考 http://source.android.com/source/download.html
android基于linux 内核,对其相关编译和连接环境有依赖。建议在windows上安装虚拟机,安装linux来编译。