現象
普通安裝正常,預裝到系統分區(/system/app 或 /system/priv-app)後 TextView 背景圖片消失,但點擊事件正常。
可能原因
- 資源未正確打包進系統映像:`Android.mk` / `Android.bp` 中 `LOCAL_RESOURCE_DIR` 未包含該 drawable,或 `LOCAL_AAPT_FLAGS` 導致資源被裁剪。
- 密度限定符不匹配:系統構建時僅包含特定密度(如 xxhdpi),設備為其他密度且無 fallback,導致資源找不到。
- 權限/SELinux 阻礙資源訪問:系統應用需正確簽名與 `android:sharedUserId="android.uid.system"`。
- 主題/樣式覆蓋:系統主題強制設置 `android:background` 為透明或其他值。
排查步驟
- 解包系統 APK (`aapt dump resources`),確認 `drawable/bg_adddestbtn` 存在且密度正確。
- 在設備上 `adb shell cmd package dump-resources ` 查看運行時解析到的資源 ID。
- 檢查 `logcat` 是否有 `ResourceNotFoundException` 或 `Failed to load resource`。
- 對比普通安裝 APK 與系統 APK 的資源表差異。
快速修復
- 在 `Android.mk` 添加 `LOCAL_AAPT_FLAGS := -c zzz`(保留所有密度)或顯式指定 `-c hdpi,xhdpi,xxhdpi`。
- 將圖片放入 `drawable-nodpi` 或 `drawable-anydpi-v21` 避免密度篩選。
- 確保 `AndroidManifest.xml` 無 `android:resourceConfigurations` 限制。