امید گل پرور
امید گل پرور
خواندن ۳ دقیقه·۷ سال پیش

افزایش خودکار شماره ساخت اپ، توی ایکس کد

خیلی سریع می‌ریم سر اصل مطلب ?.

توی پروژه‌های مربوط به برنامه‌های iOS، نسخه اپ، با دو تا عدد مشخص میشه. یکی شماره اصلی نسخه، و یکی دیگه شماره ساخت (یا همون Build Number) هست. ترکیب این دو تا عدد، نسخه اپ رو مشخص می‌کنه.

این دو تا عدد با اسم‌های زیر بکار میرن:

  • متن کوتاه نسخه اپ (یا Short Bundle Version String، که ما بعنوان شماره اصلی صداش زدیم)
  • شماره ساخت (یا Build Number)

برای نمونه می‌تونین این عکس رو ببینین:

در کنار اسم اپ و مشخصه اپ، شماره اصلی نسخه، و شماره ساخت هم قابل مشاهده و ویرایش هست
در کنار اسم اپ و مشخصه اپ، شماره اصلی نسخه، و شماره ساخت هم قابل مشاهده و ویرایش هست


رویه به این صورت هست خروجی‌هایی که شما از پروژه می‌گیرین، میتونن دارای شماره اصلی یکسان، و یک یا چندین شماره ساخت باشه. مثلا چهار تا خروجی داریم که همه‌شون شماره نسخه ۱.۶ هستن، ولی با شماره ساخت‌های ۱۰۰۰، ۱۰۰۱، ۱۰۲۰ و ۱۰۵۰. توجه داشته باشین که اگه ما شماره اصلی رو ثابت نگه داریم، و شماره ساخت رو تغییر بدیم، این خروجی‌ها، توسط پنل آی‌تونز (یا iTunes Connect) بعنوان نسخه‌های مجزا شناخته میشن.

برای مثال، عکس زیر. این عکس خروجی‌هایی هست که برای اپ «مثقال» گرفته شده و روی پنل آی‌تونز بارگذاری شده، تا با استفاده از تست‌فلایت (TestFlight ابزار کمکی اپل هست که برای روند تست اپ‌ها مورد استفاده قرار می‌گیره)، تست‌کننده‌ها بتونن نسخه‌های مختلف (چه از نظر شماره اصلی نسخه، و چه از نظر شماره ساخت) رو روی دستگاه‌هاشون نصب و تست کنن؛ و تیم پیاده‌سازی‌کننده بتونن از بازخوردهاشون برای ارتقاء اپ و یا رفع خطاهای احتمالی استفاده کنن.

چند تا از نسخه‌های بارگذاری‌شده اپ مثقال روی آی‌تونز کانکت
چند تا از نسخه‌های بارگذاری‌شده اپ مثقال روی آی‌تونز کانکت


⚠️ : یه نکته‌ای که توی روند بارگذاری این نسخه‌ها روی آی‌تونز کانکت هست، اینه که اگه ما بخوایم دو تا نسخه با شماره اصلی نسخه، و شماره ساخت یکسان رو بارگذاری کنیم، خود پنل خطا میده، و از این کار جلوگیری می‌کنه.

مورد بعدی که بیشتر برای من جنبه شخصی داره، اینه که من معمولا دوست دارم همینطور که قسمت‌های مختلف یه اپ رو پیاده‌سازی می‌کنم، این شماره ساخت رو هم زیاد کنم! ? ولی خب این روند باید بصورت دستی انجام میشد، و یکم برای اذیت‌کننده میشد؛ هم می‌خواستم انجامش بدم، و هم رویه‌ش دم دستی نبود!

با یه سرچ کوچیک، یه کدی پیاده کردم، که برای اینکار هست!

کار این کد اینه که در هر بار خروجی گرفتن از اپ (یا در واقع Buildکردن پروژه)، میاد و مقدار شماره ساخت رو یک واحد افزایش میده. بهمین راحتی، بهمین خوشمزگی! ?

کد مورد نظرمون اینه:

buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${PROJECT_DIR}/${INFOPLIST_FILE}") buildNumber=$(($buildNumber + 1)) /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${PROJECT_DIR}/${INFOPLIST_FILE}"

کاری که این اسکریپت می‌کنه، در حقیقت اینه:

  • میاد مقدار فعلی شماره ساخت رو از فایل مربوطه (که از نوع Property List هست) می‌خونه
  • مقدارش رو یک واحد زیاد می‌کنه، و
  • مقدار جدید رو داخل همون فایل ذخیره می‌کنه. همین!

برای اطلاعات بیشتر، باید بگم این مقادیری که توی اسکریپت می‌بینین، مثل PROJECT_DIR و یا INFOPLIST_FILE، متغیرهایی هستن که خود ایکس کد باهاشون کار می‌کنه.

اگه بازم اطلاعات بیشتری می‌خواین، می‌تونین از این لینک که از مستندات خود سایت اپل هست استفاده کنین.



روش استفاده از اسکریپت افزایش خودکار شماره ساخت

  • توی قسمتی که کلیات پروژه رو نشون میده، تارگت اصلی که خود اپ هست رو انتخاب کنین
  • از گزینه‌های بالا، گزینه Build Phases رو بزنین
  • با استفاده از علامتی که برای ایجاد یه اسکریپت جدید هست، یه گزینه جدید ایجاد کنین
  • کد اسکریپت بالا رو توی قسمت مربوطه کپی کنین
  • تمام! ?

نمونه نهایی این روند میشه مثل عکس زیر:

⚠️ توجه داشته باشین، زمانیکه از این اسکریپت استفاده می‌کنین، مقداری که برای قسمت Build Number تنظیم میشه، و یا خودتون بطور دستی بعدا تغییرش میدین، حتمن عددی باشه؛ تا اسکریپت بتونه بدرستی کار خودش رو انجام بده.

از حالا به بعد، هر موقع که پروژه رو Build کنین، شماره ساخت، یک واحد اضافه میشه. ?

? : برای فهم راحت‌تر و بهتر این اسکریپت‌ها، می‌تونین اسم مربوط به این اسکریپت رو هم تغییر بدینش. برای اینکار روی عنوانش دوباره کلیک کنین، و اسم دلخواه‌تون رو تایپ کنین.


من بشخصه با این اسکریپت خیلی حال کردم! ?
شمام اگه ازش خوش‌تون اومد، توی پروژه‌هاتون استفاده کنین.


? منبع مطلب: این مطلب رو بر اساس این پست نوشتم.


برنامه‌نویسیآی‌او‌اسایکس‌کد
آی ام وان آو موست ادونسد هیومنوید اوپریتینگ سیستم! ?
شاید از این پست‌ها خوشتان بیاید