تفاوت دیباگ و ریلیز
فرق بین دیباگ (Debug) و ریلیز (Release) در اندروید هم از نظر رفتار اپلیکیشن متفاوته، هم از نظر نحوه ساخت، امضا، بهینهسازی و دسترسیها. اینها رو در ادامه توضیح میدم:
۱. امضا (Signing)
دیباگ: با keystore پیشفرض debug.keystore امضا میشه.
ریلیز: باید با keystore واقعی مخصوص انتشار امضا بشه (release.keystore) که معمولاً با رمز محافظت میشه.
۲. بهینهسازی (Optimization)
دیباگ: فایلها بهینه نمیشن، کلاسها obfuscate نمیشن، و اطلاعات دیباگ توش میمونه.
ریلیز: کلاسها obfuscate میشن (مثلاً با R8/ProGuard)، کد کوچکتر و سریعتر میشه.
۳. Logها
دیباگ: همهی Log.d, Log.i, Log.v نشون داده میشن.
ریلیز: معمولاً این لاگها حذف میشن یا توسط ProGuard بیاثر میشن (مگر اینکه تنظیم نشده باشن).
۴. خطایابی و دسترسی به دیباگر
دیباگ: قابل اتصال به Android Studio برای بررسی خطاها و اجرای خط به خط (breakpoint و ...)
ریلیز: معمولاً debuggable نیست (در AndroidManifest.xml یا build.gradle → debuggable false)
۵. ویژگیهای توسعه و ابزارها
دیباگ: میتونه ابزارهای تست، Mock data یا debug drawer داشته باشه.
ریلیز: این موارد معمولاً حذف میشن.
۶. عملکرد (Performance)
دیباگ: کندتره چون کد بهینه نشده، logها فعاله، و بررسیهای زمان اجرا انجام میشن.
ریلیز: سریعتره چون اپ بهینه و سبک ساخته میشه.
۷. مجوز نصب (Install permission)
دیباگ: از adb راحت میشه نصب کرد بدون امضای رسمی.
ریلیز: روی اکثر دستگاهها فقط با امضای معتبر نصب میشه.
۸. حالتهای خاص کد
ممکنه بخوای توی کدت رفتار خاص برای دیباگ و ریلیز داشته باشی:
if (BuildConfig.DEBUG) {
// فقط توی دیباگ اجرا میشه Log.d("DEBUG", "This is a debug build");
}