انواع امضادر اندروید
-
V1 (Jar Signature)
- قدیمیترین روش امضا که از اندروید 1.0 معرفی شده است.
- فقط فایلهای داخل APK را امضا میکند.
- برای نسخههای قبل از Android 7.0 ضروری است.
-
V2 (APK Signature Scheme v2)
- از Android 7.0 معرفی شد.
- کل فایل APK را امضا میکند.
- امنیت بیشتری نسبت به V1 دارد.
-
V3 (APK Signature Scheme v3)
- در Android 9.0 معرفی شد.
- امکاناتی مانند Rollback Protection را اضافه میکند.
- به مدیریت بهتر کلیدها کمک میکند.
-
V4 (APK Signature Scheme v4)
- در Android 10 معرفی شد.
- برای بهینهسازی بهروزرسانیها در Google Play استفاده میشود.
- فایل امضا Signature جدا از APK ذخیره میشود.
بررسی امضای APK
میتوان از ابزار apkSigner که در بیلد تولز اندروید وجود داره، استفاده کرد تا بررسی کنیم آیا APK به درستی امضا شده یا نه.
نحوه بررسی:
apksigner verify --verbose --print-certs my-app.apk
G:Android_sdksdkbuild-tools35.0.0apksigner.bat verify --verbose --print-certs F:app-release.apk
(چون مسیر apksigner رو توی Enviroment نداده بودم، مسیر کاملش رو نوشتم)
نکته مهم اینکه از minSDK رو کمتر از اندروید 7 بذاریم و V1 رو غیر فعال کنیم این ابزار ارور میده و نمیتونه verify کنه. اگر minSDK کمتر از 7 بود باید و حتما V1 فعال باشه. در غیر این صورت میشه V1 رو غیرفعال کرد. در کل V1 نفوذ پذیر هست و توصیه میشه مورد استفاده قرار نگیره.
نحوه معرفی امضاهای مختلف در گریدل:
در بلاک android به صورت زیر مینویسیم:
signingConfigs {
production {
v1SigningEnabled true // flase for android 7 and up
v2SigningEnabled true
enableV3Signing = true
enableV4Signing = true
keyAlias "..."
keyPassword "12345678"
storeFile file("C:/Users/Notebook/Desktop/...")
storePassword "..."
}
}