开机时长是系统优化的重点,下面将从几个方面进行优化:

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开机时间优化相关推荐

  1. android 性能优化---(2) MTK 平台开机时间优化

    一.在工程模式开启MTKLogger, 开机后取日志bootprof  adb pull /storage/emulated/0/mtklog/mobilelog/APLog_2018_0309_10 ...

  2. 安卓系统开机时间优化分析

    Android 开机时间分析工具-----perfboot 安卓10开机时间优化分析 Android开机阶段log分析

  3. 安卓10开机时间优化分析

    本文从以下六点分析开机时间 1.软件环境2.开机时间测试方法3.开机各阶段重要的时间节点4.bootchart工具使用说明5.Android开机时间日志信息6.开机时间优化方案 一.软件环境 平台:a ...

  4. 【Android系统】Android开机时间分析

    参看博客: https://www.jianshu.com/p/30fdf86c3462?from=singlemessage                                      ...

  5. Android开机时间分析

    一. 关于本篇博文 该文档简单主要描述了如何找出开机各个阶段耗时情况,以及对开机各个阶段的分析方法和如何优化开机时间,减少耗时.便于读者可以通过此文档了解开机时间的各个阶段的耗时情况. 二.开机各阶段 ...

  6. 直播代码,Android开机速度优化

    直播代码,Android开机速度优化的相关方法和代码 cpu升频和task上大核: on init# boost sched tunewrite /dev/stune/schedtune.prefer ...

  7. android开机优化服务,Android开机速度优化简单回顾

    Android的开机速度,基本上没人说快的,通常移植完系统后,马上要看的事情就是优化开机时间,以下是简单回忆以下以前做优化的那些事. 开机时间都花在哪? 优化开机时间,通常做的首先是那有有没有BUG, ...

  8. 浅谈Android开机启动速度优化(含应用程序启动速度优化)

    众所周知Android开机启动速度较慢,于是如何加快启动速度便成为一个值得讨论的问题. 在查阅过许多资料后(特别是Google Group的android-platform),我整理总结出下面几点基本 ...

  9. Android开机启动速度优化 app启动速度优化

    众所周知Android开机启动速度较慢,于是如何加快启动速度便成为一个值得讨论的问题.在查阅过许多资料后(特别是Google Group的android-platform),我整理总结出下面几点基本看 ...

  10. android动态设置冷启动图片拉伸变形,Android冷启动时间优化

    冷启动时间是指当用户点击你的app那一刻到系统调用Activity.onCreate()之间的时间段.在这个时间段内,WindowManager会先加载app主题样式中的windowBackgroun ...

最新文章

  1. Redis 主从配置和参数详解
  2. NRF52832与W25Q80通信
  3. 小乌龟游泳java_乌龟翻身那么痛苦,它们为什么还没有灭绝?
  4. WebRTC编译系统之GYP,gn和ninja
  5. 再不自动化就晚啦!优云教你4步打造基于CentOS的产品镜像
  6. POJ1742 Coins(DP)
  7. 怎么解决python Non-ASCII character错误
  8. 单片机上运行linux程序代码,在Linux下烧录51单片机
  9. web开发要学多久,HTML表格标签,薪资翻倍
  10. mac应用打包成为dmg的方法
  11. hid在linux上的轮训时间,LINUX下USB1.1设备学习小记(6)_hid与input子系统(1)
  12. asp.net 返回表单json数据 辅助类
  13. 基于麻雀算法改进的LSTM分类算法-附代码
  14. pi币节虚拟服务器选哪种,Pi币节点云服务器
  15. 1.MATLAB简要介绍
  16. FPGA工程师笔试面试题(一)
  17. app图标圆角角度_iOS和安卓APP启动图标的尺寸和圆角大小详解
  18. Please refer to E:\SSM\Distributed\edu-parent\edu-dao\target\surefire-reports for the individua
  19. sql 返回日期的年月部分_2019年要上映的部分热门电影及上映日期
  20. Java——聊聊JUC中的线程中断机制 LockSupport

热门文章

  1. 什么是 npm ?npm 下载安装使用
  2. Java使用模板打印文档记录
  3. CAD文件查看器Acme CAD Converter V 8.10.2.1536【轻松查看CAD】
  4. 蓝桥杯真题-单词分析
  5. c语言程序设计50例(经典收藏),C语言程序设计50例(经典收藏)
  6. 云学算法之Ackerman阿克曼函数的python实现
  7. vertica中sql正则表达式
  8. 梳理 | 交叉熵、相对熵(KL散度)、JS散度和Wasserstein距离(推土机距离)
  9. SVN:SVN分支管理
  10. IDEA统计代码行数