实战-Android开机时间优化
开机时长是系统优化的重点,下面将从几个方面进行优化:
Uboot 阶段
缩减Uboot 阶段启动内容:
diff --git a/board/amlogic/configs/g12a_u202_v1.h b/board/amlogic/configs/g12a_u202_v1.h
index 4cb206c..aa4a9cb 100755
--- a/board/amlogic/configs/g12a_u202_v1.h
+++ b/board/amlogic/configs/g12a_u202_v1.h
@@ -151,7 +151,6 @@"get_bootloaderversion;" \"setenv bootargs ${initargs} ${fs_type} otg_device=${otg_device} reboot_mode_android=${reboot_mode_android} logo=${display_layer},loaded,${fb_addr} vout2=${outputmode2}, vout=${outputmode},enable panel_type=${panel_type} lcd_ctrl=${lcd_ctrl} hdmitx=${cecconfig},${colorattribute} hdmimode=${hdmimode} hdmichecksum=${hdmichecksum} dolby_vision_on=${dolby_vision_on} frac_rate_policy=${frac_rate_policy} hdmi_read_edid=${hdmi_read_edid} cvbsmode=${cvbsmode} osd_reverse=${osd_reverse} video_reverse=${video_reverse} irq_check_en=${Irq_check_en} androidboot.selinux=${EnableSelinux} androidboot.firstboot=${firstboot} jtag=${jtag}; "\"setenv bootargs ${bootargs} androidboot.hardware=amlogic androidboot.bootloader=${bootloader_version} androidboot.build.expect.baseband=N/A;"\
- "run cmdline_keys;"\"\0"\"switch_bootmode="\"get_rebootmode;"\
@@ -349,7 +348,6 @@"run bcb_cmd; "\"run factory_reset_poweroff_protect;"\"run upgrade_check;"\
- "run bootcount_check;"\"run init_display;"\"run storeargs;"\"run upgrade_key;" \
--
Kernel 阶段
1.关闭Kernel 打印,quiet bootargs
diff --git a/board/amlogic/configs/g12a_u202_v1.h b/board/amlogic/configs/g12a_u202_v1.h
index 370638d..4cb206c 100755
--- a/board/amlogic/configs/g12a_u202_v1.h
+++ b/board/amlogic/configs/g12a_u202_v1.h
@@ -136,7 +136,7 @@"fs_type=""rootfstype=ramfs""\0"\"initargs="\"init=/init console=ttyS0,115200 no_console_suspend earlycon=aml-uart,0xff803000 "\
- "ramoops.pstore_en=1 ramoops.record_size=0x8000 ramoops.console_size=0x4000 raid=noautodetect "\
+ "ramoops.pstore_en=1 ramoops.record_size=0x8000 ramoops.console_size=0x4000 raid=noautodetect quiet "\"\0"\"upgrade_check="\"echo upgrade_step=${upgrade_step}; "\
2.不启动不用的模块
diff --git a/arch/arm/configs/meson64_a32_defconfig b/arch/arm/configs/meson64_a32_defconfig
index a0964bf..5ee8f3f 100755
--- a/arch/arm/configs/meson64_a32_defconfig
+++ b/arch/arm/configs/meson64_a32_defconfig
@@ -285,7 +285,7 @@ CONFIG_AMLOGIC_VIDEOBUF_RESOURCE=yCONFIG_AMLOGIC_MEDIA_VIDEO=yCONFIG_AMLOGIC_MEDIA_VIDEOCAPTURE=yCONFIG_AMLOGIC_VOUT=y
-CONFIG_AMLOGIC_CVBS_OUTPUT=y
+#CONFIG_AMLOGIC_CVBS_OUTPUT=yCONFIG_AMLOGIC_WSS=yCONFIG_AMLOGIC_VDAC=yCONFIG_AMLOGIC_HDMITX=y
@@ -358,8 +358,8 @@ CONFIG_AMLOGIC_GX_SUSPEND=yCONFIG_AMLOGIC_LEGACY_EARLY_SUSPEND=yCONFIG_AMLOGIC_LED=yCONFIG_AMLOGIC_LED_SYS=y
-CONFIG_AMLOGIC_JTAG=y
-CONFIG_AMLOGIC_JTAG_MESON=y
+#CONFIG_AMLOGIC_JTAG=y
+#CONFIG_AMLOGIC_JTAG_MESON=yCONFIG_AMLOGIC_WDT=yCONFIG_AMLOGIC_WDT_MESON=yCONFIG_AMLOGIC_WDT_MESON_V3=y
@@ -367,7 +367,7 @@ CONFIG_AMLOGIC_ESM=yCONFIG_AMLOGIC_WIFI=yCONFIG_AMLOGIC_BT_DEVICE=yCONFIG_AMLOGIC_POWER=y
-CONFIG_AMLOGIC_PCIE=y
+#CONFIG_AMLOGIC_PCIE=yCONFIG_AMLOGIC_IRBLASTER_CORE=yCONFIG_AMLOGIC_IRBLASTER_MESON=yCONFIG_AMLOGIC_IRBLASTER_PROTOCOL=y
@@ -393,10 +393,10 @@ CONFIG_DEVTMPFS_MOUNT=yCONFIG_DMA_CMA=yCONFIG_CMA_SIZE_MBYTES=8CONFIG_CONNECTOR=y
-CONFIG_MTD=y
-CONFIG_MTD_CMDLINE_PARTS=y
-CONFIG_MTD_BLOCK=y
-CONFIG_MTD_OOPS=y
+#CONFIG_MTD=y
+#CONFIG_MTD_CMDLINE_PARTS=y
+#CONFIG_MTD_BLOCK=y
+#CONFIG_MTD_OOPS=y#CONFIG_MTD_NAND=y#CONFIG_MTD_SPI_NOR=y#CONFIG_MTD_UBI=y
@@ -591,7 +591,7 @@ CONFIG_FUSE_FS=yCONFIG_JOLIET=yCONFIG_ZISOFS=yCONFIG_UDF_FS=y
-CONFIG_MSDOS_FS=y
+#CONFIG_MSDOS_FS=yCONFIG_VFAT_FS=yCONFIG_EXFAT_FS=yCONFIG_NTFS_FS=y
根据实际需求,去除不需要的kernel 模块
目前来看,Kernel 这两部分的修改,效果比较明显。可以优化4-5s
Android 启动阶段
1.preloaded-classes & preloaded_drawables
diff --git a/config/preloaded-classes b/config/preloaded-classes
index 0014793..14bae46 100644
--- a/config/preloaded-classes
+++ b/config/preloaded-classes
@@ -1253,10 +1253,6 @@ android.hardware.ICameraService$Stubandroid.hardware.ICameraService$Stub$Proxyandroid.hardware.ICameraServiceListenerandroid.hardware.ICameraServiceListener$Stub
-android.hardware.Sensor
-android.hardware.SensorEvent
-android.hardware.SensorEventListener
-android.hardware.SensorManagerandroid.hardware.SerialManagerandroid.hardware.SerialPortandroid.hardware.SystemSensorManager
@@ -1887,52 +1883,6 @@ android.icu.util.UResourceBundleIteratorandroid.icu.util.UResourceTypeMismatchExceptionandroid.icu.util.VersionInfoandroid.inputmethodservice.SoftInputWindow
-android.location.Address
-android.location.Address$1
-android.location.BatchedLocationCallbackTransport
-android.location.BatchedLocationCallbackTransport$CallbackTransport
-android.location.Country$1
-android.location.CountryDetector
-android.location.Criteria$1
-android.location.Geocoder
diff --git a/core/res/res/values/arrays.xml b/core/res/res/values/arrays.xml
index f6a5787..50558ff 100644
--- a/core/res/res/values/arrays.xml
+++ b/core/res/res/values/arrays.xml
@@ -23,7 +23,7 @@the zygote process before it starts forking application processes. --><array name="preloaded_drawables"><item>@drawable/toast_frame</item>
- <item>@drawable/btn_check_on_pressed_holo_light</item>
+<!-- <item>@drawable/btn_check_on_pressed_holo_light</item><item>@drawable/btn_check_on_pressed_holo_dark</item><item>@drawable/btn_check_on_holo_light</item><item>@drawable/btn_check_on_holo_dark</item>
@@ -64,7 +64,7 @@<item>@drawable/btn_radio_off_disabled_holo_light</item><item>@drawable/btn_radio_off_disabled_holo_dark</item><item>@drawable/btn_radio_off_disabled_focused_holo_light</item>
- <item>@drawable/btn_radio_off_disabled_focused_holo_dark</item>
+ <item>@drawable/btn_radio_off_disabled_focused_holo_dark</item>--><item>@drawable/btn_default_pressed_holo_light</item><item>@drawable/btn_default_pressed_holo_dark</item><item>@drawable/btn_default_normal_holo_light</item>
@@ -77,7 +77,7 @@<item>@drawable/btn_default_disabled_focused_holo_dark</item><item>@drawable/btn_default_holo_dark</item><item>@drawable/btn_default_holo_light</item>
- <item>@drawable/btn_star_off_normal_holo_light</item>
+ <!--<item>@drawable/btn_star_off_normal_holo_light</item><item>@drawable/btn_star_on_normal_holo_light</item><item>@drawable/btn_star_on_disabled_holo_light</item><item>@drawable/btn_star_off_disabled_holo_light</item>
2.SystemServer 不启动无关的service
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java
index 1880e9f..eecb9ed 100644
--- a/services/java/com/android/server/SystemServer.java
+++ b/services/java/com/android/server/SystemServer.java
@@ -796,10 +796,10 @@ public final class SystemServer {mSystemServiceManager.startService(TelecomLoaderService.class);traceEnd();- traceBeginAndSlog("StartTelephonyRegistry");
- telephonyRegistry = new TelephonyRegistry(context);
- ServiceManager.addService("telephony.registry", telephonyRegistry);
- traceEnd();
+// traceBeginAndSlog("StartTelephonyRegistry");
+// telephonyRegistry = new TelephonyRegistry(context);
+// ServiceManager.addService("telephony.registry", telephonyRegistry);
+// traceEnd();traceBeginAndSlog("StartEntropyMixer");mEntropyMixer = new EntropyMixer(context);
@@ -1061,9 +1061,9 @@ public final class SystemServer {traceEnd();}- traceBeginAndSlog("StartClipboardService");
- mSystemServiceManager.startService(ClipboardService.class);
- traceEnd();
+// traceBeginAndSlog("StartClipboardService");
+// mSystemServiceManager.startService(ClipboardService.class);
+// traceEnd();traceBeginAndSlog("StartNetworkManagementService");try {@@ -1273,15 +1273,15 @@ public final class SystemServer {traceEnd();}- traceBeginAndSlog("StartWiredAccessoryManager");
- try {- // Listen for wired headset changes
- inputManager.setWiredAccessoryCallbacks(
- new WiredAccessoryManager(context, inputManager));
- } catch (Throwable e) {- reportWtf("starting WiredAccessoryManager", e);
- }
- traceEnd();
+// traceBeginAndSlog("StartWiredAccessoryManager");
+// try {+// // Listen for wired headset changes
+// inputManager.setWiredAccessoryCallbacks(
+// new WiredAccessoryManager(context, inputManager));
+// } catch (Throwable e) {+// reportWtf("starting WiredAccessoryManager", e);
+// }
+// traceEnd();if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_MIDI)) {// Start MIDI Manager service
@@ -1508,11 +1508,11 @@ public final class SystemServer {}traceEnd();- if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT)) {- traceBeginAndSlog("StartFingerprintSensor");
- mSystemServiceManager.startService(FingerprintService.class);
- traceEnd();
- }
+// if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT)) {+// traceBeginAndSlog("StartFingerprintSensor");
+// mSystemServiceManager.startService(FingerprintService.class);
+// traceEnd();
+// }
3.Systemui
startServicesIfNeeded
减少config_systemUIServiceComponents 启动的服务
frameworks/base/packages/SystemUI/res/values/config.xml
string-array name="config_systemUIServiceComponents" translatable="false"><item>com.android.systemui.Dependency</item><item>com.android.systemui.util.NotificationChannels</item><item>com.android.systemui.statusbar.CommandQueue$CommandQueueStart</item><item>com.android.systemui.keyguard.KeyguardViewMediator</item><item>com.android.systemui.recents.Recents</item><item>com.android.systemui.volume.VolumeUI</item><item>com.android.systemui.stackdivider.Divider</item><item>com.android.systemui.SystemBars</item><item>com.android.systemui.usb.StorageNotification</item><item>com.android.systemui.power.PowerUI</item><item>com.android.systemui.media.RingtonePlayer</item><item>com.android.systemui.keyboard.KeyboardUI</item><item>com.android.systemui.pip.PipUI</item><item>com.android.systemui.shortcut.ShortcutKeyDispatcher</item><item>@string/config_systemUIVendorServiceComponent</item><item>com.android.systemui.util.leak.GarbageMonitor$Service</item><item>com.android.systemui.LatencyTester</item><item>com.android.systemui.globalactions.GlobalActionsComponent</item><item>com.android.systemui.ScreenDecorations</item><item>com.android.systemui.fingerprint.FingerprintDialogImpl</item><item>com.android.systemui.SliceBroadcastRelayHandler</item><item>com.android.systemui.funshion.gesture.GestureBarUI</item><item>com.android.systemui.funshion.floatball.FloatshortcutUI</item><item>com.android.systemui.funshion.eye.EyeShieldBarUI</item><item>com.android.systemui.funshion.micmute.MicMuteUI</item></string-array>
可根据实际需要进行裁剪
实战-Android开机时间优化相关推荐
- android 性能优化---(2) MTK 平台开机时间优化
一.在工程模式开启MTKLogger, 开机后取日志bootprof adb pull /storage/emulated/0/mtklog/mobilelog/APLog_2018_0309_10 ...
- 安卓系统开机时间优化分析
Android 开机时间分析工具-----perfboot 安卓10开机时间优化分析 Android开机阶段log分析
- 安卓10开机时间优化分析
本文从以下六点分析开机时间 1.软件环境2.开机时间测试方法3.开机各阶段重要的时间节点4.bootchart工具使用说明5.Android开机时间日志信息6.开机时间优化方案 一.软件环境 平台:a ...
- 【Android系统】Android开机时间分析
参看博客: https://www.jianshu.com/p/30fdf86c3462?from=singlemessage ...
- Android开机时间分析
一. 关于本篇博文 该文档简单主要描述了如何找出开机各个阶段耗时情况,以及对开机各个阶段的分析方法和如何优化开机时间,减少耗时.便于读者可以通过此文档了解开机时间的各个阶段的耗时情况. 二.开机各阶段 ...
- 直播代码,Android开机速度优化
直播代码,Android开机速度优化的相关方法和代码 cpu升频和task上大核: on init# boost sched tunewrite /dev/stune/schedtune.prefer ...
- android开机优化服务,Android开机速度优化简单回顾
Android的开机速度,基本上没人说快的,通常移植完系统后,马上要看的事情就是优化开机时间,以下是简单回忆以下以前做优化的那些事. 开机时间都花在哪? 优化开机时间,通常做的首先是那有有没有BUG, ...
- 浅谈Android开机启动速度优化(含应用程序启动速度优化)
众所周知Android开机启动速度较慢,于是如何加快启动速度便成为一个值得讨论的问题. 在查阅过许多资料后(特别是Google Group的android-platform),我整理总结出下面几点基本 ...
- Android开机启动速度优化 app启动速度优化
众所周知Android开机启动速度较慢,于是如何加快启动速度便成为一个值得讨论的问题.在查阅过许多资料后(特别是Google Group的android-platform),我整理总结出下面几点基本看 ...
- android动态设置冷启动图片拉伸变形,Android冷启动时间优化
冷启动时间是指当用户点击你的app那一刻到系统调用Activity.onCreate()之间的时间段.在这个时间段内,WindowManager会先加载app主题样式中的windowBackgroun ...
最新文章
- Redis 主从配置和参数详解
- NRF52832与W25Q80通信
- 小乌龟游泳java_乌龟翻身那么痛苦,它们为什么还没有灭绝?
- WebRTC编译系统之GYP,gn和ninja
- 再不自动化就晚啦!优云教你4步打造基于CentOS的产品镜像
- POJ1742 Coins(DP)
- 怎么解决python Non-ASCII character错误
- 单片机上运行linux程序代码,在Linux下烧录51单片机
- web开发要学多久,HTML表格标签,薪资翻倍
- mac应用打包成为dmg的方法
- hid在linux上的轮训时间,LINUX下USB1.1设备学习小记(6)_hid与input子系统(1)
- asp.net 返回表单json数据 辅助类
- 基于麻雀算法改进的LSTM分类算法-附代码
- pi币节虚拟服务器选哪种,Pi币节点云服务器
- 1.MATLAB简要介绍
- FPGA工程师笔试面试题(一)
- app图标圆角角度_iOS和安卓APP启动图标的尺寸和圆角大小详解
- Please refer to E:\SSM\Distributed\edu-parent\edu-dao\target\surefire-reports for the individua
- sql 返回日期的年月部分_2019年要上映的部分热门电影及上映日期
- Java——聊聊JUC中的线程中断机制 LockSupport