یه برنامه نویس عاشق تکنولوژی, فیزیک و یخورده فلسفه
کنترل ورژن 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 بنویسیم با یوزر پس و آدرس فایل کلیدمون و یه تسکش کنیم که با اجرای یه تسک همه این کارا انجام بشه. ولی حالا شاید تو یه پست دیگه. فعلا ;)
مطلبی دیگر از این انتشارات
لایسنس اوپن سورس ها و اضافه کردن آنها به پروژه Github
مطلبی دیگر از این انتشارات
تست و CI در برنامه نویسی اندروید
مطلبی دیگر از این انتشارات
لاگ گیری از ریکوئست های Retrofit