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

چند تا متغیر اولی که برای مشخص کردن ورژن اپلیکیشن هستن و از این به بعد فقط قراره این متغیرها رو ست کنین و فایل خروجی با نام و ورژن مناسب تولید خواهد شد. این که چجوری این عددها رو تغییر بدین بسته به شرایط و تصمیم خودتونه ولی خب پایین یه مثاله که حسابش دستتون بیاد.
ext.versionMajor: مشخص میکنه که تغییرات بزرگی انجام شده و فیچر جدید اضافه شده
ext.versionMinor: مشخص میکنه که تغییرات کوچیکی انجام شده
ext.versionPatch: اینم برای رفع باگ و تغییرات خیلی کوچیک
ext.versionClassifier: از این برای مشخص کردن وضعیت اپلیکیشن استفاده میشه
مقادیرش میتونه alpha, beta, snapshot, release و یه همچین چیزایی باشه.
ext.isSnapshot: اینم اگه ترو باشه یعنی وضعیت مناسب برای انتشار نیست و همچین چیزی
12345applicationVariants.all { variant -> variant.outputs.all { outputFileName = "${fileName}-${variant.versionName}.apk" } }
این تیکه مشخص میکنه نام فایل رو چجوری ایجاد کنه
12versionCode generateVersionCode() versionName generateVersionName()
اینم از توابعی که پایین می بینیم استفاده میکنه تا versionCode و versionName رو برای اپلیکیشن مشخص کنه و اینطوری اروری هنگام نصب پیش نمیاد.
123private Integer generateVersionCode() { return ext.versionMajor + ext.versionMinor + ext.versionPatch }
12345678910private 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 بنویسیم با یوزر پس و آدرس فایل کلیدمون و یه تسکش کنیم که با اجرای یه تسک همه این کارا انجام بشه. ولی حالا شاید تو یه پست دیگه. فعلا ;)
مطلبی دیگر از این انتشارات
Smooth Corner Transition
مطلبی دیگر از این انتشارات
مجوزها در اندروید - Android Permissions
مطلبی دیگر از این انتشارات
معرفی و پیاده سازی دیزاین پترن سینگلتون در اندروید