Skip to main content
Select a menu in the customizer

Android 爛裝置想跑人臉辨識2 – 記憶體優化-無用系統服務out

Qcom 標準 BSP 記憶體優化實作

按照 Qcom 提供的標準 BSP,若直接 build 好整個 image 並燒錄到先前提到的低端裝置上,啟動後很可能會立即 crash,主要原因就是記憶體不足。系統開機即佔用 1.3GB RAM,因此,首要優化步驟是:

1. 移除非必要的 Service 與 App

這雖然聽起來像是基本操作,但效果顯著。由於這台設備的使用場景單一(固定在人臉辨識機上,且長期插電運行),並不像手機需要支援全方位功能。因此,我們只需專注於人臉辨識應用所需的資源。

調整 qcom/common/base.mk

qcom/common/base.mk 中移除以下應用,這些應用預設會載入部分系統服務(如 MediaScanner, CalendarProvider),移除後可降低約 100MB RAM 佔用,並減少後台進程數量:

  • Music
  • Gallery
  • Calendar
  • Updater

透過 ADB 檢視記憶體佔用情況

使用以下指令來查看後台應用的記憶體佔用情況,幫助找出佔用 RAM 最多的進程,決定哪些可以移除:

adb shell dumpsys meminfo | grep -E "TOTAL|com.android"

或使用:

adb shell top -m 10 -o RES,PID,CMD

2. 關閉不必要的系統服務

調整 frameworks/base/services/Android.mk/system/etc/init/hw/init.rc

以下服務可視需求關閉,以進一步減少記憶體佔用:

  • 關閉藍牙com.android.bluetooth
  • 關閉 NFCcom.android.nfc
  • 禁用 SMScom.android.mms
  • 禁用 Telephonycom.android.phone
  • 關閉 Wi-Ficom.android.net.wifi
  • 移除系統 UIcom.android.systemui,需確認替代方案)
  • 移除桌面應用com.android.launcher
  • 禁用媒體服務com.android.media
  • 關閉語音輸入com.android.speech
  • 禁用輸入法com.android.inputmethod.latin
  • 關閉列印服務com.android.print

使用 setprop 來禁用部分功能

setprop persist.sys.bluetooth.disabled 1
setprop persist.sys.nfc.disabled 1

注意: 建議逐項關閉並測試,以確保系統穩定性。

3. 優化後的系統記憶體使用情況

項目記憶體減少量
優化前(原生 BSP)1.3GB RAM
移除不必要 App(Music, Gallery 等)-100MB
關閉不必要服務(Bluetooth, NFC, WiFi 等)-130MB
最終系統記憶體使用1.1GB RAM

成功釋放 230MB 記憶體,可用於人臉辨識 AI 模型 🎯

4. 不能關閉的核心服務

以下系統核心服務必須保留,否則會影響設備正常運行:

  • Android 核心服務system_server, surfaceflinger, inputflinger 等)
  • 網路與電源管理服務netmgrd, thermal-engine

總結

  1. 移除非必要 App(節省約 100MB)
  2. 關閉無用系統服務(節省約 130MB)
  3. 保留必要的核心服務 確保系統穩定
  4. 最終騰出 230MB 記憶體,讓 AI 模型能夠更順暢運行。

https://blog.csdn.net/Kennethdroid/article/details/101221185