Mini版本开机时间长
来源:互联网 发布:怎么设置网络速度限制 编辑:程序博客网 时间:2024/04/28 06:29
Mini版本开机时间长
- Mini版本开机时间长
- Problem Description
- Analysis
- Solution
- Summary
1. Problem Description:
Mini版本主要是用来测试手机硬件的一款软件,
2. Analysis:
开机较慢的原因是在开机过程中会的data分区进行加密操作,而这个操作对应内部测试并没有什么用,因此可以去掉。然后是在开机过程中会安装APK,这会占用很多的开机时间,安装的这些APK中有许多并不是必备的,所以去掉那些无用的APK可以缩短开机时间。针对这个,可以设定在编译阶段就不编译这些APK。然后就是开机过程中会有些预优化,其优化的目的是节约手机内存即“用时间来换取空间”的策略。所以对降低开机时间主要在如下3个方面进行操作:
- 关闭data 加密
- 通过mmitest_skip_modules.mk 过滤多余APK
- 去掉预优化
3. Solution:
- 关闭data分区
在文件vendor/mediatek/proprietary/hardware/fstab/mt6755/Android.mk中进行如下修改:
ifeq ($(strip $(MTK_ENCRYPTION_DEFAULT_OFF)),yes) __CFLAGS += -D__MTK_FDE_NO_FORCEelse ifeq ($(strip $(CUSTOM_CONFIG_MAX_DRAM_SIZE)),0x20000000) __CFLAGS += -D__MTK_FDE_NO_FORCEelse ifeq ($(strip $(TARGET_BUILD_MMITEST)),true) __CFLAGS += -D__MTK_FDE_NO_FORCEendififeq ($(strip $(MTK_TEE_SUPPORT)),yes)ifeq ($(strip $(MTK_ENCRYPTION_TYPE_FILE)),yes) __CFLAGS += -D__MTK_FDE_TYPE_FILEendifendif
条件语句ifeq ($(strip $(TARGET_BUILD_MMITEST)),true)
会进行判断,如果是编译的MINI软件,会添加__MTK_FDE_NO_FORCE
宏定义。在文件fstab.in中会进行判断:
#ifdef __MTK_FDE_NO_FORCE/*打开此项, 即默认不强制加密*/ #define FLAG_FDE_AUTO encryptable#else #define FLAG_FDE_AUTO forceencrypt
- 通过mmitest_skip_modules.mk 过滤多余APK
在文件build/core/main.mk中如如下判断:
ifeq ($(TARGET_BUILD_MMITEST),true) $(warning skip_before: $(product_MODULES)) product_MODULES := $(filter-out $(MMITEST_SKIP_MODULES),$(product_MODULES)) $(warning skip_after: $(product_MODULES))
即如果编译的是TARGET_BUILD_MMITEST版本,会过虑掉mmitest_skip_modules.mk中的模块,所以需要将不需要的APK加入到文件mmitest_skip_modules.mk中。
- 去掉预优化
预优化(pre-optimization)是通过宏WITH_DEXPREOPT控制,如将宏开关DONT_DEXPREOPT_PREBUILTS设为true后,将不会对 Android.mk中包含了 include $(BUILD_PREBUILT)的Apk进行预优化,从而加快第一次开机的启动时间。
主要对如下几个宏开关进行操作:- WITH_DEXPREOPT
打开(Enable)宏开关WITH_DEXPREOPT,会使system image 中的所有apk, jar 文件参与预优化,这会大大增大system image的大小 - WITH_DEXPREOPT_PIC
设为true时,dex2oat编译生成的 odex文件在运行时将不必再从 /system 下拷贝到 /data/dalvik-cache/ 目录下, 可以节省 /data 空间。可能会对性能有轻微影响,但为了节省空间,可以这么做。(there is a slight runtime impact because it disables an optimization that takes advantage of position-dependent code. Typically, devices wanting to save space in /data should enable PIC compilation.)
设为false时,system中已经存在 class.odex的 apk,第一次开机后还是会在 /data下面生成 class.odex,如data/dalvik-cache/arm64/system@app@Music@Music.apk@classes.dex,这是何解?原来 Google为了提高安全性,在每一台机器开机时都会在之前的机器码加一个随机的偏移量,这个偏移量是随机的,每台机器都不相同,而 data分区下的这些文件就是从 system下的 class.odex加上偏移而来。 - DONT_DEXPREOPT_PREBUILTS
设为true后,将不会对 Android.mk中包含了 include $(BUILD_PREBUILT)的 Apk进行预优化,例如 Gmail,它很可能会在后期通过商店升级,而升级后系统中的 oat文件则没有意义了,但又无法删除,会造成空间的浪费(oat比dex文件要大)。
Enable DONT_DEXPREOPT_PREBUILTS,节省system 空间,增长第一次开机时间。 - WITH_DEXPREOPT_BOOT_IMG_ONLY
打开该宏开关将针对 boot image进行预优化,节省system相当一部分空间,但是会延长开机时间(意味着对所有的apk都不做优化)。
- WITH_DEXPREOPT
对文件build/core/dex_preopt.mk中,具体修改如下:
ifeq ($(TARGET_BUILD_VARIANT),eng) ifeq ($(TARGET_BUILD_MMITEST),true) WITH_DEXPREOPT := true WITH_DEXPREOPT_PIC := true else WITH_DEXPREOPT := false DONT_DEXPREOPT_PREBUILTS := false endifendififeq (eng,$(TARGET_BUILD_VARIANT)) ifeq ($(TARGET_BUILD_MMITEST),true) WITH_DEXPREOPT_BOOT_IMG_ONLY ?= false else WITH_DEXPREOPT_BOOT_IMG_ONLY ?= true endif ifneq (false,$(WITH_DEXPREOPT_DEBUG_INFO)) PRODUCT_DEX_PREOPT_BOOT_FLAGS += --generate-mini-debug-info endifendif
4. Summary:
针对这个问题,需要知道主要的耗时操作在什么地方,然后进行分析后来优化操作。可以通过命令adb shell cat /proc/bootprof
来查看开机时的时间消耗情况。同时通过命令adb shell
&&pm list package -f
查看系统安装的APK情况,然后对无用的APK进行优化。需要注意的是有的APK相关的.so文件是系统所必须的,如果未将这部分APK编译进行系统,会导致系统无法正常开机。
可以将开机过程划分成如下几个阶段来进行分析:
下面是优化后开机时间的实际情况:
注:
user@user-Lenovo-Product:/local$ adb shell cat /proc/bootprof----------------------------------------0 BOOT PROF (unit:msec)---------------------------------------- 3220 : preloader 3667 : lk---------------------------------------- 371.855769 : ON 865.905540 : 1-swapper/0 : initcall: of_init 227.898155ms 893.704540 : 1-swapper/0 : initcall: ramoops_init 17.496000ms 952.617924 : 1-swapper/0 : initcall: init_mtk_governor 23.135538ms 1021.233232 : 1-swapper/0 : initcall: mt_power_management_init 25.048539ms 1301.584079 : 1-swapper/0 : initcall: arm64_device_init 237.500924ms 1460.799464 : 1-swapper/0 : initcall: param_sysfs_init 150.824308ms 1492.303310 : 1-swapper/0 : initcall: pm_sysrq_init 28.820616ms 1554.894772 : 1-swapper/0 : initcall: MTK_M4U_Init 25.420154ms 1600.313234 : 1-swapper/0 : probe: probe=platform_drv_probe drv=mtk_cmdq(ffffffc00160fd78) 35.709539ms 1605.032926 : 1-swapper/0 : initcall: cmdq_init 41.354385ms 1730.910926 : 1-swapper/0 : initcall: cfg80211_init 21.485846ms 2122.880696 : 1-swapper/0 : initcall: event_trace_init 371.556078ms 2261.964774 : 1-swapper/0 : probe: probe=platform_drv_probe drv=mt-pmic(ffffffc001604300) 95.811769ms 2266.137928 : 1-swapper/0 : initcall: pmic_mt_init 101.656769ms 2324.955082 : 1-swapper/0 : initcall: inet_init 33.181154ms 2507.386236 : 1-swapper/0 : initcall: populate_rootfs 177.119692ms 2735.783313 : 1-swapper/0 : initcall: slab_sysfs_init 145.808231ms 2922.011391 : 1-swapper/0 : initcall: pty_init 17.699615ms 2960.162160 : 1-swapper/0 : initcall: loop_init 29.996923ms 3028.701775 : 1-swapper/0 : initcall: mt_gpufreq_init 17.778692ms 3072.091545 : 1-swapper/0 : initcall: hps_init 26.006461ms 3098.926776 : 1-swapper/0 : initcall: mtk_uart_init 15.949923ms 3283.340622 : 1-swapper/0 : probe: probe=i2c_device_probe drv=pn544(ffffffc0015f64a8) 86.596615ms 3285.073776 : 1-swapper/0 : probe: probe=platform_drv_probe drv=mt-i2c(ffffffc0016000e8) 90.320847ms 3289.343622 : 1-swapper/0 : initcall: mt_i2c_init 109.559615ms 3336.911699 : 1-swapper/0 : probe: probe=platform_drv_probe drv=Accdet_Driver(ffffffc001601f88) 24.650847ms 3342.731930 : 1-swapper/0 : initcall: accdet_mod_init 34.558538ms 3362.740776 : 1-swapper/0 : initcall: init 18.654000ms 3443.727469 : 1-swapper/0 : probe: probe=platform_drv_probe drv=musb-hdrc(ffffffc00160bd38) 20.658847ms 3445.988392 : 1-swapper/0 : probe: probe=platform_drv_probe drv=musb-mtu3d(ffffffc00160c008) 23.848616ms 3450.176623 : 1-swapper/0 : initcall: mtu3d_driver_init 29.606231ms 3710.967392 : 1-swapper/0 : probe: probe=mtkfb_probe drv=mtkfb(ffffffc001612008) 223.363924ms 3714.922854 : 1-swapper/0 : initcall: mtkfb_init 231.631924ms 3751.890316 : 1-swapper/0 : probe: probe=platform_drv_probe drv=mali(ffffffc001617578) 21.980308ms 3755.982085 : 1-swapper/0 : initcall: kbase_platform_driver_init 27.714923ms 3863.481316 : 1-swapper/0 : probe: probe=i2c_device_probe drv=kd_camera_hw(ffffffc00161a448) 57.799539ms 3865.574854 : 1-swapper/0 : probe: probe=platform_drv_probe drv=image_sensor(ffffffc00161a1e0) 85.040846ms 3873.808316 : 1-swapper/0 : initcall: CAMERA_HW_i2C_init 99.528308ms 3962.954393 : 1-swapper/0 : probe: probe=platform_drv_probe drv=kd_camera_flashlight(ffffffc00161e258) 59.763000ms 3969.943778 : 1-swapper/0 : initcall: flashlight_init 75.757616ms 4090.410316 : 1-swapper/0 : probe: probe=platform_drv_probe drv=cldma_modem(ffffffc00162d590) 108.923078ms 4095.188932 : 1-swapper/0 : initcall: modem_cd_init 114.386231ms 4153.136394 : 1-swapper/0 : initcall: BTIF_init 39.421231ms 4286.060009 : 1-swapper/0 : initcall: mtk_cooler_dtm_init 24.058692ms 4339.072932 : 1-swapper/0 : initcall: emi_mpu_mod_init 23.010693ms 4364.575009 : 1-swapper/0 : initcall: init 18.190692ms 4440.468856 : 1-swapper/0 : probe: probe=platform_drv_probe drv=HardwareInfo(ffffffc001639f08) 53.160539ms 4443.734163 : 1-swapper/0 : initcall: HardwareInfo_mod_init 58.462154ms 4575.167471 : 1-swapper/0 : probe: probe=platform_drv_probe drv=mtk-kpd(ffffffc00164df40) 15.611769ms 4580.932318 : 1-swapper/0 : initcall: kpd_mod_init 22.393846ms 4690.719933 : 1-swapper/0 : probe: probe=platform_drv_probe drv=battery_meter(ffffffc001661020) 83.773770ms 4692.538703 : 1-swapper/0 : probe: pdev=battery_meter(ffffffc001660cd0) 86.807769ms 4694.067472 : 1-swapper/0 : probe: probe=platform_drv_probe drv=battery_meter_dts(ffffffc0016610d0) 89.507462ms 4697.669010 : 1-swapper/0 : initcall: battery_meter_init 96.310308ms 4747.176241 : 1-swapper/0 : initcall: mt67xx_v2_cpuidle_init 25.403769ms 4776.516934 : 1-swapper/0 : initcall: mt_msdc_init 23.781692ms 5067.848319 : 1-swapper/0 : probe: probe=platform_drv_probe drv=soc-audio(ffffffc0016774a0) 121.699693ms 5068.152934 : 1-swapper/0 : initcall: mt_soc_snd_init 123.002000ms 5120.639396 : 1-swapper/0 : initcall: inet6_init 32.686385ms 5340.091243 : 1-swapper/0 : initcall: enable_ftrace 194.529078ms 5373.725781 : 1-swapper/0 : initcall: add_shrinker_debug 30.885000ms 5485.367704 : 1-swapper/0 : initcall: mt_dcm_init 88.614615ms 5532.398243 : 1-swapper/0 : probe: probe=platform_drv_probe drv=mt-cpufreq(ffffffc0015f0198) 35.841154ms 5535.746935 : 1-swapper/0 : initcall: _mt_cpufreq_pdrv_init 43.911154ms 5543.812781 : 6-kworker/u16:0 : probe: probe=mmc_bus_probe drv=mmcblk(ffffffc001668c40) 72.474692ms 5670.824782 : 1-swapper/0 : probe: probe=i2c_device_probe drv=stk3x1x(ffffffc0015fd9c8) 89.990308ms 5682.310166 : 1-swapper/0 : initcall: alsps_init 107.247231ms 5707.768705 : 1-swapper/0 : probe: probe=i2c_device_probe drv=BMA2XX(ffffffc0015fe440) 21.252154ms 5717.638936 : 1-swapper/0 : initcall: acc_init 32.605384ms 5784.254397 : 1-swapper/0 : probe: probe=i2c_device_probe drv=bmg250_gyro(ffffffc0015ff168) 64.123231ms 5802.952705 : 1-swapper/0 : initcall: gyro_init 84.019539ms 5820.408705 : 1-swapper/0 : initcall: mag_init 16.166846ms 5841.251475 : 1-swapper/0 : initcall: step_c_init 19.552769ms 5873.744628 : 1-swapper/0 : initcall: devapc_init 15.065000ms 5953.311398 : 1-swapper/0 : initcall: init 62.161462ms 6636.759323 : 1-swapper/0 : probe: probe=spi_drv_probe drv=fp_spi(ffffffc00165b6a0) 390.230540ms 6850.068400 : 1-swapper/0 : probe: probe=platform_drv_probe drv=fp_drv(ffffffc00164daf0) 892.541617ms 6853.522477 : 1-swapper/0 : initcall: fp_drv_init 898.986541ms 6890.832323 : 1-swapper/0 : initcall: battery_init 27.719308ms 6939.269631 : 147-kworker/u16:2 : probe: probe=platform_drv_probe drv=battery(ffffffc001663978) 42.569539ms 6939.860093 : 147-kworker/u16:2 : probe: pdev=battery(ffffffc0016635a8) 45.113385ms 6939.923785 : 147-kworker/u16:2 : probe: probe=platform_drv_probe drv=battery-dts(ffffffc001663160) 46.362692ms 7076.133477 : 1-swapper/0 : initcall: clk_debug_init 169.705539ms 7110.142478 : 1-swapper/0 : initcall: regulator_init_complete 26.655154ms 7124.238862 : 1-swapper/0 : Kernel_init_done 7346.506940 : 6-kworker/u16:0 : probe: probe=i2c_device_probe drv=fts(ffffffc00164f200) 461.019770ms 7380.387632 : 6-kworker/u16:0 : probe: probe=platform_drv_probe drv=mtk-tpd(ffffffc00164e1b0) 505.097539ms 8436.728096 : 1-init : INIT:early-init 9527.990176 : 1-init : INIT:late-init 9529.631329 : 1-init : INIT:Mount_START 13540.467877 : 1-init : INIT:Mount_END 13564.849262 : 1-init : setup mobicore perms ++ (on fs) 13572.114570 : 1-init : setup mobicore perms -- (on fs) 15212.874112 : 1-init : INIT:post-fs 16440.699577 : 1-init : INIT:post-fs-data 16635.690577 : 1-init : post-fs-data: on modem start 16951.829809 : 1-init : INIT:boot 17245.023579 : 1-init : create /data/misc/mcRegistry ++ (unencrypted) 17246.505271 : 1-init : create /data/misc/mcRegistry -- (unencrypted) 17247.555963 : 1-init : create /data/misc/mcRegistry ++ (unencrypted) 17249.106502 : 1-init : create /data/misc/mcRegistry -- (unencrypted) 17284.131502 : 328-wmt_loader : probe: probe=platform_drv_probe drv=fm(ffffffc001633d10) 47.623538ms 20117.511509 : 340-surfaceflinger : BOOT_Animation:START 22752.109976 : 381-main : Zygote:Preload Start 22901.186131 : 380-main : Zygote:Preload Start 25185.028905 : 380-main : Zygote:Preload 4161 classes in 2124ms 25203.203751 : 381-main : Zygote:Preload 4161 classes in 2299ms 26061.491523 : 380-main : Zygote:Preload 114 obtain resources in 405ms 26065.363292 : 381-main : Zygote:Preload 114 obtain resources in 415ms 26087.808215 : 380-main : Zygote:Preload 41 resources in 24ms 26089.247907 : 381-main : Zygote:Preload 41 resources in 22ms 26370.564985 : 380-main : Zygote:Preload End 26500.120062 : 381-main : Zygote:Preload End 26715.354986 : 857-system_server : Android:SysServerInit_START 28576.801452 : 857-system_server : Android:PackageManagerService_Start 28886.731453 : 857-system_server : Android:PMS_scan_START 29073.939761 : 857-system_server : Android:PMS_scan_data:/vendor/overlay 30086.105455 : 857-system_server : Android:PMS_scan_data:/system/framework 30408.115379 : 857-system_server : Android:PMS_scan_data:/vendor/framework 30513.919072 : 857-system_server : Android:PMS_scan_data:/system/custpack/app/unremoveable/priv-app 30933.341996 : 857-system_server : Android:PMS_scan_data:/system/custpack/app/unremoveable/withlibs 31652.178228 : 857-system_server : Android:PMS_scan_data:/system/priv-app 34101.119465 : 857-system_server : Android:PMS_scan_data:/system/app 36764.976164 : 857-system_server : Android:PMS_scan_data:/vendor/priv-app 36875.507164 : 857-system_server : Android:PMS_scan_data:/system/vendor/app 37153.869472 : 857-system_server : Android:PMS_scan_data:/vendor/plugin 37226.375626 : 857-system_server : Android:PMS_scan_END 49955.817887 : 857-system_server : Android:PMS_READY 56871.808288 : 857-system_server : AMS:systemReady 56897.408827 : 857-system_server : AMS:AMS_READY 57065.576981 : 935-ActivityManager : AP_Init:[broadcast]:[com.android.settings]:[com.android.settings/.wifi.WifiPreconfigAPReceiver]:pid:1460 57140.895520 : 857-system_server : AP_Init:[service]:[com.android.inputmethod.latin]:[com.android.inputmethod.latin/.LatinIME]:pid:1476 57350.931367 : 935-ActivityManager : AP_Init:[broadcast]:[android.process.media]:[com.android.providers.media/.MtpReceiver]:pid:1494 57426.956059 : 857-system_server : AP_Init:[service]:[com.android.systemui]:[com.android.systemui/.SystemUIService]:pid:1508:(PersistAP) 58150.542907 : 857-system_server : SystemServer:NetworkManagementService systemReady 58427.997369 : 857-system_server : SystemServer:NetworkStatsService systemReady 59029.889063 : 857-system_server : SystemServer:NetworkPolicyManagerService systemReady 59106.422755 : 857-system_server : SystemServer:ConnectivityService systemReady 59417.024295 : 857-system_server : SystemServer:PhaseThirdPartyAppsCanStart 59480.887141 : 857-system_server : AP_Init:[added application]:[com.android.phone]:[com.android.phone]:pid:1625:(PersistAP) 59534.872987 : 857-system_server : AP_Init:[added application]:[com.mediatek.ims]:[com.mediatek.ims]:pid:1639:(PersistAP) 59588.214526 : 857-system_server : AP_Init:[added application]:[com.mediatek.wfo.impl]:[com.mediatek.wfo.impl]:pid:1653:(PersistAP) 59645.845064 : 857-system_server : AP_Init:[added application]:[se.dirac.acs]:[se.dirac.acs]:pid:1667:(PersistAP) 59657.955141 : 857-system_server : AMS:ENABLE_SCREEN 59714.057064 : 857-system_server : Android:SysServerInit_END 64974.737462 : 496-Binder:340_1 : BOOT_Animation:END 64977.551385 : OFF----------------------------------------
- Mini版本开机时间长
- win10双显卡开机黑屏时间长
- Mac mini 开机一直转圈
- mac mini 的开机问题
- mini英汉字典 版本v1.0
- Android Mini音乐播放器[简单版本]
- CentOS6.7mini版本依赖的yum
- mini
- redis 开机启动。亲测可用 应用于centos 7 mini
- ueditor的mini版本的jsp版本的使用方法
- VM12安装一个干净的CentOS-6.5(mini版本)
- debug版本开机后不出uartlog
- L版本首次开机慢
- MRP 运行时间长
- rtsp 缓冲时间长
- gnome-player 缓冲时间长
- UIImagePickerController拍照 时间长
- cocos2dx 编译时间长问题
- LA3029
- iOS UItableview的两种重用cell的方法的区别
- spring事务管理
- 广电总局退回中国移动IPTV牌照申请
- 工作反思170608
- Mini版本开机时间长
- Editor_ScriptableWizard,ShowNotification 学习04
- 8种排序方法
- Maven项目报错:The type javax.validation.Payload cannot be resolved. It is indirectly referenced from req
- Git---Git别名(来点花样)
- 深度学习 2 机器学习 神经网络 卷积神经网络
- 创业日志(十三) 关于委屈
- Spring的一些好用标签@ResponseBody @RequestParam
- 微信小程序例子——手机振动功能