یه برنامه نویس عاشق تکنولوژی, فیزیک و یخورده فلسفه
کنترل ورژن apk اندروید با گردل
میشه گفت یکی از اون دردسرهاییه که همیشه داریم و هممون مجبور شدیم یجوری دستی کنترلش کنیم. ولی خب مثلا برنامه نویسیم هااا چرا دستی؟!؟! میتونیم با یه تیکه کد گردل حلش کنیم و دیگه از بقیه نشنویم "برنامه ات نصب نمیشه!!" :| what da ffffffffff
وقتی نسخه جدیدی تولید میکنیم، versionCode رو افزایش میدیم و apk رو تولید میکنیم ولی همه فایلهایی که تولید میشن اسمشون app-release.apk و گاها اشتباهی رخ میده و نسخه قدیمی میره برای تست و نتیجه این میشه که یا نصب نمیشه یا هیچی تغییر نکرده. واس همین بهتره از این تیکه کد استفاده کنیم و فایلهای خروجی با اسمهای مناسب تولید بکنیم.

چند تا متغیر اولی که برای مشخص کردن ورژن اپلیکیشن هستن و از این به بعد فقط قراره این متغیرها رو ست کنین و فایل خروجی با نام و ورژن مناسب تولید خواهد شد. این که چجوری این عددها رو تغییر بدین بسته به شرایط و تصمیم خودتونه ولی خب پایین یه مثاله که حسابش دستتون بیاد.
ext.versionMajor: مشخص میکنه که تغییرات بزرگی انجام شده و فیچر جدید اضافه شده
ext.versionMinor: مشخص میکنه که تغییرات کوچیکی انجام شده
ext.versionPatch: اینم برای رفع باگ و تغییرات خیلی کوچیک
ext.versionClassifier: از این برای مشخص کردن وضعیت اپلیکیشن استفاده میشه
مقادیرش میتونه alpha, beta, snapshot, release و یه همچین چیزایی باشه.
ext.isSnapshot: اینم اگه ترو باشه یعنی وضعیت مناسب برای انتشار نیست و همچین چیزی
applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = "${fileName}-${variant.versionName}.apk"
}
}این تیکه مشخص میکنه نام فایل رو چجوری ایجاد کنه
versionCode generateVersionCode()
versionName generateVersionName()اینم از توابعی که پایین می بینیم استفاده میکنه تا versionCode و versionName رو برای اپلیکیشن مشخص کنه و اینطوری اروری هنگام نصب پیش نمیاد.
private Integer generateVersionCode() {
return ext.versionMajor + ext.versionMinor + ext.versionPatch
}private String generateVersionName() {
String versionName = "${ext.versionMajor}.${ext.versionMinor}.${ext.versionPatch}"
if (ext.versionClassifier == null && ext.isSnapshot) {
ext.versionClassifier = "SNAPSHOT"
}
if (ext.versionClassifier != null) {
versionName += "." + ext.versionClassifier
}
return versionName;
}اینم که توضیح خاصی نمی خواد چیز ساده ایه.
میشه کارای تولید فایل apk رو هم با گردل یه buildscript بنویسیم با یوزر پس و آدرس فایل کلیدمون و یه تسکش کنیم که با اجرای یه تسک همه این کارا انجام بشه. ولی حالا شاید تو یه پست دیگه. فعلا ;)
مطلبی دیگر از این انتشارات
نکات کاربردی در استفاده از scope functions در اندروید
مطلبی دیگر از این انتشارات
یه راه راحت برای کار با دیتابیس در اندروید
مطلبی دیگر از این انتشارات
برنامه نویسی اندروید: خداحافظ dp ، سلام sdp!