امضا کننده APK

امضاکننده APK آنلاین — چگونه فایل های APK را رایگان امضا کنیم

راهنمای کامل امضاکننده APK - یاد بگیرید که چگونه فایل های APK را امضا کنید را با استفاده از apksigner، jarsigner، یا فروشگاه کلید اشکال زدایی کنید. گام به گام آموزش امضای APK رایگان برای توسعه دهندگان و آزمایش کنندگان. APK را بدون Android Studio امضا کنید.

چرا فایل های APK باید امضا شوند؟

هر برنامه Androidی قبل از نصب باید امضای دیجیتالی داشته باشد. امضا چندین هدف را دنبال می کند:

  • هویت توسعه‌دهنده برنامه را تأیید می‌کند
  • اطمینان حاصل می کند که APK دستکاری نشده است
  • به Android اجازه می‌دهد به‌روزرسانی‌های برنامه را با نسخه اصلی مطابقت دهد
  • برای نصب در تمام دستگاه های Androidی مورد نیاز است

ابزار دسکتاپ مورد نیاز است

امضای APK به ابزارهای خط فرمان (JDK / Android SDK) نیاز دارد. این کار را نمی توان در مرورگر وب انجام داد. برای امضای فایل‌های APK در رایانه خود، راهنمای زیر را دنبال کنید.

روش 1: با apksigner امضا کنید (توصیه می شود)

apksigner ابزار رسمی امضای APK گوگل است که در Android SDK Build Tools گنجانده شده است.

مرحله 1: یک Keystore ایجاد کنید

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 (مهم!)

پس از امضا، APK را با zipalign بهینه کنید:

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

مقایسه ابزار امضا

معیارapksignerjarsigner
امضای V1
امضای V2
امضای V3
توصیه می شودمیراث

APK Signer - سوالات متداول

سوالات متداول درباره امضای APK، ذخیره‌سازی کلیدها و امضای کد Android

برای یک فایل APK را امضا کنید، به apksigner (توصیه شده) یا jarsigner نیاز دارید: (1) با استفاده از keytool -genkey یک فروشگاه کلید ایجاد کنید، (2) APK را با apksigner sign --ks my-key.jks --out signed.apk unsigned.apk امضا کنید، (3) امضا را با apksigner verify signed.apk تأیید کنید. همچنین می‌توانید از فروشگاه کلیدهای دیباگ Android برای اهداف آزمایشی استفاده کنید. این روش استاندارد APK را بدون Android Studio امضا کنید است.

در حالی که نمی توانید APK را به صورت آنلاین امضا کنید ایمن کنید (زیرا امضای APK به فروشگاه کلید خصوصی شما نیاز دارد که هرگز نباید در هیچ سروری آپلود شود)، می توانید از راهنمای امضاکننده APK رایگان ما برای امضای فایل های APK در دستگاه محلی خود استفاده کنید. آموزش گام به گام ما شما را با استفاده از ابزارهای رسمی apksigner و jarsigner Google در کل فرآیند راهنمایی می کند. پس از امضا، از تأیید کننده امضای APK ما برای تأیید آنلاین امضای رایگان استفاده کنید.

V1 (امضای JAR): طرح امضای اصلی Android. هر ورودی ZIP را به صورت جداگانه تأیید می کند. کندتر اما به طور گسترده با تمام نسخه های Android سازگار است. V2 (طرح امضای APK): در Android 7.0 معرفی شد. کل APK را به طور کلی تأیید می کند و نصب سریعتر را ارائه می دهد. V3 (APK Signature Scheme v3): Android 9.0+، از چرخش کلید پشتیبانی می کند. V4: Android 11.0+، نصب جریان را فعال می کند. از apksigner برای پشتیبانی از همه طرح ها استفاده کنید. jarsigner فقط از V1 پشتیبانی می کند.

برای APK را بدون Android Studio امضا کنید: (1) جاوا JDK 8 یا بالاتر را نصب کنید، (2) Android SDK Build Tools را دانلود کنید که شامل apksigner است، یا ابزار مستقل همراه را دانلود کنید، (3) یک فروشگاه کلید ایجاد کنید: keytool -genkey -v -keystore my-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-alias، (4) علامت: apksigner sign --ks my-key.jks --out signed.apk app.apk. این روش در Windows، مک و لینوکس بدون نیاز به نصب کامل Android Studio کار می کند.

زیپالاین یک ابزار Android SDK است که داده‌های فشرده نشده را در APK در مرزهای 4 بایت تراز می‌کند. این بهینه سازی مصرف رم را زمانی که برنامه روی دستگاه اجرا می شود کاهش می دهد. مهم: اگر از apksigner استفاده می کنید، قبل از امضا، zipalign را اجرا کنید. اگر از jarsigner (میراث) استفاده می کنید، پس از امضا، zipalign را اجرا کنید. دستور: zipalign -v 4 input.apk output.apk. Google Play برای ارسال به فایل‌های APK نیاز دارد که فشرده شوند.

چرا ترتیب تراز (zipalign قبل از apksigner) در Android 11-15 مهم است

یکی از متداول‌ترین اشتباهاتی که توسعه‌دهندگان و اصلاح‌کنندگان هنگام امضای یک APK اصلاح‌شده یا ادغام‌شده مرتکب می‌شوند، اجرای zipalign بعد از امضای بسته یا استفاده از ابزار قدیمی جاوا jarsigner به‌جای Android SDK apksigner است. از آنجا که APK Signature Scheme v2 و v3 یک هش رمزنگاری را روی کل طرح بندی باینری بایگانی ZIP محاسبه می کند، تغییر افست بایت با zipalign پس از امضا بلافاصله بلوک امضای v2/v3 را باطل می کند.

PackageManager که با Android 11 (سطح API 30) شروع می‌شود و دقیقاً در Android 14 و 15 اجرا می‌شود، به دو شرط غیرقابل مذاکره برای هر APK که سطوح SDK مدرن را هدف قرار می‌دهد، نیاز دارد:

  • تراز 4 بایتی فشرده نشده resources.arsc: جدول منابع کامپایل شده (resources.arsc) باید فشرده نشده (STORED) ذخیره شود و در یک مرز 4 بایتی تراز شود تا Android بتواند مستقیماً بدون کپی کردن آن در RAM، آن را نقشه حافظه (mmap) کند. همیشه امضای zipalign -p -f -v 4 input.apk aligned.apk قبل از را اجرا کنید.
  • بلوک امضای اجباری v2+: امضای APK با هدف قرار دادن API 30+ با jarsigner (که فقط یک امضای v1 META-INF/ می‌نویسد) باعث می‌شود Android 11–15 نصب با INSTALL_PARSE_FAILED_NO_CERTIFICATES را رد کند. از مولد فرمان تعاملی بالا برای ساختن دستور دقیق apksigner --v2-signing-enabled=true برای فروشگاه کلید خود استفاده کنید یا خروجی امضا شده خود را در تأیید کننده امضای APK ما تأیید کنید.
مهندسی و مستند شده توسط Mst Shaefale توسعه‌دهنده اصلی و معمار بسته Android • تأییدشده در Android 12–15

همه ابزارهای موجود در جعبه ابزار XAPK به APK 100% به صورت محلی در مرورگر شما از طریق JavaScript و WebAssembly اجرا می شوند. یک edge case با یک بسته خاص پیدا کردید؟ آن را به تیم مهندسی ما گزارش دهید.