[英]Targeting R+ (version 30 and above) requires the resources.arsc of installed APKs to be stored uncompressed and aligned on a 4-byte boundary
我正在嘗試將 android 目標 API 從 29 更新到 30。我已更新:
compileSdkVersion = 30
targetSdkVersion = 30
buildToolsVersion = "30.0.2"
該應用程序在根據官方文檔簽名之前與zipalign -p -f -v 4
對齊。
當我嘗試adb install
.apk
但是我得到:
失敗 [-124: installPackageLI 期間解析失敗:定位 R+(版本 30 及更高版本)要求將已安裝 APK 的 resources.arsc 未壓縮存儲並在 4 字節邊界上對齊]
有沒有人在這方面取得任何成功?
我有一個類似的問題。
它不應該被壓縮。 如果是,那是你的問題。 不知何故,您需要使其不被壓縮。 它應該看起來像
resources.arsc (OK)
試試這個——
unzip -q -o ur-apk.apk -d ur-unzipped-apk-folder
cd ur-unziped-apk-folder
zip -n "resources.arsc" -qr ../zipped.apk *
根據官方文檔,使用此 zipped.apk 進行對齊和簽名。
注意 - 面向 Android 11(API 級別 30)或更高版本的應用如果包含壓縮的 resources.arsc 文件或此文件未在 4 字節邊界上對齊,則無法安裝
https://developer.android.com/about/versions/11/behavior-changes-11#app-packaging https://developer.android.com/studio/build/building-cmdline#sign_cmdline
如果您 zipalign 然后使用舊版本的jarsigner
簽名,那么它將在簽名過程中不對齊!
請務必使用較新的apksigner
。 在我的系統上,它位於~/Android/Sdk/build-tools/32.0.0/apksigner
這是我的 repack-n-sign 腳本。 請注意,您可能需要更新 BUILD_TOOLS 路徑並將其設置為正確的位置:
#!/bin/sh
BUILD_TOOLS=~/Android/Sdk/build-tools/32.0.0/
if [ -z "$1" ]; then
echo "usage: $0 your-app.apk"
exit 1
fi
DIR=`mktemp -d`
DN=`dirname "$1"`
BN=`basename "$1"`
OUT="$DN/repacked-$BN"
OUT_ALIGNED="$DN/aligned-$BN"
OUT_SIGNED="$DN/signed-$BN"
# Debug mode
set -x
# Repack without the META-INF in case it was already signed
# and flag resources.arsc as no-compress:
unzip -q "$1" -d "$DIR"
pushd .
cd $DIR
rm -rf "$DIR/META-INF"
zip -n "resources.arsc" -r ../repacked.$$.apk *
popd
mv "$DIR/../repacked.$$.apk" "$OUT"
# Align
rm -f "$OUT_ALIGNED"
"$BUILD_TOOLS"/zipalign -p -v 4 "$OUT" "$OUT_ALIGNED"
# Verify
"$BUILD_TOOLS"/zipalign -vc 4 "$OUT_ALIGNED"
# Sign
"$BUILD_TOOLS"/apksigner sign -verbose -ks ~/my-release-key.keystore --out "$OUT_SIGNED" "$OUT_ALIGNED"
# Cleanup
rm -rf "$DIR"
echo == Done: $OUT_ALIGNED
很抱歉提出問題,但是,我是 Stackoverflow 的新用戶,在我有足夠的聲望點之前無法對答案發表評論 - 被迫提出問題以獲得@T Aria 的澄清。
您使用的是什么 zip 實用程序,它具有“zip”和“unzip”命令來解壓縮 resources.arsc 文件?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.