Miért kell aláírni az APK fájlokat?
Minden Android-alkalmazást digitálisan alá kell írni a telepítés előtt. Az aláírás több célt szolgál:
- Ellenőrzi az alkalmazásfejlesztő személyazonosságát
- Biztosítja, hogy az APK-t nem manipulálták
- Lehetővé teszi az Android számára, hogy az alkalmazásfrissítéseket az eredetivel párosítsa
- Minden Android-eszközre való telepítéshez szükséges
Asztali eszköz szükséges
Az APK aláírásához parancssori eszközökre van szükség (JDK / Android SDK). Ezt nem lehet webböngészőben megtenni. Kövesse az alábbi útmutatót az APK-k számítógépen való aláírásához.
1. módszer: Jelentkezzen be apksignerrel (ajánlott)
A apksigner a Google hivatalos APK-aláíró eszköze, amely az Android SDK Build Tools része.
1. lépés: Kulcstár létrehozása
keytool -genkey -v -keystore my-release-key.jks \
-keyalg RSA -keysize 2048 -validity 10000 \
-alias my-key-alias
2. lépés: Írja alá az APK-t
apksigner sign --ks my-release-key.jks \
--ks-key-alias my-key-alias \
--out signed-app.apk unsigned-app.apk
3. lépés: Ellenőrizze az aláírást
apksigner verify --verbose signed-app.apk
2. módszer: Jelölje be aláíróval (örökölt)
# Sign
jarsigner -verbose -sigalg SHA256withRSA \
-digestalg SHA-256 \
-keystore my-release-key.jks \
app-unsigned.apk my-key-alias
# Verify
jarsigner -verify -verbose app-signed.apk
4. lépés: Zipalign (Fontos!)
Az aláírás után optimalizálja az APK-t a zipalign segítségével:
zipalign -v 4 signed-app.apk aligned-app.apk
Hibakeresési aláírás (tesztelésre)
Tesztelési célokra használhatja az alapértelmezett Android hibakeresési kulcstárolót:
# Location of debug keystore:
# Linux/Mac: ~/.android/debug.keystore
# Windows: C:\Users\{USERNAME}\.android\debug.keystore
# Sign with debug key
apksigner sign --ks ~/.android/debug.keystore \
--ks-key-alias androiddebugkey \
--ks-pass pass:android \
app.apk
Aláíró eszközök összehasonlítása
| Mutató | apksigner | jarsigner |
|---|---|---|
| V1 aláírás | ||
| V2 aláírás | ||
| V3 aláírás | ||
| Ajánlott | Örökség |
APK aláíró – Gyakran Ismételt Kérdések
Gyakori kérdések az APK-aláírással, a kulcstárolókkal és az Android-kód aláírásával kapcsolatban
Miért számít az igazítási sorrend (zipalign Before apksigner) Android 11–15
A fejlesztők és a modderek egyik leggyakoribb hibája egy módosított vagy egyesített APK aláírásakor, hogy a zipalign után futtatását írja alá a csomag – vagy a Java régi jarsigner segédprogramját használják a Google Android SDK apksigner helyett. Mivel az APK Signature Scheme v2 és v3 kriptográfiai kivonatot számít ki a ZIP archívum teljes bináris elrendezésén, a bájteltolások módosítása a zipalign paraméterrel az aláírás után azonnal érvényteleníti a v2/v3 aláírásblokkot.
Az Android 11-től (30-as API-szint) kezdődően, és szigorúan az Android 14-re és 15-re érvényes, a PackageManager két nem megtárgyalható feltételt ír elő minden modern SDK-szinteket célzó APK-hoz:
- Tömörítetlen 4 bájtos igazított resources.arsc: A lefordított erőforrástáblázatot (resources.arsc) tömörítetlenül (STORED) kell tárolni, és egy 4 bájtos határra kell igazítani, hogy az Android közvetlenül a RAM-ba másolás nélkül tudja memóriatérképezni (mmap). Mindig hajtsa végre a zipalign -p -f -v 4 input.apk aligned.apk előtt aláírást.
- Kötelező v2+ aláírásblokk: A 30+ API-t célzó APK jarsigner-vel való aláírása (amely csak v1 META-INF/ aláírást ír), az Android 11–15 elutasítja a telepítést a INSTALL_PARSE_FAILED_NO_CERTIFICATES-vel. Használja a fenti interaktív parancsgenerátort a pontos apksigner --v2-signing-enabled=true parancs létrehozásához a kulcstárhoz, vagy ellenőrizze az aláírt kimenetet a APK aláírás-ellenőrző-ben.