一,优化目标
- 对比android4.4的启动时间,android4.4是16S ,androidM是20S.中间还差4S的时间,从分析上来看主要是由于androidM使用了JIT的方式,导致apk的安装加载时间会长。我们的目标是将androidM的启动时间能达到android4.4的水平。对比刚开始的30S优化到20S也是阶段性的成果。
- 后续优化空间还可以从systemUI和Laucher的加载和启动上进行。另外其它有些地方,如android虚拟机,JIT,EMMC速度等。
二,优化措施
1. 优化文件系统加载
去 掉 没 有 用 的 文 件 分 区 , 在A40I-H android6.0 中将/dev/block/by-name/frp
及/dev/block/by-name/media_data
的分区加载去掉,对比去掉后启动节省了3S。
2. 优化启动驱动加载
将驱动尽可能采用buldin的加载方式,不要使用单独ko加载。
3. 优化启动终端打印
将启动的终端串口打印尽可能调低。在A40I-H android6.0中可以将打印等级loglevel调整成0,时间节省1S。
4. 优化boot启动
将boot启动的打印关闭,节省800ms。
5. 提高cpu启动的运行速度
将cpu的启动速度从1G提高到1.1G,整体运行时间节省2s。
6. 优化android启动服务
在init.rc中将不使用的服务关闭,节省时间2s,如下:
diff --git a/rootdir/init.rc b/rootdir/init.rc
index a7d30f8..ad20c43 100644
--- a/rootdir/init.rc
+++ b/rootdir/init.rc
@@ -633,13 +633,13 @@ service debuggerd64 /system/bin/debuggerd64
class main
writepid /dev/cpuset/system-background/tasks
-service ril-daemon /system/bin/rild
- class main
- socket rild stream 660 root radio
- socket sap_uim_socket1 stream 660 bluetooth bluetooth
- socket rild-debug stream 660 radio system
- user root
- group radio cache inet misc audio log
+#service ril-daemon /system/bin/rild
+# class main
+# socket rild stream 660 root radio
+# socket sap_uim_socket1 stream 660 bluetooth bluetooth
+# socket rild-debug stream 660 radio system
+# user root
+# group radio cache inet misc audio log
service surfaceflinger /system/bin/surfaceflinger
class core
@@ -660,16 +660,16 @@ service media /system/bin/mediaserver
ioprio rt 4
# One shot invocation to deal with encrypted volume.
-service defaultcrypto /system/bin/vdc --wait cryptfs mountdefaultencrypted
- disabled
- oneshot
+#service defaultcrypto /system/bin/vdc --wait cryptfs mountdefaultencrypted
+# disabled
+# oneshot
# vold will set vold.decrypt to trigger_restart_framework (default
# encryption) or trigger_restart_min_framework (other encryption)
diff --git a/target/product/core.mk b/target/product/core.mk
index ec6a099..f024a99 100644
--- a/target/product/core.mk
+++ b/target/product/core.mk
@@ -21,18 +21,12 @@
# core_tiny.mk in addition to core_minimal.mk.
PRODUCT_PACKAGES += \
- Browser \
- Contacts \
DeskClock \
- DownloadProviderUi \
ExternalStorageProvider \
FusedLocation \
- InputDevices \
- LatinIME \
Launcher2 \
libpac \
Settings \
- SharedStorageBackup \
Telecom \
TeleService
diff --git a/target/product/core_base.mk b/target/product/core_base.mk
index 03d33e1..536092b 100644
--- a/target/product/core_base.mk
+++ b/target/product/core_base.mk
@@ -21,11 +21,9 @@ PRODUCT_PROPERTY_OVERRIDES := \
ro.config.alarm_alert=Alarm_Classic.ogg
PRODUCT_PACKAGES += \
- ContactsProvider \
DefaultContainerService \
Home \
TelephonyProvider \
- UserDictionaryProvider \
atrace \
libandroidfw \
libaudiopreprocessing
7. 优化android启动动画
Android的bootanimation启动需要耗3s的时间,还取决于图片大小和数量。采用原生的启动画面节省1S的时间。
8. 优化android启动加载应用
Android的应用按装会耗的时间较长,由于采用的JIT方式导致应用加载会需要更长的时间,所以时间取决于apk的数量和apk的大小.将不需要的应用进行裁剪,可以优化近300ms的时间。