?? ? ? ? 最近給游戲出包,平臺要求 v1 簽名吧,AS 打包后,adb 執行安裝到手機,我用的設備是google pixel6 , android 系統 13,?提示如下:
?
adb install -r v5_android_202308161046.apk
Performing Streamed Install
adb: failed to install /Users/Project/GitLab/tank/androidhtc/app/release/v5_android_202308161046.apk: Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES: Scanning Failed.: No signature found in package of version 2 or newer for package com.test.android]
字面意思理解就是安裝包沒有 V2 或更高等級的簽名。我又嘗試在三星平板android系統 8 上安裝,咦,安裝成功了。那可能就是跟設備 Api 版本有關系了。然后在官網找,看到了android 11(api 30)的新特性。官網地址:https://developer.android.com/about/versions/11/behavior-changes-11?hl=zh-cn
android 11里面有一項應用打包和安裝:
一、壓縮的資源文件
? ? ? ? 如果以 Android?11(API 級別?30)或更高版本為目標平臺的應用包含壓縮的?resources.arsc
?文件或者如果此文件未按 4 字節邊界對齊,應用將無法安裝。如果存在其中任意一種情況,系統將無法對此文件進行內存映射。無法進行內存映射的資源表必須讀入 RAM 中的緩沖區,從而給系統造成不必要的內存壓力,并大大增加設備的 RAM 使用量。
二、現在需要 APK 簽名方案 v2
?? ? ? ?對于以 Android?11(API 級別?30)為目標平臺,且目前僅使用 APK 簽名方案 v1 簽名的應用,現在還必須使用?APK 簽名方案 v2?或更高版本進行簽名。用戶無法在搭載 Android?11 的設備上安裝或更新僅通過 APK 簽名方案 v1 簽名的應用。
注:如需驗證您的應用是否已使用 APK 簽名方案 v2 或更高版本進行簽名:
apksigner verify -v test.apk
?
大概意思是 targetSdk 30及以上需要 v2 簽名
?解決方案:targetSdk 版本調整成?29 解決