Bakit Kailangang Lagdaan ang Mga APK File?
Dapat digitally sign ang bawat Android app bago ito ma-install. Ang lagda ay nagsisilbi sa ilang mga layunin:
- Bine-verify ang pagkakakilanlan ng developer ng app
- Tinitiyak na hindi na-tamper ang APK
- Nagbibigay-daan sa Android na itugma ang mga update ng app sa orihinal
- Kinakailangan para sa pag-install sa lahat ng mga Android device
Kinakailangan ang Desktop Tool
Ang pag-sign ng APK ay nangangailangan ng mga tool sa command-line (JDK / Android SDK). Hindi ito maaaring gawin sa isang web browser. Sundin ang gabay sa ibaba para mag-sign ng mga APK sa iyong computer.
Paraan 1: Mag-sign gamit ang apksigner (Inirerekomenda)
Ang apksigner ay ang opisyal na tool sa pag-sign ng APK ng Google, kasama sa Android SDK Build Tools.
Hakbang 1: Bumuo ng Keystore
keytool -genkey -v -keystore my-release-key.jks \
-keyalg RSA -keysize 2048 -validity 10000 \
-alias my-key-alias
Hakbang 2: Lagdaan ang APK
apksigner sign --ks my-release-key.jks \
--ks-key-alias my-key-alias \
--out signed-app.apk unsigned-app.apk
Hakbang 3: I-verify ang Lagda
apksigner verify --verbose signed-app.apk
Paraan 2: Mag-sign gamit ang jarsigner (Legacy)
# 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
Hakbang 4: Zipalign (Mahalaga!)
Pagkatapos mag-sign, i-optimize ang APK gamit ang zipalign:
zipalign -v 4 signed-app.apk aligned-app.apk
Debug Signing (Para sa Pagsubok)
Para sa mga layunin ng pagsubok, maaari mong gamitin ang default na Android debug keystore:
# 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
Paghahambing ng Mga Tool sa Pagpirma
| Sukatan | apksigner | jarsigner |
|---|---|---|
| V1 Lagda | ||
| V2 Lagda | ||
| V3 Lagda | ||
| Inirerekomenda | Legacy |
Tagalagda ng APK — Mga Madalas Itanong
Mga karaniwang tanong tungkol sa APK signing, keystores, at Android code signing
Bakit Mahalaga ang Alignment Order (zipalign Bago ang apksigner) sa Android 11–15
Ang isa sa mga pinakamadalas na pagkakamaling ginagawa ng mga developer at modder kapag pumirma sa isang binago o pinagsamang APK ay ang pagpapatakbo ng zipalign pagkatapos sa pagpirma sa package—o paggamit ng legacy na jarsigner utility ng Java sa halip na ang Android SDK apksigner ng Google. Dahil ang APK Signature Scheme v2 at v3 ay nagku-compute ng cryptographic hash sa buong binary layout ng ZIP archive, ang pagbabago ng mga byte offset gamit ang zipalign pagkatapos ng pag-sign ay agad na magpapawalang-bisa sa v2/v3 signature block.
Simula sa Android 11 (API level 30) at mahigpit na ipinatupad sa Android 14 at 15, ang PackageManager ay nangangailangan ng dalawang hindi mapag-usapan na kundisyon para sa anumang APK na nagta-target sa mga modernong antas ng SDK:
- Hindi naka-compress na 4-Byte na Naka-align resources.arsc: Ang pinagsama-samang talahanayan ng mapagkukunan (resources.arsc) ay dapat na naka-imbak nang hindi naka-compress (STORED) at nakahanay sa isang 4-byte na hangganan upang ang Android ay direktang mapa-memorya (mmap) nang hindi ito kinokopya sa RAM. Palaging isagawa ang zipalign -p -f -v 4 input.apk aligned.apk dati signing.
- Mandatoryong v2+ Signature Block: Ang pag-sign ng APK na nagta-target sa API 30+ gamit ang jarsigner (na nagsusulat lamang ng v1 META-INF/ na lagda) ay magiging sanhi ng Android 11–15 upang tanggihan ang pag-install gamit ang INSTALL_PARSE_FAILED_NO_CERTIFICATES. Gamitin ang interactive na command generator sa itaas para buuin ang eksaktong apksigner --v2-signing-enabled=true command para sa iyong keystore, o i-verify ang iyong nilagdaang output sa aming Tagasuri ng Lagda ng APK.