APK فائلوں پر دستخط کرنے کی ضرورت کیوں ہے؟
ہر Android ایپ کو انسٹال کرنے سے پہلے ڈیجیٹل طور پر دستخط کرنا ضروری ہے۔ دستخط کئی مقاصد کو پورا کرتا ہے:
- ایپ ڈویلپر کی شناخت کی تصدیق کرتا ہے۔
- یقینی بناتا ہے کہ APK کے ساتھ چھیڑ چھاڑ نہیں کی گئی ہے۔
- Android کو ایپ اپ ڈیٹس کو اصل کے ساتھ ملانے کی اجازت دیتا ہے۔
- تمام Android آلات پر انسٹال کرنے کے لیے درکار ہے۔
ڈیسک ٹاپ ٹول درکار ہے۔
APK پر دستخط کرنے کے لیے کمانڈ لائن ٹولز (JDK / Android SDK) کی ضرورت ہوتی ہے۔ یہ ویب براؤزر میں نہیں کیا جا سکتا۔ اپنے کمپیوٹر پر APKs پر دستخط کرنے کے لیے نیچے دی گئی گائیڈ پر عمل کریں۔
طریقہ 1: apksigner کے ساتھ سائن کریں (تجویز کردہ)
apksigner گوگل کا آفیشل APK سائن کرنے والا ٹول ہے، جو Android SDK بلڈ ٹولز میں شامل ہے۔
مرحلہ 1: ایک کیسٹور بنائیں
keytool -genkey -v -keystore my-release-key.jks \
-keyalg RSA -keysize 2048 -validity 10000 \
-alias my-key-alias
مرحلہ 2: APK پر دستخط کریں۔
apksigner sign --ks my-release-key.jks \
--ks-key-alias my-key-alias \
--out signed-app.apk unsigned-app.apk
مرحلہ 3: دستخط کی تصدیق کریں۔
apksigner verify --verbose signed-app.apk
طریقہ 2: jarsigner کے ساتھ دستخط کریں (وراثت)
# 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: Zipalign (اہم!)
دستخط کرنے کے بعد، zipalign کے ساتھ APK کو بہتر بنائیں:
zipalign -v 4 signed-app.apk aligned-app.apk
ڈیبگ سائننگ (ٹیسٹنگ کے لیے)
جانچ کے مقاصد کے لیے، آپ ڈیفالٹ Android ڈیبگ کی اسٹور استعمال کر سکتے ہیں:
# 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
سائننگ ٹولز کا موازنہ
| معیار | apksigner | jarsigner |
|---|---|---|
| V1 دستخط | ||
| V2 دستخط | ||
| V3 دستخط | ||
| تجویز کردہ | میراث |
APK دستخط کنندہ — اکثر پوچھے گئے سوالات
APK پر دستخط کرنے، کی اسٹورز، اور Android کوڈ پر دستخط کرنے کے بارے میں عام سوالات
Android 11–15 پر الائنمنٹ آرڈر (apksigner سے پہلے zipalign) کیوں اہمیت رکھتا ہے
ترمیم شدہ یا ضم شدہ APK پر دستخط کرتے وقت ڈویلپرز اور موڈرز کی اکثر غلطیوں میں سے ایک zipalign کے بعد کو چلانا ہے پیکیج پر دستخط کرنا — یا Google کے Android SDK apksigner کی بجائے Java کی لیگیسی jarsigner یوٹیلیٹی استعمال کرنا۔ چونکہ APK دستخطی اسکیم v2 اور v3 زپ آرکائیو کے پورے بائنری لے آؤٹ پر ایک کرپٹوگرافک ہیش کی گنتی کرتے ہیں، سائن کرنے کے بعد zipalign کے ساتھ بائٹ آفسیٹس میں ترمیم کرنا v2/v3 دستخطی بلاک کو فوری طور پر باطل کر دیتا ہے۔
Android 11 (API لیول 30) کے ساتھ شروع کرتے ہوئے اور Android 14 اور 15 پر سختی سے نافذ، پیکیج مینجر کو جدید SDK لیولز کو نشانہ بنانے والے کسی بھی APK کے لیے دو غیر گفت و شنید شرائط درکار ہیں:
- غیر کمپریسڈ 4-بائٹ الائنڈ resources.arsc: مرتب کردہ ریسورس ٹیبل (resources.arsc) کو غیر کمپریسڈ (STORED) ذخیرہ کیا جانا چاہیے اور 4 بائٹ باؤنڈری پر منسلک ہونا چاہیے تاکہ Android اسے RAM میں کاپی کیے بغیر اسے براہ راست میموری میپ (mmap) کر سکے۔ ہمیشہ zipalign -p -f -v 4 input.apk aligned.apk پہلے پر دستخط کریں۔
- لازمی v2+ دستخطی بلاک: jarsigner (جو صرف v1 META-INF/ دستخط لکھتا ہے) کے ساتھ ایک APK کو ہدف بنانے والے API 30+ پر دستخط کرنے سے Android 11–15 INSTALL_PARSE_FAILED_NO_CERTIFICATES کے ساتھ انسٹال کو مسترد کر دے گا۔ اپنے کی اسٹور کے لیے عین مطابق apksigner --v2-signing-enabled=true کمانڈ بنانے کے لیے اوپر دیے گئے انٹرایکٹو کمانڈ جنریٹر کا استعمال کریں، یا ہمارے APK دستخطی تصدیق کنندہ میں اپنے دستخط شدہ آؤٹ پٹ کی تصدیق کریں۔