想要絲綢般順滑的系統執行,千萬別錯過這些Android 效能最佳化的小貼士
在不影響系統執行正確性的前提下,使之執行地更快,完成特定功能所需的時間更短。這樣我們就要進行效能最佳化,我就來給大家講一些Android 效能最佳化的小tip
還有,Android學習PDF+原始碼筆記+面試文件+進階影片的學習集合,可以
點這裡無償贈送
一、Pinner service 配置最佳化
修改
/frameworks/base/core/res/res/values/config.xml
新增如下程式碼:
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">... ... <!-- Default files to pin via Pinner Service --> <string-array translatable="false" name="config_defaultPinnerServiceFiles"> <item>"/system/framework/arm/boot-framework.art"</item> <item>"/system/lib/libjavacrypto.so"</item> <item>"/system/lib/libhidltransport.so"</item> <item>"/system/framework/arm/boot-core-libart.oat"</item> <item>"/system/framework/arm/boot-conscrypt.oat"</item> <item>"/system/framework/arm/boot-core-libart.art"</item> <item>"/system/framework/arm/boot-ext.art"</item> <item>"/system/framework/arm/boot.art"</item> <item>"/system/framework/arm/boot-framework.art"</item> </string-array>... ... </resources>
二、關閉 WIFI Debugging
修改
frameworks/base/core/res/res/values/config.xml
<bool translatable="false" name="config_wifi_enable_wifi_firmware_debugging">false</bool><integer translatable="false" name="config_wifi_logger_ring_buffer_verbose_size_limit_kb">64</integer>
三、預設關閉BT、關閉自動旋轉
修改
frameworks/base/packages/SettingsProvider/res/values/defaults.xml
<?xml version="1.0" encoding="utf-8"?> <resources> ... ... <bool name="def_bluetooth_on">false</bool> <!-- Do not enable auto rotation switching. --> <bool name="def_accelerometer_rotation">false</bool> ... ... </resources>
四、預設值使用32為程式
TARGET_ARCH
和
TARGET_ARCH_VARIANT
宣告為 32 位架構,同時不要宣告
TARGET_2ND_ARCH
或者
TARGET_2ND_ARCH_VARIANT
同時配置
zygote
為
32-bit:
PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.zygote=zygote32
五、AMS 部分的引數調整
修改程式碼
frameworks\base\services\core\java\com\android\server\am\ActivityManagerConstants.java:
調整預設後臺最大快取程式數為 16:
private static final int DEFAULT_MAX_CACHED_PROCESSES = SystemProperties.getInt("ro....s.fw.bg_apps_limit",16);
六、螢幕輸出幀率最佳化
首先保證
NUM_FRAMEBUFFER_SURFACE_BUFFERS
值必須為
3
,另外可調整
SurfaceFlinger buffer size
,例如:
修改
frameworks\native\services\surfaceflinger\Layer.cpp
檔案
將 mProducer->setMaxDequeuedBufferCount(2); 更改為 mProducer->setMaxDequeuedBufferCount(3)
七、滑動幀速率低問題最佳化方案
修改 Framework 下的view config 資訊,具體程式碼路徑為
frameworks\base\core\java\android\view\ ViewConfiguration.java
修改方案如下:
private static final int TOUCH_SLOP = 15;//設定 slop 為 15private static final int MINIMUM_FLING_VELOCITY = 60; //設定為 60
八、檔案系統最佳化
對應低記憶體裝置,建議更改userdata 分割槽格式為f2fs格式,減小系統開銷。
修改方案如下:
device\xxx\xxxx_專案\BoardConfig.mk
TARGET_USERIMAGES_USE_F2FS := trueBOARD_USERDATAIMAGE_FILE_SYSTEM_TYPE := f2fs
九、關閉 Dm_verity 功能
對於低記憶體裝置,Google 官方建議關閉 dm_verity 功能。
關閉方法如下:
1.修改
device\xxx\xxxx_專案\xxx_專案.mk
關閉
dm_verity
宏開關
PRODUCT_SUPPORTS_VERITY := false //設定為 false
2.kernel 部分
刪除
dm_verity
宏開關支援。
CONFIG_DM_VERITY=y //刪除這條宏
3.system 分割槽引數修改
在對應 system 分割槽掛載的引數去掉 verify 屬性,例如:
/dev/block/bootdevice/by-name/system /system ext4 ro,barrier=1 wait,verify //去掉verify屬 性
分割槽的掛載一般是在 fstab.qcom 中實現。
8909go 的專案需要單獨在 kernel 對應的 dtsi 檔案中對應的分割槽刪除 verify 屬性,修改後的內
容如下:
system { compatible = "android,system"; dev = "/dev/block/platform/soc/7824900.sdhci/by-name/system";type = "ext4"; mnt_flags = "ro,barrier=1"; fsmgr_flags = "wait"; status = "ok"; };
十、最佳化 Touch boost 功能
對於 SmartPhone 可以開啟 Touch boost,提升應用啟動速度,開啟方法如下:
修改
kernel/msm-4.4/drivers/cpufreq/cpu-boost.c
程式碼
相關變數如下:
/sys/module/cpu_boost/parameters/input_boost_freq /sys/module/cpu_boost/parameters/input_boost_ms /sys/module/cpu_boost/parameters/sched_boost_on_input
開啟方法如下:
1. kernel 部分:
kernel config: CONFIG_CPU_BOOST=y defconfig file: kernel/msm-4.4/arch/arm64/configs/xxx_defconfig
2.init.rc 中新增以下內容:
echo 0:1747200 1:1747200 2:1747200 3:1747200 4:1747200 5:1747200 6:1747200 7:1747200 > /sys/module/cpu_boost/parameters/input_boost_freq
最後
如果上面幾點還無法滿足,可以看這本《Android應用效能最佳化》
需要PDF版的朋友,可以私信我贈送
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952849/viewspace-2670130/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- flutter系列之:如絲般順滑的SliverAppBarFlutterAPP
- 讓API並行呼叫變得如絲般順滑的絕招API並行
- 如何把 Caffeine Cache 用得如絲般順滑?
- 全是乾貨,讓git如絲般順滑,git的一些常用命令Git
- 這些機構名稱的表述千萬別錯
- Java事務註解:讓你的程式碼如絲般順滑Java
- Mac Mouse Fix 2.0.0 Beta 13 (讓你的mac滑鼠絲般順滑)Mac
- 五個 .NET 效能小貼士
- 如絲般順滑:DDD再實踐之類目樹管理
- dart系列之:如絲滑般柔順,操作檔案和目錄Dart
- 教你嚐鮮「快應用」!體驗秒開,如絲般順滑!
- java/android 做題中整理的碎片小貼士(4)JavaAndroid
- 直播預告|千萬級訂單、百萬人觀看無卡頓!京東雲CDN支撐直播絲般順滑
- Android 效能最佳化之執行緒Android執行緒
- 微信小程式效能優化方案——讓你的小程式如此絲滑微信小程式優化
- 聊聊如何讓springboot攔截器的執行順序按我們想要的順序執行Spring Boot
- Spring狀態機(FSM),讓訂單狀態流轉如絲般順滑Spring
- 【小貼士】資料庫的備份資料庫
- 如絲般順滑!一線運維人員談如何實現資料庫的平滑線上升級運維資料庫
- 【Cron表示式】小貼士
- 更新Kali的Metasploit框架,這些過程千萬不要踩雷!框架
- 血的教訓!千萬別在生產使用這些 redis 指令Redis
- mysql group by 執行原理及千萬級別count 查詢最佳化MySql
- 想要短視訊流量高效裂變?你千萬不能錯過這款同城拓客工具!
- 執行緒池中你不容錯過的一些細節執行緒
- 學會這些CSS技巧讓你寫樣式更加絲滑CSS
- 邦芒貼士:千萬不能聽信的五條職場建議
- Webpack DllPlugin 讓構建速度柔順絲滑WebPlugin
- 關於Web前端面試的小技巧,千萬不要錯過!Web前端面試
- iOS 如何絲滑的側滑返回iOS
- 提升自然下載量的3個小貼士
- Linux系統的七個執行級別Linux
- 效能最佳化的一般策略及方法
- 小程式的這些坑你踩過嗎?
- 『CDN』讓你的網站訪問起來更加柔順絲滑網站
- 讓Vue專案更絲滑的幾個小技巧Vue
- 一些執行maven命令的報錯Maven
- dotnet core 3.0 linux 部署小貼士Linux