一、Gradle 配置參數含義:
-
compileSdkVersion: 29
- 表示項目編譯時使用的 Android SDK 版本為 API 29(Android 10),僅影響編譯階段的行為(如代碼語法檢查、資源處理等),不直接影響運行時兼容性。
-
buildToolsVersion: "29.0.2"
- 表示使用的構建工具版本為
29.0.2
,需與 SDK 版本匹配。構建工具包含aapt
、zipalign
等關鍵工具。
- 表示使用的構建工具版本為
-
minSdkVersion: 21
- 應用支持的最低 Android 版本為 API 21(Android 5.0),低于此版本的設備無法安裝應用。
-
targetSdkVersion: 29
- 應用的目標運行版本為 API 29(Android 10),系統會在此版本的兼容模式下運行應用,啟用對應 API 的行為和權限控制。
二、修改 targetSdkVersion
為 30 的影響:
若僅修改 targetSdkVersion: 30
但未進行代碼適配,可能導致以下問題:
- 存儲權限變更(Scoped Storage)
- Android 11(API 30)強制啟用分區存儲,若應用未適配,文件讀寫操作可能失敗。
- 后臺位置訪問限制
- 需要用戶在前臺主動授予權限,否則后臺位置訪問會被拒絕。
- 包可見性(Package Visibility)
- 查詢其他應用信息(如包名)需在
AndroidManifest.xml
中聲明<queries>
。
- 查詢其他應用信息(如包名)需在
- 應用商店審核問題
- Google Play 和國內商店可能強制要求
targetSdkVersion >= 30
,未適配將導致拒審。
- Google Play 和國內商店可能強制要求
三、加固后簽名工具版本選擇:
- 必須使用
build-tools
中版本 ≥ 30.0.0 的apksigner.jar
- 原因:Android 11(API 30)引入的簽名機制變更(如 V3 簽名),舊版本工具可能不兼容。
- 推薦路徑:
SDK\build-tools\30.0.3\lib\apksigner.jar
(建議選擇最新穩定版,如34.0.0
)。
四、上架 OPPO 應用商店潛在問題:
targetSdkVersion
未達標- OPPO 可能要求
targetSdkVersion ≥ 30
,但若已修改為 30 則無此問題。
- OPPO 可能要求
- 權限聲明缺失
- 未適配 Android 11 的權限(如
ACCESS_BACKGROUND_LOCATION
)可能導致功能異常。
- 未適配 Android 11 的權限(如
- 隱私合規問題
- OPPO 對隱私政策彈窗、數據收集邏輯有嚴格審核,需確保加固未破壞隱私相關代碼。
- 簽名不一致
- 加固后重簽名使用的證書必須與 OPPO 開發者后臺登記的證書一致,否則會被視為非法應用。
- 兼容性崩潰
- 若未充分測試 OPPO 設備(如 ColorOS 系統),可能因定制 ROM 的權限管理或后臺限制導致崩潰。
建議操作:
- 適配 Android 11:檢查存儲、位置、包可見性等關鍵變更。
- 使用最新簽名工具:避免簽名兼容性問題。
- 全量測試:在 OPPO 真機上測試權限彈窗、后臺行為等場景。
- 檢查隱私政策:確保加固未篡改隱私相關代碼或資源。