首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android TextView 背景圖片預裝系統後丟失排查

     編輯:程式設計綜合問答

現象

普通安裝正常,預裝到系統分區(/system/app 或 /system/priv-app)後 TextView 背景圖片消失,但點擊事件正常。

可能原因

  1. 資源未正確打包進系統映像:`Android.mk` / `Android.bp` 中 `LOCAL_RESOURCE_DIR` 未包含該 drawable,或 `LOCAL_AAPT_FLAGS` 導致資源被裁剪。
  2. 密度限定符不匹配:系統構建時僅包含特定密度(如 xxhdpi),設備為其他密度且無 fallback,導致資源找不到。
  3. 權限/SELinux 阻礙資源訪問:系統應用需正確簽名與 `android:sharedUserId="android.uid.system"`。
  4. 主題/樣式覆蓋:系統主題強制設置 `android:background` 為透明或其他值。

排查步驟

  1. 解包系統 APK (`aapt dump resources`),確認 `drawable/bg_adddestbtn` 存在且密度正確。
  2. 在設備上 `adb shell cmd package dump-resources ` 查看運行時解析到的資源 ID。
  3. 檢查 `logcat` 是否有 `ResourceNotFoundException` 或 `Failed to load resource`。
  4. 對比普通安裝 APK 與系統 APK 的資源表差異。

快速修復

  • 在 `Android.mk` 添加 `LOCAL_AAPT_FLAGS := -c zzz`(保留所有密度)或顯式指定 `-c hdpi,xhdpi,xxhdpi`。
  • 將圖片放入 `drawable-nodpi` 或 `drawable-anydpi-v21` 避免密度篩選。
  • 確保 `AndroidManifest.xml` 無 `android:resourceConfigurations` 限制。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved