实战-Android开机时间优化
生活随笔
收集整理的這篇文章主要介紹了
实战-Android开机时间优化
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
開機時長是系統(tǒng)優(yōu)化的重點,下面將從幾個方面進行優(yōu)化:
Uboot 階段
縮減Uboot 階段啟動內(nèi)容:
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.關(guān)閉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根據(jù)實際需求,去除不需要的kernel 模塊
目前來看,Kernel 這兩部分的修改,效果比較明顯。可以優(yōu)化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 不啟動無關(guān)的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 啟動的服務(wù)
frameworks/base/packages/SystemUI/res/values/config.xml
可根據(jù)實際需要進行裁剪
總結(jié)
以上是生活随笔為你收集整理的实战-Android开机时间优化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win10开机桌面壁纸位置
- 下一篇: Android 监听键盘事件