সংখ্যা বাড়ানোর আরও ভাল উপায়?


133

প্লিস্ট ফাইলের মধ্যে বিল্ড সংখ্যা বাড়ানোর জন্য আমি আমার এক্সকোড বিল্ড প্রক্রিয়াটির অংশ হিসাবে একটি শেল স্ক্রিপ্ট ব্যবহার করছি , তবে এটি ঘন ঘন Xcode 4.2.1 ক্র্যাশ করে চলেছে (কোনও প্রকল্পের অন্তর্ভুক্ত নয় টার্গেট সম্পর্কে একটি ত্রুটি সহ; আমি অনুমান করছি) প্লিস্ট ফাইলের পরিবর্তনটি কোনও উপায়ে এক্সকোডকে বিভ্রান্ত করছে)

শেল স্ক্রিপ্টটি এটি করেছে যাতে বিল্ড সংখ্যাটি কেবল তখন বাড়ানো হয় agvtoolযখন কোনও ফাইল প্লাস্ট ফাইলের চেয়ে নতুন হয় (কেবলমাত্র বিল্ডিংয়ের ফলে মান বাড়েনি ):

if [ -n \"`find ProjDir -newer ProjDir/Project-Info.plist`\" ]; then agvtool -noscm next-version -all; else echo \"Version not incremented\"; fi

এক্সকোডটি ভেঙে না ফেলে বিল্ড নম্বর ( প্লিস্ট ফাইলে বা অন্য কোথাও) বাড়ানোর কোনও উপায় আছে কি ?

শেষ সম্পাদনা : আমি এখন পাইথন স্ক্রিপ্ট ব্যবহার করে এই ধরণের জিনিসগুলি করি যা আমি গিথুবে প্রকাশ করেছি । এটি সঠিকভাবে নথিভুক্ত করা হয়নি তবে এটির কাজটি করা কঠিন হওয়া উচিত নয়। বোনাস হিসাবে এই রেপোটিতে একটি অ্যাপ বান্ডলে স্বয়ংক্রিয়ভাবে তৃতীয় পক্ষের লাইব্রেরি বান্ডিল করতে একটি দরকারী স্ক্রিপ্ট রয়েছে।


1
যে কেউ আগ্রহী হয়: আমি স্ক্রিপ্ট একটু দশমিক সংখ্যার পরিবর্তে ব্যবহার হেক্সাডেসিমেল সংখ্যার পরিবর্তিত - gist.github.com/sascha/5398750
Sascha

1
আপনি এই স্ক্রিপ্টটি সরাসরি প্রাক-বিল্ড অ্যাকশন হিসাবে যুক্ত করতে পারেন, বাহ্যিক স্ক্রিপ্টের প্রয়োজন হবে না। বিল্ড ফেজ সহ এই স্ক্রিপ্টটি চালাবেন না; এক্সকোড কেবলমাত্র প্রতিটি অন্যান্য বিল্ডে আপডেট হওয়া প্লাস্টিকে অনুলিপি করবে।
এড ম্যাকম্যানাস

3
বাক্সের বাইরে আমি একটি "অনুমতি অস্বীকৃত" ত্রুটি পেয়েছি তাই ভেবেছিলাম যে আমি এই প্রশ্নোত্তরটি উল্লেখ করব অন্য যে কেউ একই অভিজ্ঞতা অর্জন করবে: stackoverflow.com/q/9850936/519030
জেসন

এই স্ক্রিপ্টটি একটি প্রস্থান কোড 1 দিয়ে ব্যর্থ হয়েছে anyone কেউ কি আমাকে এই সাহায্য করতে পারে?
রবার্ট জে ক্লিগ

@ টেন্ডার দেখে মনে হচ্ছে আপনি স্ক্রিপ্টের আর্গুমেন্ট হিসাবে প্লাস্ট ফাইলটি সরবরাহ করছেন না।
ট্রোজানফো

উত্তর:


29

যদি আমি আপনার প্রশ্নটি সঠিকভাবে বুঝতে পারি তবে আপনি Project-Info.plistফাইলটি সংশোধন করতে চান , যা এক্সকোডের প্রমিত প্রকল্পের টেম্পলেটটির একটি অংশ?

আমি এটি জিজ্ঞাসার কারণটি হ'ল Project-Info.plistসাধারণত সংস্করণ নিয়ন্ত্রণের অধীনে থাকে এবং এটির সংশোধন করার অর্থ এটিও ভাল, সংশোধিত হিসাবে চিহ্নিত করা হবে।

যদি এটি আপনার পক্ষে ঠিক থাকে তবে নিম্নলিখিত স্নিপেটটি বিল্ড নম্বরটি আপডেট করবে এবং প্রক্রিয়াটিতে সংশোধিত হিসাবে ফাইলটিকে চিহ্নিত করবে, যেখানে get_build_numberআপনি (সম্ভবত বর্ধিত) বিল্ড নম্বর পেতে কিছু স্ক্রিপ্ট (যেমন এই উদাহরণের একটি স্থানধারক) রয়েছে is ব্যবহার করতে চান:

#!/bin/sh

# get_build_number is a placeholder for your script to get the latest build number
build_number = `get_build_number`

/usr/libexec/PlistBuddy -c "Set :CFBundleVersion ${build_number}" ProjDir/Project-Info.plist

প্লিস্টবুডি আপনাকে কেবল সংস্করণ নম্বর নয়, একটি প্লিস্ট ফাইলে কোনও কী সেট করতে দেয়। আপনি যে সমস্ত প্লাস্ট ফাইল চান তা তৈরি করতে পারেন এবং প্রয়োজনে সেগুলি সংস্থানগুলিতে অন্তর্ভুক্ত করতে পারেন। সেগুলি পরে বান্ডিল থেকে পড়তে পারে।

আপনার ফলক এবং অন্যান্য জায়গাগুলিতে সংস্করণটি দেখানোর প্রয়োজন অনুসারে আপনি সেটিং এও দেখতে পারেন CFBundleGetInfoStringএবং CFBundleShortVersionString


আমার প্লিস্ট ফাইলে গিট কমিট (বা ট্যাগ) লাগবে না তাই একটি সাধারণ ইনক্রিমেন্টিং সিস্টেম ঠিক আছে (সরবরাহ করা হয়েছে agvtool), তবে বিল্ড চলাকালীন প্লিস্টটি পরিবর্তনের কাজটি এক্সকোডকে প্রায়শই বিরতি দেয় (যেহেতু স্ক্রিপ্টটি সরিয়ে ফেলেনি) t একবার ক্র্যাশ হয়েছিল, যখন এটি প্রতি 3 টি বিল্ড বা তার বেশি সংঘর্ষে পড়েছিল)। সংস্করণ তথ্যটি অন্য একটি প্লিস্ট ফাইলে রাখা এবং বান্ডেলের সাথে অন্তর্ভুক্ত থাকা এবং অ্যাপ্লিকেশন থেকে অ্যাক্সেসযোগ্য থাকা কি সম্ভব?
ট্রোজানফয়ে

দুর্দান্ত স্ক্রিপ্ট - আমি সংরক্ষণাগারটি তৈরির সময় কেবল এটি ব্যবহার করার জন্য হিউজ বিআর এর পরামর্শের সাথে একত্রিত করতে পছন্দ করব । সংখ্যা কম রাখে এবং উপেক্ষা করে তবে অনেকগুলি দেব বিল্ড প্রকাশের মধ্যে সঞ্চালিত হয়।
জে

5
Get_build_number কি? এটি কি কিছু স্থানধারক?
খ্রিস্ট

হ্যাঁ, get_build_numberকেবল একজন স্থানধারক - স্পষ্টির উত্তর আপডেট করেছেন।
মনোলো

72

আমি এই প্রশ্নের অনেক উত্তর দিয়ে চারপাশে গোলযোগ করেছি, এবং তাদের কেউই আমাকে যথেষ্ট সন্তুষ্ট করেনি। যাইহোক, আমি অবশেষে এমন একটি মিশ্রণ নিয়ে এসেছি যা আমি সত্যিই পছন্দ করি!

দুটি পদক্ষেপ রয়েছে, একটি শুরুতে এবং একটি আপনার বিল্ড পর্যায়ের শেষে।

প্রারম্ভে:

# Set the build number to the count of Git commits
if [ "${CONFIGURATION}" = "Release" ]; then
    buildNumber=$(git rev-list HEAD | wc -l | tr -d ' ')
    /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${PROJECT_DIR}/${INFOPLIST_FILE}"
fi

শেষে:

# Set the build number to "DEVELOPMENT"
if [ "${CONFIGURATION}" = "Release" ]; then
    /usr/libexec/PlistBuddy -c "Set :CFBundleVersion DEVELOPMENT" "${PROJECT_DIR}/${INFOPLIST_FILE}"
fi

এক্সকোডের ইনফো.পালিস্টটি দেখে আপনি দেখতে পাবেন যে সংস্করণ নম্বরটি "ডেভেলপমেন্ট", তবে বিল্ট অ্যাপটিতে ক্রমবর্ধমান বিল্ড নম্বর থাকবে। (যতক্ষণ না আপনি সর্বদা আপনার বিল্ডগুলি একই শাখাটি বন্ধ করে দেন))

শেষে একটি ধ্রুব স্ট্রিংয়ে ভার্সন নম্বরটি সেট করা অ্যাপ্লিকেশন তৈরি করে তথ্য.পলিট ফাইলটি পরিবর্তিত হতে বাধা দেয়।

আমি এই পদ্ধতিটি কেন পছন্দ করি:

  • সহজ
  • গিট সংস্করণ ইতিহাস দূষিত করে না
  • সিএফবান্ডেল ভার্সন সম্পূর্ণ স্বয়ংক্রিয়
  • আমি যখনই চাই সুন্দর সংস্করণ নম্বরটি পরিবর্তন করা যেতে পারে

সংস্করণ-নিয়ন্ত্রিত প্লিস্ট ফাইলের বাইরে সংস্করণ নম্বরগুলি রাখা এটি করার সর্বোত্তম উপায়, বিশেষত আপনার যদি প্রকাশের প্রতি ব্রাঞ্চ থাকে এবং কখনও কখনও মার্জ বা চেরি-পিকের প্রয়োজন হয়। ধন্যবাদ!
ম্যাথু ফিলিপস

14
আপনি git rev-list --count HEADপরিবর্তে ব্যবহার করতে পারে git rev-list HEAD | wc -l | tr -d ' '
কেনেটিএম

হুম। আমি দেখতে পেয়েছি যে আপনি যদি fastlaneস্বয়ংক্রিয়ভাবে বিল্ডগুলি আপলোড করতে ব্যবহার করেন তবে আপনি পাবেন: ERROR ITMS-90058: "এই বান্ডেলটি অবৈধ Info সর্বাধিক তিনটি অ-নেতিবাচক পূর্ণসংখ্যা ""
ফতুহোকু

1
আমি ঠিক জানি না কোথায় যেতে হবে, আমি প্রথম স্ক্রিপ্টটিকে প্রথম বিল্ড ফেজ হিসাবে এবং শেষ স্ক্রিপ্টটি শেষ বিল্ড ফেজ হিসাবে রেখেছি এবং এটি আমার পক্ষে কাজ করে।
উইল জিৎসলার

1
আপনি এই সমাধানটি ব্যবহার করে অবশ্যই স্পষ্টভাবে তথ্য.প্লেস্ট প্রতিশ্রুতিবদ্ধ করতে পারেন - এটিই সম্পূর্ণ বিষয়। তথ্য.পিস্টলিস্টটি সর্বদা সেট করা থাকে এবং "ডেভেলপমেন্ট" এ সেট করা সংস্করণ নম্বরটি দিয়ে চেক ইন করা হয়, এটি বিল্ড প্রক্রিয়া চলাকালীন অস্থায়ীভাবে পরিবর্তিত হয় এবং পরে আবার "ডেভলপমেন্ট" এ সেট হয় যাতে তথ্য.প্লেস্ট স্থিতিশীল থাকে।
উইল জিৎসলার

38

আমি এই গ্লিস্ট ব্যবহার করেছি। এটি প্রত্যাশার মতো কাজ করে। https://gist.github.com/sekati/3172554 (সমস্ত কৃতিত্ব মূল লেখকের কাছে যায়)

স্ক্রিপ্টগুলি যা আমি সময়ের সাথে সংশোধন করেছি।

xcode-versionString-generator.sh ,

xcode-build-number-generator.sh

যেহেতু এই ভাষাগুলি দেব সম্প্রদায়কে সহায়তা করছে, আমি গিটহাব প্রকল্পটি এটি থেকে বের করে দিয়েছি। সুতরাং আসুন এটি উন্নত করা যাক। এখানে গিটহাব প্রকল্পটি রয়েছে: https://github.com/alokc83/Xcode-build-and-version-generator

আমি উভয় স্ক্রিপ্টের জন্য কিছুটা বর্ধনের জন্য কোড আপডেট করেছি। নীচে ব্যবহার করার পরিবর্তে গিটহাব থেকে সর্বশেষটি ধরুন

সংস্করণের জন্য:

# xcode-version-bump.sh
# @desc Auto-increment the version number (only) when a project is archived for export. 
# @usage
# 1. Select: your Target in Xcode
# 2. Select: Build Phases Tab
# 3. Select: Add Build Phase -> Add Run Script
# 4. Paste code below in to new "Run Script" section
# 5. Check the checkbox "Run script only when installing"
# 6. Drag the "Run Script" below "Link Binaries With Libraries"
# 7. Insure your starting version number is in SemVer format (e.g. 1.0.0)

# This splits a two-decimal version string, such as "0.45.123", allowing us to increment the third position.
VERSIONNUM=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "${PROJECT_DIR}/${INFOPLIST_FILE}")
NEWSUBVERSION=`echo $VERSIONNUM | awk -F "." '{print $3}'`
NEWSUBVERSION=$(($NEWSUBVERSION + 1))
NEWVERSIONSTRING=`echo $VERSIONNUM | awk -F "." '{print $1 "." $2 ".'$NEWSUBVERSION'" }'`
/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString $NEWVERSIONSTRING" "${PROJECT_DIR}/${INFOPLIST_FILE}"

নির্মাণের জন্য:

# xcode-build-bump.sh
# @desc Auto-increment the build number every time the project is run. 
# @usage
# 1. Select: your Target in Xcode
# 2. Select: Build Phases Tab
# 3. Select: Add Build Phase -> Add Run Script
# 4. Paste code below into new "Run Script" section
# 5. Drag the "Run Script" below "Link Binaries With Libraries"
# 6. Ensure that your starting build number is set to a whole integer and not a float (e.g. 1, not 1.0)

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}"

এটি সর্বদা বিল্ড নম্বরটি বাড়িয়ে তুলবে, যেখানে আমি উত্সের ফাইল পরিবর্তিত হলে কেবল এটি বাড়ানোতে চেয়েছিলাম। এটি বর্তমানে আমি কম সুরক্ষা চেকের সাথে ব্যবহার করছি এটিই কেবল স্ক্রিপ্ট এবং এটি কী পরিবর্তিত হয়েছে তা বিবেচনা কম।
ট্রোজানফো

এক্সকোড 5: সম্পাদক (মেনু বার) build বিল্ড ফেজ যুক্ত করুন Copy অনুলিপি ফাইলগুলি বিল্ড ফেজ যুক্ত করুন:
জনি

@ ট্রোজানফো: আপনি এই স্ক্রিপ্টটি পোস্ট কমিট হুক হিসাবে চালাতে পারেন। আপনি যখন আপনার কোডটি রেপোতে প্রতিশ্রুতিবদ্ধ করবেন তখনই এই পরিস্থিতিটি বিল্ড সংখ্যা বাড়িয়ে তুলবে। লস্টইনট্রিস্ট্রিগুলির নীচে উত্তর হ'ল আরও কিছু যা আপনি করতে চান।
অ্যালিক্স

@ অ্যালিক্সের সাথে সংযুক্ত শেল স্ক্রিপ্টগুলি এখানে পোস্ট করা পোস্টগুলির থেকে এখন বেশ আলাদা। কেবলমাত্র একটি সংরক্ষণাগার তৈরি করার সময় বিল্ড নম্বর বাড়ানোর জন্য আপনি উপরে তৈরি অ্যালিক্সের স্ক্রিপ্টগুলির উপর ভিত্তি করে খুব তৈরি করতে পারেন, এখানে: gist.github.com/mattpotts/abcffea6d08ad45739ef
ম্যাথু

14

এই সম্পূর্ণ এন্ট্রি অত্যন্ত সহায়ক ছিল। আমি এই কৌশলটি ব্যবহার করেছি তবে আমার স্ক্রিপ্টটি জিআইটিতে পোস্ট-কমিট হুক হিসাবে সেট আপ করেছি, সুতরাং প্রতিটি সফল প্রতিশ্রুতিবদ্ধতার পরে সিএফবান্ডেল ভার্সন বর্ধিত হয়। হুক স্ক্রিপ্ট .git / হুক মধ্যে যায়। প্রকল্প ডিরেক্টরিতে একটি লগ বাকি আছে।

এটি আমার সবচেয়ে প্রাথমিক মাপদণ্ড পূরণ করে। আমি জিআইটি থেকে একটি সংস্করণ টানতে এবং আমার ঠিক আগের বিল্ডটি পুনর্নির্মাণ করতে সক্ষম হতে চাই। বিল্ড প্রক্রিয়া চলাকালীন যে কোনও বর্ধিত কাজ এটি করে না।

আমার লিপিটি এখানে:

#!/bin/sh
#
# post-commit
#
# This script increments the CFBundleVersion for each successful commit
#

plist="./XYZZY/XYZZY-Info.plist"
buildnum=$(/usr/libexec/Plistbuddy -c "Print CFBundleVersion" "$plist")
if [ -z "$buildnum" ]; then
    exit 1
fi
buildnumplus=$(expr $buildnum + 1)
/usr/libexec/Plistbuddy -c "Set CFBundleVersion $buildnumplus" "$plist"

echo $(date) "- Incremented CFBundleVersion to" $buildnumplus >> hookLog.txt

আমার একই প্রয়োজনীয়তা রয়েছে, এ কারণেই যদি উত্স ফাইলটি সংশোধন করা হয় তবে বিল্ড সংখ্যাটি কেবল বাড়ানো হয়। আমি এটি খুব ভাল কাজ করতে পেয়েছি এবং bump_build_number.shসৃষ্টির পর থেকে স্ক্রিপ্টে কোনও পরিবর্তন আনতে হয়নি ।
ট্রোজানফো

14

আমি জানি না কোন উপায়টি সবচেয়ে ভাল তবে আমি অ্যাপলের উত্তর পোস্ট করব যদি কেউ এর সন্ধান করে থাকে ...

এই অনুযায়ী অ্যাপলের Q & A- পোস্ট :

অটোমেটিং ভার্সন এবং অ্যাডভিটিওল ব্যবহার করে নম্বরগুলি তৈরি করুন

সংস্করণ এবং বিল্ড নম্বর কীগুলি যথাক্রমে আপনার অ্যাপ্লিকেশনটির বিপণন এবং অভ্যন্তরীণ সংস্করণগুলি নির্দিষ্ট করে। অ্যাগভিটল একটি কমান্ড-লাইন সরঞ্জাম যা আপনাকে স্বয়ংক্রিয়ভাবে এই সংখ্যাগুলি পরবর্তী সর্বোচ্চ সংখ্যায় বা নির্দিষ্ট সংখ্যায় বাড়িয়ে তুলতে দেয়।

বিল্ড নম্বরটি আপনার আবেদনের একটি অপ্রকাশিত বা প্রকাশিত সংস্করণ সনাক্ত করে। এটি আপনার অ্যাপ্লিকেশনটির তথ্য.প্লেস্টে CFBundleVersion(বান্ডিল সংস্করণ) হিসাবে সঞ্চিত রয়েছে ।

আপনার এক্সকোড প্রকল্পে আপনাকে অবশ্যই নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করতে হবে:

  1. Agvtool সক্ষম করুন

আপনার টার্গেটের বিল্ড সেটিংস ফলকে নেভিগেট করুন, তারপরে এটি নীচে আপনার সমস্ত বিল্ড কনফিগারেশনের জন্য আপডেট করুন:

  • আপনার পছন্দসই একটি মান হিসাবে বর্তমান প্রকল্প সংস্করণ সেট করুন।

আপনার এক্সকোড প্রকল্পের ডেটা ফাইল, প্রজেক্ট.পিবিএক্সপোজ, একটি CURRENT_PROJECT_VERSION(বর্তমান প্রকল্প সংস্করণ) বিল্ড সেটিং অন্তর্ভুক্ত করে, যা আপনার প্রকল্পের বর্তমান সংস্করণ নির্দিষ্ট করে। agvtool প্রকল্পের জন্য অনুসন্ধান করে CURRENT_PROJECT_VERSION। pbxproj । এটি CURRENT_PROJECT_VERSIONউপস্থিত থাকলে চলতে থাকে এবং অন্যথায় চলমান বন্ধ করে দেয়। এর মানটি বিল্ড নম্বর আপডেট করতে ব্যবহৃত হয়।

  • অ্যাপল জেনেরিকে সংস্করণ সিস্টেম সেট করুন।

ডিফল্টরূপে, এক্সকোড কোনও সংস্করণ ব্যবস্থা ব্যবহার করে না। অ্যাপল জেনেরিকের ভার্শনিং সিস্টেম সেট করা নিশ্চিত করে যে এক্সকোড আপনার প্রকল্পে সমস্ত অ্যাভটোল-উত্পন্ন সংস্করণ তথ্য অন্তর্ভুক্ত করবে।

অ্যাপল জেনেরিকে সংস্করণ সিস্টেম সেট করুন

  1. আপনার সংস্করণ সেট আপ করুন এবং সংখ্যা তৈরি করুন

agvtool আপনার সংস্করণ এবং বিল্ড নম্বরগুলির জন্য আপনার অ্যাপ্লিকেশনটির তথ্য.পলিট অনুসন্ধান করে। এটি তাদের আপডেট করে যদি তারা উপস্থিত থাকে এবং অন্যথায় কিছু না করে। নিশ্চিত করুন যে CFBundleVersion(বান্ডিল সংস্করণ) এবং CFBundleShortVersionString(বান্ডিল সংস্করণ স্ট্রিং, সংক্ষিপ্ত) কীগুলি নীচের চিত্রটিতে যেমন দেখানো হয়েছে তেমনই আপনার তথ্য.পুলিস্টে রয়েছে:

আপনার সংস্করণ সেট আপ করুন এবং সংখ্যা তৈরি করুন

এক্সকোড থেকে প্রস্থান করুন, তারপরে নিম্নলিখিত কোনও কমান্ড চালানোর আগে টার্মিনাল অ্যাপ্লিকেশনে আপনার .xcodeproj প্রকল্প ফাইল ধারণকারী ডিরেক্টরিতে নেভিগেট করুন। .Xcodeproj প্রোজেক্ট ফাইলটিতে প্রকল্প.pbxproj রয়েছে, যা অ্যাভটিওল ব্যবহার করে। (এই অংশটি আপনি কমান্ড লাইনের পরিবর্তে স্ক্রিপ্টে চালাতে পারেন))

সংস্করণ নম্বর আপডেট করা হচ্ছে

একটি নির্দিষ্ট সংস্করণে সংস্করণ নম্বর আপডেট করতে, চালান

xcrun agvtool new-marketing-version <your_specific_version>

প্রাক্তন: সংস্করণ নম্বরটি 2.0 তে আপডেট করুন

xcrun agvtool new-marketing-version 2.0

বিল্ড নম্বর আপডেট করা হচ্ছে

আপনার বিল্ড নম্বরটি স্বয়ংক্রিয়ভাবে বাড়ানোর জন্য, চালান

xcrun agvtool next-version -all

একটি নির্দিষ্ট সংস্করণে আপনার অ্যাপ্লিকেশনটির বিল্ড নম্বর সেট করতে, চালান

xcrun agvtool new-version -all <your_specific_version>

প্রাক্তন: বিল্ড নম্বরটি 2.6.9 এ সেট করুন

xcrun agvtool new-version -all 2.6.9

বোনাস:

বর্তমান সংস্করণ নম্বর দেখতে, চালান

xcrun agvtool what-marketing-version

বর্তমান বিল্ড নম্বর দেখতে, চালান

xcrun agvtool what-version

7
এটির সাথে সমস্যাটি হল অ্যাভটিউল এক্সকোড বিল্ডটি বাতিল করে দেবে যাতে এটি বিল্ড পর্বে স্ক্রিপ্ট হিসাবে সংহত করা যায় না।
ড্যানিয়েল শ্লাগ

1
আপনি কি স্কিমটির পূর্ব-ক্রিয়াকলাপগুলিতে কেবল অ্যাভটোলের মাধ্যমে বাম্প রাখতে পারবেন না?
লটটাডট

11

এফডব্লিউআইডাব্লু - আমি বর্তমানে বিল্ড সংখ্যাটি কেবল রিলিজ বিল্ডগুলির জন্য বৃদ্ধি করতে ব্যবহার করছি (যার মধ্যে সংরক্ষণাগার অন্তর্ভুক্ত)। এক্সকোড 5.1 এর অধীনে সূক্ষ্ম কাজ করে।

সরাসরি এক্সকোডে রান স্ক্রিপ্ট বিল্ড ফেজে স্নিপেটটি অনুলিপি / অনুলিপি করুন :

buildnum=$(/usr/libexec/PlistBuddy -c "Print :CFBundleVersion" "$PRODUCT_SETTINGS_PATH")

if [ "$CONFIGURATION" = "Release" ]; then
buildnum=$((buildnum + 1))
echo "Build number updated to $buildnum"
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildnum" "$PRODUCT_SETTINGS_PATH"
fi;

আপনি কীভাবে সিএফবান্ডেল ভার্সন বৃদ্ধি করতে পারবেন? এক্সকোড 5.1 এ এটি কি "স্ট্রিং" "1.0" এর মতো বিন্যাসিত?
খ্রিস্ট

1
শেষ অবধি কেউ ঠিকঠাক করছে :) আমি কেন আমার ডিভাইসটিতে চালিত প্রতিটি বিল্ডের যত্ন নেব? রিলিজ (এবং পরীক্ষকদের কাছে প্রকাশ) গণনা, "এইচএমএম নয়, সেই 2px বাম দিকে সরান" বিল্ড করে build
16

7

স্ক্রিপ্ট জন্য ধন্যবাদ। এটি দুর্দান্ত কাজ করে।

আমার তথ্য.পিস্টলিটি শূন্যস্থান সম্বলিত একটি নাম সহ একটি উপ-ডিরেক্টরিতে রয়েছে সুতরাং আমাকে প্লাস্টের পথের চারপাশে উদ্ধৃতি সহ রান স্ক্রিপ্টটি সংশোধন করতে হয়েছিল:

${PROJECT_DIR}/tools/bump_build_number.sh "${PROJECT_DIR}/${INFOPLIST_FILE}"

এবং শেল স্ক্রিপ্ট একই ভাবে সমস্ত পথের চারপাশে উদ্ধৃতি সহ:

#!/bin/sh

if [ $# -ne 1 ]; then
    echo usage: $0 plist-file
    exit 1
fi

plist=$1
dir=$(dirname "$plist")

# Only increment the build number if source files have changed
if [ -n "$(find "$dir" \! -path "*xcuserdata*" \! -path "*.git" -newer "$plist")" ]; then
    buildnum=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$plist")
    if [ -z "$buildnum" ]; then
        echo "No build number in $plist"
        exit 2
    fi
    buildnum=$(expr $buildnum + 1)
    /usr/libexec/Plistbuddy -c "Set CFBundleVersion $buildnum" "$plist"
    echo "Incremented build number to $buildnum"
else
    echo "Not incrementing build number as source files have not changed"
fi

হ্যাঁ তা বোধগম্য হয়। আপনি এটি দরকারী বলে খুশি; আমি Xcode 4 এর অধীনে কোনও সমস্যা ছাড়াই তখন থেকেই ব্যবহার করে আসছি {2,3,4,5}।
ট্রোজানফয়ে

আমি যদি এই উত্তরটি দেখি তবে কয়েক ঘন্টা নিজেকে বাঁচাতে পারতাম! এছাড়াও, নোট করুন যে hte বিল্ড নম্বরে দশমিক থাকতে হবে না, বা বেস ক্র্যাক করবে।
ব্রেন্ডেন

6

আমি বর্তমানে যে স্ক্রিপ্টটি ব্যবহার করছি এটি উপরের অ্যালিক্সের উপর ভিত্তি করে তৈরি । আমার অভিযোজন নীচে, কেবলমাত্র একটি রিলিজ / সংরক্ষণাগার বিল্ডে স্বয়ংক্রিয়-বৃদ্ধি করতে একটি চেক যুক্ত করে।

এই পরিবর্তন ব্যতীত সংস্করণ নিয়ন্ত্রণের দ্বন্দ্ব থাকবে কারণ প্রতিটি বিকাশকারী তাদের নিজস্ব হারে বিল্ড নম্বরটি বাড়িয়ে তুলবে। এবং এই সত্য যে গিট ইতিহাসটি অবিচ্ছিন্নভাবে বিল্ড নম্বরটি সর্বদা পরিবর্তিত হয়ে দূষিত হবে।

# xcode-build-bump.sh
# @desc Auto-increment Xcode target build number every time the project is archived
# @src stackoverflow.com/a/15483906
# @usage
# 1. Select: your Target in Xcode
# 2. Select: Build Phases Tab
# 3. Select: Add Build Phase -> Add Run Script
# 4. Paste code below in to new "Run Script" section
# 5. Drag the "Run Script" below "Link Binaries With Libraries"
# 6. Insure that your starting build number is set to a whole integer and not a float (e.g. 1, not 1.0)

if [ "Release" != "${CONFIGURATION}" ]
then
    exit 0
fi

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}"

এটি একটি হিসাবে (কপি এবং বিন্যাস পেস্ট করতে সামান্য সহজ ভাষায়) পাওয়া যাচ্ছে তা GitHub সারকথা


5

আমি অটোরিভিশন ব্যবহারের পরামর্শ দেব ।

এক্সকোড একটি শিরোলেখ ফাইলের জন্য (যা বিল্ড সময়ে স্বয়ংক্রিয়ভাবে উত্পন্ন হতে পারে এবং ভিসিটিতে এটি তৈরি করা যায় না) এমন মান প্রদান করতে দেয় যা বিল্ড টাইম সময়ে তথ্য.পরে তালিকাতে প্রসারিত হবে। আপনি এটি অটোরিভিশন ওয়েবসাইটে সেট আপ করার জন্য একটি ওয়াকথ্রু খুঁজে পেতে পারেন ।

এই পরিস্থিতিতে সঠিকভাবে সহায়তা করার জন্য স্বতঃরীক্ষণটির এই ধরণের শিরোনাম ফাইলগুলির দিকে গতিযুক্ত একটি আউটপুট টাইপ রয়েছে।


1
Autorevisionপ্রয়োজনীয় হিসাবে একটি বিল্ড নম্বর টুকরোগুলি প্রদর্শিত হবে না?
ট্রজানফয়ে

ধরে নেওয়া যাক এক বিল্ড একটি নতুন তারপর কমিট উপর VCS_NUMহওয়া উচিত আপনি যা খুঁজছেন তা করা হয় ( দেখুন autorevision.hএকটি উদাহরণ জন্য )।
dak180

কোনও এক্সকোড প্রকল্পে কীভাবে কেউ এটি সেট আপ করতে পারে তার একটি ভাল উদাহরণ ভিয়েনা-ইনফো.প্লিস্ট এবং ভিয়েনা-অল.এক্সকনফিগ
dak180

4

এই সমস্যার সমাধান মধ্যে কয়েকটির সাথে একটি বিষয় যে হয় লঞ্চ সার্ভিস শুধুমাত্র স্বীকার চার বান্ডিল সংস্করণে পাঁচটি গুরুত্বপূর্ণ সংখ্যা । আমার একটি বিল্ড নম্বর সহ একটি প্রকল্প রয়েছে যা হাজার হাজারে রয়েছে, তাই আমি কিছুটা কম গুরুত্বপূর্ণ সংখ্যা ব্যবহার করতে চেয়েছিলাম।

এই পার্ল স্ক্রিপ্টটি প্রকল্পের সমস্ত তথ্য.প্লাস্টিকগুলিকে বর্ধিত করে, কেবলমাত্র বর্তমান টার্গেটের জন্য একটি নয়, তাই বিল্ড সংখ্যাগুলি সমস্ত লকস্টেপে থাকে। এটি একটি প্যাচ ডিজিট এবং দুটি ছোটখাট সংখ্যাও ব্যবহার করে, তাই 1234 তৈরি করে সংস্করণটি দেওয়া হয়েছে 1.23.4। আমি এটি প্রাক-বিল্ড আচরণ হিসাবে ব্যবহার করি, তাই এটি আমার নির্মিত সমস্ত প্রকল্পের জন্য প্রযোজ্য।

স্ক্রিপ্টটি বেশ নিষ্ঠুরতাপূর্ণ, তবে এটি আমার পক্ষে কার্যকর হয়।

#!/usr/bin/perl

use strict;
use warnings;
use v5.12.0;

use Dir::Iterate;

for my $plist_file(grepdir { /-Info.plist$/ } '.') {
    my $build = `/usr/libexec/PlistBuddy -c "Print CFBundleVersion" '$plist_file'`;
    chomp $build;

    next unless $build;

    # Strip dots
    $build =~ s/\.//g;
    $build =~ s/^0//g;

    # Increment
    $build++;

    # Re-insert dots
    $build =~ s/^(\d{0,4}?) (\d{0,2}?) (\d{0,1}?)$/$1.$2.$3/x;

    # Insert zeroes
    $build =~ s{(^|\.)\.}{${1}0.}g;

    system qq(/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $build" '$plist_file');
}

যে পোস্টটি আপনি উদ্ধৃত করছেন তাতে উল্লেখ করা হয়েছে যে ' কার্যকরভাবে, এলএস নিম্নলিখিত বিন্যাসটি প্রত্যাশা করে: nnnnn [.nn [.nn]] [এক্স] যেখানে এন একটি সংখ্যা 0-9, বর্গাকার বন্ধনীগুলি alচ্ছিক উপাদানগুলি নির্দেশ করে এবং এক্স কোনও স্ট্রিং নয় একটি অঙ্ক দিয়ে শুরু উপস্থিত থাকলে এক্স উপেক্ষা করা হয়। '- তাই এটি 99999 তৈরি করে। বেশিরভাগ প্রকল্পের জন্য যথেষ্ট হওয়া উচিত ..?
জে

@ জায়ে আমি স্পষ্টতই চারটি অঙ্ক হিসাবে ভুলটি লিখেছি উফ। (তবুও, যদি আপনার বিকাশের শৈলীতে প্রচুর টুইট এবং পুনর্নির্মাণের জড়িত থাকে তবে কোনও প্রকল্পের বিকাশের বহু বছর পরে আপনি ১০০,০০০ বিল্ডে পৌঁছাতে পারবেন তা কল্পনাযোগ্য নয়))
ব্রেন্ট রয়্যাল-গর্ডন

@ ব্রেন্টরয়াল-গর্ডন ট্রু - আমি আমার বিল্ড স্ক্রিপ্টটি কেবলমাত্র মুক্তির কনফিগারেশনের জন্য বর্ধিত বিল্ডগুলিতে টিক করেছি .. যদিও আমি সম্ভবত আমার 10+ বছরের উত্তরাধিকার পণ্যের সাথে 10k বিল্ডের নিকটে কোথাও পৌঁছেছি না যদিও এটি একধরণের ভাল লাগবে নতুন কোকো প্রকল্পের সাথে হেড রুমের বোঝা ;-)
জে

4

আপনি অ্যাপলের জেনেরিক সংস্করণ ব্যবহার করতে পারেন । মূলত আপনাকে যা করতে হবে তা agvtool next-version -allহল আপনার .xcproj ফাইল হোস্ট করা ডিরেক্টরিটির মধ্যে থেকে কল । আরও তথ্যের জন্য উপরের ইউআরএলটি দেখুন।


3
এই সমাধানটির সমস্যাটি হ'ল প্রকল্পের কোনও স্ক্রিপ্টের মধ্যে থেকে অ্যাভটিউলকে কল করা আপনার বিল্ডটি বাতিল করে দেবে। আপনি যদি এর জন্য কোনও কর্মপদ্ধতি না পান তবে এটি কোনও ভাল সমাধান নয়।
ড্যান লোয়েনেহার্জ

3

উইল গিজেলারের সমাধানের ভিত্তিতে আমার কেবল একটি পরিবর্তন করতে হয়েছিল যা আমি করতে চাই। তার সমাধান গিটের গণনাটিকে বিল্ড সংখ্যায় রাখে। কার্যকর, কিন্তু এখনও এমন এক বেদনা যা প্রকৃত প্রতিশ্রুতি দেয় যা এটি তৈরি করে। বিল্ড সংখ্যাটি একঘেয়েভাবে বাড়ছে কিনা সে বিষয়ে আমি খুব একটা পাত্তা দিইনি, এবং তাই আমি সেই প্রয়োজনীয়তাটি বাদ দিলাম যাতে প্রদত্ত বাইনারি তৈরি করা কমিটটি আরও সহজেই অ্যাক্সেস করতে পারি।

সে লক্ষ্যে আমি তার প্রথম স্ক্রিপ্টটি নিম্নলিখিতটিতে সংশোধন করেছি:

# Set the build number to the decimal conversion of the short version of the current git SHA

# Get the short version of the current git SHA in hexadecimal
SHA=$(git rev-parse --short @)
# Uppercase any alphabetic chars in SHA (bc doesn't like lowercase hex numbers)
UPPERCASE_SHA=$(tr '[:lower:]' '[:upper:]' <<< "$SHA")
# Use bc to convert the uppercase SHA from hex to decimal
BUILD_NUM=$(bc <<< "ibase=16;obase=A;$UPPERCASE_SHA")
# Set our build number to that
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $BUILD_NUM" "${PROJECT_DIR}/${INFOPLIST_FILE}"

# To convert a build number back to a usable git SHA, run the following, substituting the build number for <build number>
# bc <<< "ibase=10;obase=16;<build number>"

এটি বর্তমান গিট এসএইচএর সংক্ষিপ্ত সংস্করণকে দশমিক হিসাবে রূপান্তর করে। হেক্সাডেসিমাল চরিত্রগুলি অ্যাপলের বিল্ড নম্বর প্রয়োজনীয়তার সাথে সুন্দরভাবে খেলছে না, এজন্য আমাকে এটি করতে হয়েছিল। এটি আবার রূপান্তর করতে, আপনি কেবল এই জাতীয় কিছু চালাবেন:

SHA=$(bc <<< "ibase=10;obase=16;<build number>")

ব্যাশে, <build number>আপনি বাইনারি থেকে বিল্ড নম্বরটি কোথায় পেয়েছেন? তারপরে, কেবল দৌড়াও git checkout $SHA, এবং আপনি সেখানে যান।

কারণ এটি উইল গিজেলারের সমাধানটির রূপান্তর , যেমন উপরে উল্লিখিত রয়েছে, আপনার নিম্নলিখিত বিল্ড-পরবর্তী স্ক্রিপ্টও প্রয়োজন:

# Set the build number to "DEVELOPMENT"
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion DEVELOPMENT" "${PROJECT_DIR}/${INFOPLIST_FILE}"

যা আপনার গিট ইতিহাস পরিষ্কার রাখে।


তাহলে কীভাবে সেই কাজটি করা যায়, আপনি গিট তথ্যটি লিখে যাবেন Info.plistযা নিজেই গিট দ্বারা ট্র্যাক করা হয়েছে?
ট্রোজানফয়ে

@ ট্রোজানফয়ে যেমন আমি উত্তরের উপরে উল্লেখ করেছি, এই উত্তরটি উইল গিজেলারের সমাধানটির একটি অভিযোজন। যেমন, এটির জন্য সেখানে ব্যবহৃত একই বিল্ড পোস্ট স্ক্রিপ্টের প্রয়োজন। আমি স্পষ্টভাবে উত্তর এ যোগ করেছেন।
রেভ্রন

2

আমি পরিবর্তিত পদ্ধতিটি চেষ্টা করেছি এবং এটি কার্যকর হয়নি, কারণ: -

  1. এক্সকোড 4.2.1 xcuserdata সাব-ডিরেক্টরিকে .xcodeproj এ পরিবর্তন করে

  2. গিট প্রকল্প-তথ্য.পি.লিস্টে পূর্ববর্তী পরিবর্তনটি নোট করে

নিম্নলিখিত পরিবর্তনগুলি এগুলিকে উপেক্ষা করার কারণ এবং কেবল প্রকৃত পরিবর্তনকে পতাকাঙ্কিত করে: -

if [ -n "$(find $dir \! -path "*xcuserdata*" \! -path "*.git" -newer $plist)" ]; then

2

আপনি যখন সংরক্ষণাগারভুক্ত করবেন (এবং উদাহরণস্বরূপ টিএফ-তে আপলোড করবেন) তখন আপনি এটি করতে চাইতে পারেন । অন্যথায় আপনার সংস্করণ নম্বর সত্যিই দ্রুত যেতে পারে ..

স্কিমে (পণ্য / সম্পাদনা প্রকল্প / সংরক্ষণাগার / প্রাক-ক্রিয়া) আপনি এমন একটি স্ক্রিপ্ট যুক্ত করতে পারেন যা আপনি সংরক্ষণাগারভুক্ত করলেই কার্যকর হবে will

এছাড়াও, আপনি প্রতিটি বার অ্যাপ্লিকেশনটির সংস্করণ বাড়িয়ে দেওয়ার সময় বিল্ড নম্বরটি পুনরায় সেট করতে চাইতে পারেন।

শেষ কথা, আপনি যদি এর পরিবর্তে সংরক্ষণাগার ব্যবহার করেন তবে আপনি নিরাপদে অক্ষম করতে পারেন:

# if [ -n "$(find "$dir" \! -path "*xcuserdata*" \! -path "*.git" -newer "$plist")" ]; then
...
# else
    # echo "Not incrementing build number as source files have not changed"
# fi

বিল্ড নম্বরটি কেবল তখনই সংরক্ষণ করা হবে যখন বাড়ানো হবে ...

সম্পাদনা: আমি যা বলেছি তা সংশোধন করুন, সংরক্ষণাগারে প্রাক-ক্রিয়াগুলি বিল্ডের পরে ঘটে (তবে সংরক্ষণাগার দেওয়ার আগে), সুতরাং বিল্ড সংখ্যাটি পরবর্তী সংরক্ষণাগারের জন্য বৃদ্ধি হবে ... তবে আপনি একটি নতুন স্কিম তৈরি করতে পারেন এবং বিল্ডটিতে এই ক্রিয়াটি যুক্ত করতে পারেন (প্রাক- ক্রিয়া) এই নতুন প্রকল্পের বিভাগ। এবং আপনি যখন নতুন বিল্ড তৈরি করতে চান তখন এই স্কিমটি ব্যবহার করুন


1
হ্যাঁ এটি দ্রুত চলেছে (এই মুহুর্তে 5500+) তবে এটি আমার পক্ষে সমস্যা নয়; এটি কেবল একটি সংখ্যা। কিছুটা হলেও কাজের আগে সিএমডি-বি / সিএমডি-আর কতবার আঘাত হানে তা আকর্ষণীয় ...
ট্রোজানফো

2

আমি বিল্ড নম্বরটির জন্য শেষ এসভিএন সংশোধনটি ব্যবহার করি use আপনি যদি বিল্ড ডিরেক্টরিতে তথ্য.প্লেস্টটি পরিবর্তন করেন তবে আপনি উত্স তথ্য.প্লেস্টকে প্রভাবিত করবেন না:

# use the last SVN revision as the build number:
Info_plist="$BUILT_PRODUCTS_DIR/$CONTENTS_FOLDER_PATH/Info.plist"
defaults write "${Info_plist}" CFBundleVersion `svn stat -u | awk '/'"Status against revision:"'/ {print $4}'`

2

আমার মনে হচ্ছে আমি আমার গোত্র খুঁজে পেয়েছি। ট্রাইব, আমি আশা করি আপনি ভার্সনএক্স দ্বারা আনন্দিত হবেন।

এক দশক আগে এমন একটি ওয়ার্কস্পেসে কাজ করার সময় যার মধ্যে 25 টিরও বেশি এক্সকোড প্রকল্প ছিল আমি সংস্করণটি স্বয়ংক্রিয় করার এবং স্ট্রিং আপডেটগুলি এমন একটি ডিগ্রীতে তৈরি করার সুযোগ নিয়েছি যা আপত্তিজনক আপডেটগুলি সহ কেবলমাত্র একটি প্রকল্প বা দু'টি বজায় রাখলে urd

VersionX:

  • বিল্ড প্রকার সম্পর্কে অবগত (প্রকাশ / ডিবাগ)
  • সংগ্রহস্থল থেকে বিল্ড টাইম তথ্য সংগ্রহ করে (গিট সমর্থন অন্তর্ভুক্ত, তবে আপনি এইচজি, এসএনএন, বা আপনি যা কিছু ব্যবহার করেন তা অনুকূলিতকরণ করা যেতে পারে)
  • সহজেই কাস্টমাইজযোগ্য অভিনব বিপণন সংস্করণ স্ট্রিংগুলির জন্য সরবরাহ করা হয়েছে (অ্যাপ স্টোর কোনও কনভেনশন আরোপ করার আগে এর মধ্যে অনেক বেশি প্রকরণ ছিল) যাতে আপনি স্বয়ংক্রিয়ভাবে একটি গিট ট্যাগ কনভেনশন ব্যবহার করে "বিটা" এর চিহ্নগুলির অন্তর্ভুক্ত স্ট্রিংগুলিকে বৃদ্ধি করতে পারেন।
  • সংস্করণ এবং প্রতিশ্রুতিবদ্ধ তথ্য সহ দৃষ্টান্ত ভেরিয়েবলগুলি সহ একটি জনগোষ্ঠী অন্তর্ভুক্ত রয়েছে। এটি আপনার প্যানেল সম্পর্কে পপুলিং এবং প্রাক-জনবহুল তথ্যের সাথে লগিং স্ট্রিং, ক্র্যাশ প্রতিবেদন বা ব্যবহারকারী ইমেল বাগ রিপোর্ট তৈরির জন্য দরকারী।

এটি মজাদার ছিল। আমি এক্সকোড বিল্ড সিস্টেম সম্পর্কে একটি নৌকা বোঝা শিখেছি।

অভিনব সংস্করণ এবং বিল্ড স্ট্রিং সংস্করণ এক্স এর ধরণের একটি উদাহরণ এখানে স্বয়ংক্রিয়ভাবে উত্পন্ন হতে পারে।

ভার্সনএক্স 1.0.1 β7 (c5959a3 "ক্লিন")

বিপণনের সংস্করণ: সংস্করণএক্স 1.0.1 β7 "1.0.1.1 কমিটের জন্য ট্যাগ থেকে প্রাপ্ত, যখন" বিটা 7 "স্বয়ংক্রিয়ভাবে প্রতিশ্রুতি গণনা দ্বারা তৈরি করা হয়, বা বিল্ড কাউন্ট (উদাহরণস্বরূপ)।

বিল্ড সংস্করণ: (c5959a3 "ক্লিন") শর্ট কমিট হ্যাশ প্রদর্শন করে এবং আপনাকে জানিয়ে দেয় যে বিল্ড ডিরেক্টরিটিতে শূন্য অনিবার্য পরিবর্তন ছিল।

ভার্সনএক্স (গিটহাবের উত্স) - এক্সকোড প্রকল্পগুলিতে স্বয়ংক্রিয়ভাবে সংস্করণ বাড়ানোর জন্য স্ট্রিং তৈরির জন্য একটি বারোক সিস্টেম।

ভার্সনএক্স ডকুমেন্টেশন।


1

আপনি এক্সকোডব্যাম্প নামে একটি নতুন সরঞ্জাম বিকাশ করছেন যা আপনি চেক করতে চান। এটি CFBundleShortVersionString এবং CFBundleVersion উভয়কেই আপডেট করতে পারে। চূড়ান্ত পদক্ষেপ হিসাবে এটি সেই সিএফবান্ডিল মানগুলির সাথে মেলে যাবার জন্য প্রতিশ্রুতি প্রকাশ করতে এবং ট্যাগ করার জন্য চেক ইন করবে।

Xcodebump প্রকল্পের এখানে অবস্থিত হয়:

https://github.com/markeissler/Xcodebump


1

আমি build numberনিম্নলিখিত পদ্ধতি দ্বারা আপডেট ।

$INFO_FILEplist ফাইলের পথ। এবং $build_numberএই বিল্ডিংয়ের জন্য একটি নতুন বিল্ড নম্বর।

/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $build_number" "${INFO_FILE}"

সাধারণত, আমার $build_numberদ্বারা নির্মিত majorএবং minorঅংশগুলি। minorপ্রকল্পের তথ্য থেকে এসে গেছে। ' সুতরাং আমি বর্ণনা করি কিভাবে majorঅংশটি জেনারেট করা যায়।

## Composed by `major` and `minor`. 
## `minor` is parsed from project information. It's another story.
## Examples: `21.1`, or `21.1.3`
build_number="${major_number}.${minor_number}"

আমি সিদ্ধান্ত নিতে 2 কৌশল আছে $build_number

প্রথম কৌশল

এই কৌশলের ব্যবহার git tagসিদ্ধান্ত নিতে গণনা majorএর build number। থাকে তাহলে 53প্রকল্পের ট্যাগ, এটা ফিরে আসবে 53শেল স্ক্রিপ্ট অনুসরণ করে।

সাধারণত, এটি বাড়ছে। এবং এটি বিকাশকারীকে প্রকাশের আগে গিট ট্যাগ লাগাতে বাধ্য করবে।

major_number=$(git tag -l | wc -l | grep -oE "\d+")

দ্বিতীয় কৌশল

যাক জেনকিন্স সি আই সিস্টেম সিদ্ধান্ত নেন majorঅংশ। এটিতে পরিবেশের পরিবর্তনশীল রয়েছে BUILD_NUMBER। সিআই সিস্টেমে বিল্ডিংয়ের সময় এটি স্বয়ংক্রিয়ভাবে বৃদ্ধি পাচ্ছে। এই তথ্যটি সিআই সিস্টেমে প্রকল্পের ইতিহাস সনাক্ত করতে কার্যকর।

major_number=${BUILD_NUMBER}

1

তিনি একটি আপডেট সংস্করণ। এটি এক্সকোড 9.3.1, আইওএস 11 এর মতো কাজ করে।

আপনার অ্যাপ্লিকেশন টার্গেট থেকে 'বিল্ড ফেজস' ক্লিক করুন, নতুন রান স্ক্রিপ্ট যুক্ত করতে + আইকনটি ক্লিক করুন এবং বাক্সে এই কোডটি পেস্ট করুন।

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}"

তথ্য.পলিট ফাইলে যান এবং 'বান্ডিল সংস্করণ' 1 এ সেট করুন এবং 'বান্ডিল সংস্করণ স্ট্রিং, সংক্ষিপ্ত' থেকে 1 সেট করুন আপনার সেট করা উচিত।

প্রকল্পটি দেখুন.ইফ.লিস্ট দিয়ে দেখুন এবং আপনার বান্ডেল সংস্করণ (বিল্ড নম্বর) পরিবর্তনটি দেখা উচিত।

  • নোট করুন যে এক্সকোড 9.3.1 হিসাবে, আপনি সাধারণ ট্যাব থেকে এই পরিবর্তনগুলি দেখতে সক্ষম হবেন না, তবে আপনি যখন কোনও বিল্ড সংরক্ষণাগারভুক্ত করবেন এবং তথ্য.পল্লিস্টে পরিবর্তনগুলি দেখতে পাবেন

0

এখানে আমার সমাধান। আপনি যদি আমার মতো হন: টার্মিনাল বান্ধব, রুবির মতো, অর্থপূর্ণ সংস্করণের মতো, এটি ব্যবহার করে দেখুন।

একটি ফাইল তৈরি করুন Rakefileযার মধ্যে এটি রয়েছে:

require "xcodeproj"
require "versionomy"

XCODEPROJECT = "MyProject.xcodeproj"
INFOPLISTFILE = "MyProject/MyProject-Info.plist"

$UPDATES = [:major,:minor,:tiny]
$UPDATES.each { |part|
  desc "increment #{part} part of version"
  task "increment:#{part}" do |task|
    version=`/usr/libexec/Plistbuddy -c "Print CFBundleVersion" #{INFOPLISTFILE}`.chomp
    version=Versionomy.parse(version)
    version=version.bump(part)

    # I use the same string for CFBundleVersion and CFBundleShortVersionString for now
    `/usr/libexec/PlistBuddy -c "Set :CFBundleVersion #{version}" #{INFOPLISTFILE}`
    `/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString #{version}" #{INFOPLISTFILE}`
    print "version upgraded to #{version}\n"
  end
}

প্রস্তুত করা: gem install xcodeproj versionomy

চালান: rake increment:majorবা rake increment:minorবা rake increment:tinyযখনই আপনি চান।


0

অটোমেটিং সংস্করণ ব্যবহার করা এবং অ্যাভিটিওল ব্যবহার করে নম্বরগুলি তৈরি করা আমার পক্ষে সবচেয়ে দৃin়প্রবণ মনে হয়

এটা চেষ্টা কর:

  1. উপরে লিঙ্কযুক্ত অ্যাপলের ডকুমেন্টেশনে বর্ণিত হিসাবে এটি কনফিগার করুন।
  2. যোগ স্ক্রিপ্ট প্রকল্প প্রাক-কর্ম হিসাবে -> সম্পাদনা স্কিম ... -> সংরক্ষাণাগার (অথবা অন্যান্য যদি আপনি পছন্দ)
  3. সেট করুন: থেকে বিল্ড সেটিংস সরবরাহ করুন <your_app_target>

স্ক্রিপ্ট (প্রথম লাইন alচ্ছিক):

exec > ${PROJECT_DIR}/prebuild.log 2>&1
cd ${PROJECT_DIR}
xcrun agvtool next-version -all
cd -

0

আসুন এটি অ্যাপলের নিজস্ব উপায়ে করুন। এটি প্রতিটি সফল বিল্ডের পরে বিল্ড সংখ্যা বাড়িয়ে তুলবে

আমি আপনাকে 5 টি চিত্রের মাধ্যমে গাইড করব, কেবল এটির মাধ্যমে যান।

  1. ড্রপডাউন থেকে 'সম্পাদনা প্রকল্প ...' নির্বাচন করুন, যখন আপনি স্টॉप_বিল্ড_বাটনের ডানদিকে অবস্থিত আপনার প্রকল্পের নামটি নির্বাচন করেন। প্রথম পদক্ষেপ পরীক্ষা করুন

  2. বাম পাশের মেনু থেকে 'বিল্ড' বিকল্পটি প্রসারিত করুন এবং 'পোস্ট-অ্যাকশনস' চেক দ্বিতীয় ধাপটি নির্বাচন করুন

  3. এখানে আপনি আপনার প্রোগ্রামটি সফলভাবে তৈরির পরে কার্যকর করতে চান এমন আপনার পছন্দসই কোডগুলি (স্ক্রিপ্টগুলি) যুক্ত করতে পারেন। এটি সেই জায়গা যেখানে আমাদের অটোমেশনটিকে নিখুঁতভাবে কাজ করতে আমাদের কিছু পরিমাণ কোড যুক্ত করতে হবে। >> 1. নতুন স্ক্রিপ্ট ফাইল যুক্ত করতে বাম পাশের কোণ থেকে 'অ্যাড (+)' বোতামটি নির্বাচন করুন >> ২. এবার ড্রপ ডাউন থেকে 'নতুন রান স্ক্রিপ্ট অ্যাকশন' নির্বাচন করুন তৃতীয় পদক্ষেপ

  4. এটিতে 3 টি ক্ষেত্র >> 1. আপনার জন্য ইতিমধ্যে শেল বরাদ্দ করা হয়েছে >> ২. এখন আপনার প্রকল্পের নাম নির্বাচন করুন 'থেকে সেটিংস তৈরি করুন' সরবরাহ করুন। >> ৩. আপনার স্ক্রিপ্টটি যুক্ত করতে একটি বড় ক্ষেত্র রয়েছে, কেবলমাত্র এই কোডটি এখানে অনুলিপি করুন এবং কাস্ট করুন: করুন চতুর্থ ধাপটি দেখুন

    প্লিষ্ট = "$ {PROJECT_DIR} / $ {INFOPLIST_FILE}" PLB = / usr / lixec / PlistBuddy LAST_NUMBER = $ ($ পিএলবি -c "মুদ্রণ সিএফবান্ডেল ভার্শন" "LI পিআইএলএসটি") _ (1) LAST_NUMBER + পিএলবি -সি "সেট: সিএফবান্ডেল ভার্শন $ NEW_VERSION" "LI পিআইএলটি"

  5. চতুর্থ পদক্ষেপটি শেষ করার পরে উইন্ডোটি বন্ধ করতে কেবল 'ক্লোজ' নির্বাচন করুন এবং আমাদের শেষ পদক্ষেপটি করতে হবে, প্রকল্প ফাইল মেনুতে আপনার 'plist.info' ফাইলটি যান এবং নিশ্চিত করুন যে 'কী' বিভাগের অধীনে 'বান্ডিল সংস্করণ' কীটি সবচেয়ে বেশি রয়েছে একটি সংখ্যাগত মান চেক পঞ্চম ধাপ

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.