日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 首次开机优化

發布時間:2023/12/14 Android 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 首次开机优化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  • 優化工具
  • 優化方向
    • 裁剪不常用的資源
    • patch oat ODEX優化
  • 參考資源

Android首次開機速度過慢!為了解決這個問題,需要首先了解Android首次開機的時間都消耗在什么地方了!

優化工具

我們可以借助 Bootchart工具進行分析,Using Bootchart on Android

總結起來步驟如下:

  • 在/system/core/init 下的mk中添加INIT_BOOTCHART:=true 編譯控制命令
  • 在BootChart.h中修改# define BOOTCHART 1 這個宏,這個是宏功能開關
  • 用make bootimage 來編譯boot,init會編譯在boot中,編譯成功后,fastboot燒入手機中。
  • 用adb shell echo 120(或者別的數字) > /data/bootchart-start 創建一個/data/bootchart-start文件并寫入值,控制采集開始
  • 用adb shell echo 1 > /data/bootchart-stop 來控制Bootchart功能關
  • 優化之前bootchart


    優化之后bootchart

    可以看出,我們可以通過bootchart清楚的分析出什么地方消耗了首次開機時間!
    注意dex2oat進程!

    在使用bootchart過程中可能會出錯(draw.py,parsing.py,samples.py),尤其是bootchart自帶的某些python文件,可以使用本文結尾的附件進行替換,或者對比進行修改!

    優化方向

    裁剪不常用的資源

  • 語言 –> build/target/product/languages_full.mk
  • 鈴聲 –> frameworks/base/data/sound/
  • 字體 –> frameworks/base/data/font/
    –> external/xxxx-font
    –> build/core/*.mk 中調用的一些ttf資源
  • 裁減掉一些不常用的APP資源
    –> LOCAL_OVERRIDES_PACKAGES使用這個屬性進行控制
  • 預加載類 和 預加載資源部分 frameworks/base/preloaded-classes
    具體代碼實現 frameworks/base/core/java/com/android/internal/os/ZygoteInit.java
  • 注:以上絕大部分是可以通過一個統一的mk進行管理的(常見的/device/vendor/product/product.mk)

    patch oat & ODEX優化

    首次開機消耗的絕大部分時間實在PMS中的dex2oat過程中;因此我們考慮在編譯過程中就將apk轉化成為odex,這樣首次開機過程中PMS就不在進行dex2oat的動作,進而可以提升首次開機時間!
    在mk文件中添加如下選項(可以考慮在choosecombo的時候設置標志位,使用宏控)!

    WITH_DEXPREOPT := true TH_DEXPREOPT=true WITH_ART_SMALL_MODE=true WITH_ART_USE_OPTIMIZING_COMPILER=true ADDITIONAL_BUILD_PROPERTIES += ro.xxxx=1

    參考資源

    Android Art config
    bootchart Python 文件

    總結

    以上是生活随笔為你收集整理的Android 首次开机优化的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。