এক্সকোডে সংস্করণ বনাম বিল্ড


660

আমার কাছে এমন একটি অ্যাপ্লিকেশন রয়েছে যা আমি এক্সকোড 3 দিয়ে বিকাশ করেছি এবং সম্প্রতি এক্সকোড 4 দিয়ে সম্পাদনা শুরু করেছি the লক্ষ্য সংক্ষেপে আমার কাছে ক্ষেত্রগুলি সহ আইওএস অ্যাপ্লিকেশন লক্ষ্য ফর্ম রয়েছে: শনাক্তকারী, সংস্করণ, বিল্ড, ডিভাইস এবং স্থাপনার লক্ষ্য। সংস্করণ ক্ষেত্রটি ফাঁকা এবং বিল্ড ফিল্ডটি 3.4.0 (যা আমি যখন এখনও এক্সকোড 3 দিয়ে সম্পাদনা করছিলাম তখন থেকেই অ্যাপটির সংস্করণটির সাথে মেলে)।

আমার প্রশ্নগুলি হ'ল:

  1. সংস্করণ এবং বিল্ড ক্ষেত্রের মধ্যে পার্থক্য কী?

  2. আমি এক্সকোড 4 এ আপগ্রেড করার পরে সংস্করণ ক্ষেত্রটি ফাঁকা ছিল কেন?


একটি জিনিসের জন্য, আমি মনে করি এটি বিল্ড নম্বর যা Xcode সংগঠক সংরক্ষণাগার তালিকায় প্রদর্শিত হয় list এর বাইরে, আমি নিশ্চিত নই যে এটি কীসের জন্য ব্যবহৃত হয়েছে।
ড্যানিয়েল ডিকিসন

উত্তর:


1224

অ্যাপল সাজানোর ক্ষেত্রগুলি পুনরায় সাজানো / পুনরায় সাজানো।

এগিয়ে যাওয়া, আপনি যদি আপনার অ্যাপ্লিকেশন টার্গেটের জন্য তথ্য ট্যাবটি সন্ধান করেন তবে আপনার "বিল্ড সংস্করণ স্ট্রিং, সংক্ষিপ্ত "টি আপনার সংস্করণ হিসাবে (উদাহরণস্বরূপ, 3.4.0) এবং আপনার বিল্ড হিসাবে" বান্ডিল সংস্করণ "ব্যবহার করা উচিত (যেমন, 500 বা 1A500) )। আপনি যদি তাদের উভয়টি দেখতে না পান তবে আপনি এগুলি যুক্ত করতে পারেন। এগুলি সংক্ষিপ্ত ট্যাবটিতে যথাযথ সংস্করণে মানচিত্র তৈরি করবে এবং পাঠ্যবাক্সগুলি তৈরি করবে; তারা একই মান।

তথ্য ট্যাবটি দেখার সময়, আপনি যদি রাইট ক্লিক করেন এবং কাঁচা কী / মানগুলি নির্বাচন করুন , আপনি আসল নামগুলি দেখতে পাবেন CFBundleShortVersionString(সংস্করণ) এবং CFBundleVersion(বিল্ড) see

এক্সকোড ৩ দিয়ে আপনি কীভাবে ব্যবহার করেছেন বলে মনে হয় সংস্করণটি সাধারণত ব্যবহৃত হয় আপনি সংস্করণ / বিল্ড পার্থক্য সম্পর্কে কোন স্তরের বিষয়ে জিজ্ঞাসা করছেন তা আমি নিশ্চিত নই, তাই আমি দার্শনিকভাবে উত্তর দেব।

এখানে সমস্ত ধরণের স্কিম রয়েছে তবে জনপ্রিয় একটি হ'ল:

{MajorVersion}। {Minorversion}। {পরিবর্ধন ও পরিবর্তন}

  • প্রধান সংস্করণ - প্রধান পরিবর্তনগুলি, পুনরায় নকশাগুলি এবং কার্যকারিতা পরিবর্তন
  • গৌণ সংস্করণ - ক্ষুদ্রতর উন্নতি, কার্যকারিতা সংযোজন
  • সংশোধন - বাগ-ফিক্সগুলির জন্য একটি প্যাচ নম্বর number

তারপরে বিল্ডটি আলাদাভাবে রিলিজের জন্য বা পুরো পণ্যটির আজীবনের জন্য বিল্ডের মোট সংখ্যা নির্দেশ করতে ব্যবহৃত হয়।

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

  • রিলিজ 1.0.0 542 বিল্ড হতে পারে 1.0 একটি 1.0.0 রিলিজ পেতে 542 বিল্ড লাগবে।
  • মুক্তি 1.0.1 বিল্ড হতে পারে 578।
  • রিলিজ 1.1.0 বিল্ড 694 হতে পারে।
  • মুক্তি 2.0.0 বিল্ড হতে পারে 949।

অ্যাপল সহ অন্যান্য বিকাশকারীদের একটি বিল্ড নম্বর রয়েছে যার একটি বড় সংস্করণ + অপ্রাপ্ত সংস্করণ + মুক্তির জন্য বিল্ডের সংখ্যা রয়েছে। এগুলি হ'ল আসল সফ্টওয়্যার সংস্করণ নম্বর, বিপণনের জন্য ব্যবহৃত মূল্যগুলির বিপরীতে।

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

উদাহরণস্বরূপ, এক্সকোড 4.2 (4C139)। বিপণনের সংস্করণ ৪.২ হ'ল বিল্ডের প্রধান সংস্করণ ৪, বিল্ড মাইনর সংস্করণ সি, এবং বিল্ড সংখ্যা ১৩৯ The পরবর্তী প্রকাশ (সম্ভবত 4.3) সম্ভবত বিল্ড রিলিজ 4 ডি হবে এবং বিল্ড নম্বরটি 0 থেকে শুরু হবে এবং সেখান থেকে বর্ধন হবে।

আইফোন, ম্যাকস ইত্যাদি আইফোন সিমুলেটর সংস্করণ / বিল্ড নম্বরগুলি একইভাবে are

  • 3.2: (7W367a)
  • 4.0: (8A400)
  • 4.1: (8 বি 117)
  • 4.2: (8 সি 134)
  • 4.3: (8 এইচ 7)

আপডেট : অনুরোধ অনুসারে, স্ক্রিপ্ট তৈরি করার পদক্ষেপগুলি যা প্রতিবার আপনি কোড অ্যাপে এক্সকোডে বিল্ড নম্বরটি পড়তে, বৃদ্ধি করতে এবং অ্যাপ্লিকেশনটির {App}-Info.plistফাইলে আবার লিখতে চালিত হয় runs Yourচ্ছিক, অতিরিক্ত পদক্ষেপ রয়েছে যদি আপনি নিজের সংস্করণটি / বিল্ড নম্বরগুলি লিখতে চান তবে আপনারSettings.bundle/Root*.plist ফাইলগুলিতে ।

এটি এখানে -র নিবন্ধ থেকে প্রসারিত

এক্সকোডে 4.2 - 5.0:

  1. আপনার এক্সকোড প্রকল্পটি লোড করুন।
  2. বাম হাতের ফলকে, শ্রেণিবিন্যাসের একেবারে শীর্ষে আপনার প্রকল্পে ক্লিক করুন। এটি প্রকল্প সেটিংস সম্পাদক লোড করবে।
  3. কেন্দ্রের উইন্ডো ফলকের বাম দিকে, টার্গেটের অধীনে আপনার অ্যাপ্লিকেশনটিতে ক্লিক করুন শিরোনামের । প্রতিটি প্রকল্পের টার্গেটের জন্য আপনাকে এই সেটআপটি কনফিগার করতে হবে।
  4. বিল্ড পর্যায়সমূহের ট্যাবটি নির্বাচন করুন ।
    • এক্সকোড ৪-এ, নীচে ডানদিকে, বিল্ড ফেজ যোগ করুন বোতামটি ক্লিক করুন এবং রান স্ক্রিপ্ট যুক্ত করুন নির্বাচন করুন
    • এক্সকোড 5 এ, সম্পাদক মেনু নির্বাচন করুন > বিল্ড ফেজ যোগ করুন > রান স্ক্রিপ্ট বিল্ড ফেজ যোগ করুন
  5. নতুন রান স্ক্রিপ্ট ফেজটি অনুলিপি করুন এবং এটিকে কপির বান্ডিল রিসোর্সের ঠিক আগে সরিয়ে ফেলুন পর্বের (অ্যাপ্লিকেশন-তথ্য.পিস্টলিস্ট ফাইলটি যখন আপনার অ্যাপ্লিকেশনটির সাথে বান্ডেল হবে) ।
  6. নতুন চালান স্ক্রিপ্ট ফেজ, সেট শেল : /bin/bash
  7. পূর্ণসংখ্যা বিল্ড সংখ্যাগুলির জন্য স্ক্রিপ্ট এরিয়ায় নিম্নলিখিতটি অনুলিপি করুন এবং পেস্ট করুন:

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

    @ বিদেবীজ যেমন উল্লেখ করেছেন, অ্যাপল জেনেরিক সংস্করণ সরঞ্জাম ( agvtool)ও উপলব্ধ। আপনি যদি এর পরিবর্তে এটি ব্যবহার করতে পছন্দ করেন তবে প্রথমে কয়েকটি জিনিস পরিবর্তন করতে হবে:

    • বিল্ড সেটিংস ট্যাবটি নির্বাচন করুন ।
    • অধীনে ভারশনিং অধ্যায়, সেট বর্তমান প্রকল্পের সংস্করণ প্রাথমিক বিল্ড সংখ্যা আপনি ব্যবহার করতে চান, যেমন, এর 1
    • আপনার বিল্ড নম্বর অন্তর্ভুক্ত উত্স ফাইলটি বিল্ড এবং আপডেট করার চেষ্টা করার সময় কোনও রেস শর্ত এড়াতে আপনার রান স্ক্রিপ্ট পর্যায়টি অনুলিপি করুন এবং বিল্ড পর্যায়গুলি ট্যাবে ফিরে যান Script

    নোট করুন যে agvtoolপদ্ধতিটির সাহায্যে আপনি এখনও পর্যায়ক্রমে কোনও ত্রুটি ছাড়াই ব্যর্থ / বাতিল বিল্ড পেতে পারেন। এই কারণে, আমি agvtoolএই স্ক্রিপ্টটি ব্যবহার করার পরামর্শ দিচ্ছি না ।

    তবুও, আপনার রান স্ক্রিপ্ট পর্যায়ে আপনি নিম্নলিখিত স্ক্রিপ্টটি ব্যবহার করতে পারেন:

    "${DEVELOPER_BIN_DIR}/agvtool" next-version -all

    next-versionযুক্তি বৃদ্ধি বিল্ড নম্বর ( bumpএকই জিনিসের জন্য উপনাম), এবং -allআপডেট Info.plistনতুন বিল্ড নম্বর দিয়ে।

  8. এবং যদি আপনার সেটিংস বান্ডেল থাকে যেখানে আপনি সংস্করণ এবং বিল্ড দেখান, তবে সংস্করণটি আপডেট করতে এবং তৈরি করতে আপনি স্ক্রিপ্টের শেষে নিম্নলিখিতটি যুক্ত করতে পারেন। দ্রষ্টব্য: PreferenceSpecifiersআপনার সেটিংস মেলাতে মান পরিবর্তন করুন । PreferenceSpecifiers:2এর অর্থ PreferenceSpecifiersআপনার পলিট ফাইলের অ্যারের নীচে সূচি 2 তে থাকা আইটেমটি দেখুন , সুতরাং 0-ভিত্তিক সূচীর জন্য, এটি অ্যারে 3 য় পছন্দসই সেটিংস।

    productVersion=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "$INFOPLIST_FILE")
    /usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:2:DefaultValue $buildNumber" Settings.bundle/Root.plist
    /usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:1:DefaultValue $productVersion" Settings.bundle/Root.plist

    আপনি যদি সরাসরি agvtoolপড়ার পরিবর্তে ব্যবহার করছেন Info.plist, আপনি পরিবর্তে আপনার স্ক্রিপ্টে নিম্নলিখিতগুলি যুক্ত করতে পারেন:

    buildNumber=$("${DEVELOPER_BIN_DIR}/agvtool" what-version -terse)
    productVersion=$("${DEVELOPER_BIN_DIR}/agvtool" what-marketing-version -terse1)
    /usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:2:DefaultValue $buildNumber" Settings.bundle/Root.plist
    /usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:1:DefaultValue $productVersion" Settings.bundle/Root.plist
  9. এবং আপনার যদি আইপ্যাড এবং আইফোনের জন্য সর্বজনীন অ্যাপ থাকে তবে আপনি আইফোন ফাইলের জন্য সেটিংসও সেট করতে পারেন:

    /usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:2:DefaultValue $buildNumber" Settings.bundle/Root~iphone.plist    
    /usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:1:DefaultValue $productVersion" Settings.bundle/Root~iphone.plist

17
"আমার প্রকল্পগুলিতে, আমার কাছে একটি স্ক্রিপ্ট রয়েছে যা প্রতিবারই বিল্ডিংয়ের সাথে স্বয়ংক্রিয়ভাবে বিল্ড সংখ্যা বৃদ্ধি করে" - আপনি কীভাবে তা ভাগ করে নিতে পারেন? বিশদ বিবরণ এবং মূল প্রশ্নের জন্য ধন্যবাদ।
জেসল্ট

2
@ অ্যান্ড্রুজ - বিল্ড স্ক্রিপ্টের বিশদ সহ আমি আমার উত্তর আপডেট করেছি।
nekno

9
হেক্স সংখ্যায় বৃদ্ধি করতে আপনি ব্যবহার করতে পারেনbuildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE") dec=$((0x$buildNumber)) buildNumber=$(($dec + 1)) hex=$(printf "%X" $buildNumber) /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $hex" "$INFOPLIST_FILE"
অ্যালন আমির

8
সংক্ষেপে: অ্যাপস্টোরে এইচএক্স অনুমোদিত নয়।
নিকোলাস মিয়ারি

3
(এক্সকোড ৫ ব্যবহারকারী) আপনার পড়ার জন্য 5 ধাপটি পরিবর্তন করতে হতে পারে: "মেনু বার থেকে, সম্পাদক নির্বাচন করুন -> বিল্ড ফেজ যোগ করুন -> রান স্ক্রিপ্ট বিল্ড ফেজ যোগ করুন"
গ্রেগ এম ক্রসাক

72

(এটি কেবলমাত্র আমার নিজস্ব রেফারেন্সের জন্য এখানে রেখে দিচ্ছি)) এটি সংস্করণ প্রদর্শন করবে এবং একটি এক্সকোড লক্ষ্যবস্তুতে আপনি দেখতে পাবেন "সংস্করণ" এবং "বিল্ড" ক্ষেত্রগুলির জন্য:

- (NSString*) version {
    NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
    NSString *build = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
    return [NSString stringWithFormat:@"%@ build %@", version, build];
}

সুইফটে

func version() -> String {
    let dictionary = NSBundle.mainBundle().infoDictionary!
    let version = dictionary["CFBundleShortVersionString"] as? String
    let build = dictionary["CFBundleVersion"] as? String
    return "\(version) build \(build)"
}

2
ওটি: আপনার পদ্ধতিতে আপনার একটি ফুটো আছে - আপনি alloc/ initস্ট্রিং, যা স্ট্রিং ধরে রাখে, তবে আপনি এটি প্রকাশ করছেন না। কোনও পদ্ধতি থেকে আপনি কোনও পদ্ধতি থেকে ফিরে আসেন, আপনার সাধারণত একটি সুবিধা পদ্ধতি ব্যবহার করা উচিত যাতে স্ট্রিংটি স্বয়ংক্রিয়ভাবে স্বরে যায়, বা কল হয় autorelease। হয়: return [NSString stringWithFormat:@"%@ build %@", version, build]; বা return [[[NSString alloc] initWithFormat:@"%@ build %@", version, build] autorelease];
nekno

1
ধন্যবাদ @ এনকনো, উত্তর পরিবর্তিত হয়েছে যাতে এটি আরসি বা নন-এআরসি বান্ধব।
ড্যান রোজনস্টার্ক

2
টাইপগুলি এড়ানোর জন্য যেখানে উপলভ্য রয়েছে (যেমন, কেসিএফবান্ডেল ভার্সনকি) ব্যবহার করা সম্ভবত এটি আরও ভাল। যদিও, "
CFBundleShortVersionString

সুইফট
কোডটিতে

ধন্যবাদ @ yar1vn, আমি এটি ঠিক করেছি এবং এটি পিছনেও নেই।
ড্যান রোজনস্টার্ক

53

বিল্ড নম্বরটি একটি অভ্যন্তরীণ নম্বর যা অ্যাপ্লিকেশনের বর্তমান অবস্থা নির্দেশ করে। এটি সংস্করণ নম্বর থেকে পৃথক যে এটি সাধারণত ব্যবহারকারী নয় এবং কোনও সংস্করণ সংখ্যার মতো কোনও বৈশিষ্ট্য / আপগ্রেডকে বোঝায় না ote

এইভাবে ভেবে দেখুন:

  • বিল্ড (CFBundleVersion ): সংখ্যা। সাধারণত আপনি এটি 1 এ শুরু করেন এবং অ্যাপ্লিকেশনটির প্রতিটি বিল্ড দিয়ে 1 টি বৃদ্ধি করেন। এটি দ্রুত তুলনা করার জন্য মঞ্জুরি দেয় যাগুলির বিল্ডটি আরও সাম্প্রতিক এবং এটি কোডবেসের অগ্রগতির বোধকে বোঝায়। কিউএর সাথে কাজ করার সময় এবং সঠিক বিল্ডগুলির বিরুদ্ধে বাগগুলি লগ হয়েছে কিনা তা নিশ্চিত হওয়ার প্রয়োজন এগুলি অত্যধিক মূল্যবান হতে পারে।
  • বিপণন সংস্করণ ( CFBundleShortVersionString): আপনি আপনার অ্যাপ্লিকেশনটির এই সংস্করণটি বোঝাতে ব্যবহার করছেন এমন ব্যবহারকারী-মুখী নম্বর। সাধারণত এটি মেজর.মিনার সংস্করণ প্রকল্প অনুসরণ করে (উদাঃ মাইআউইউইলএসপি অ্যাপ্লিকেশন 1.2) ব্যবহারকারীদের জানাতে কোন প্রকাশনাগুলি ছোট রক্ষণাবেক্ষণ আপডেট হয় এবং কোনটি নতুন নতুন বৈশিষ্ট্য।

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

এটি ব্যবহার করতে:

  • "অ্যাপল জেনেরিক" ব্যবহার করতে সংস্করণ অনুসারে আপনার প্রকল্পটি এক্সকোডে সেট করুন।
  • টার্মিনালে
    • agvtool new-version 1 (বিল্ড নম্বর 1 এ সেট করুন)
    • agvtool new-marketing-version 1.0 (বিপণনের সংস্করণ 1.0 এ সেট করুন)

agvtoolএক টন ভাল তথ্যের জন্য ম্যান পৃষ্ঠাটি দেখুন



25

উপরের উত্তরে বিল্ড নম্বরটি স্বতঃসংশোধনের স্ক্রিপ্টটি আমার পক্ষে কাজ করে না যদি বিল্ড নম্বরটি একটি ভাসমান পয়েন্ট মান হয়, তাই আমি এটিকে কিছুটা সংশোধন করেছি:

#!/bin/bash    
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=`echo $buildNumber +1|bc`
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"

21

বিপণন প্রকাশের সংখ্যাটি গ্রাহকদের জন্য, সংস্করণ নম্বর বলে । এটি 1.0 দিয়ে শুরু হয় এবং 2.0 , 3.0 এ বড় আপডেটগুলির জন্য 1.1 , 1.2 এ ছোটখাট আপডেটের জন্য এবং বাগ ফিক্সের জন্য 1.0.1 , 1.0.2 এ যায় । এই সংখ্যাটি রিলিজ এবং নতুন বৈশিষ্ট্যগুলিকে কেন্দ্র করে।

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

আপনি দেখতে পাচ্ছেন যে বিল্ড নম্বরটি প্রয়োজনীয় নয় এবং এটি আপনার উপর নির্ভর করে আপনি কোন বিল্ড নম্বরটি ব্যবহার করতে চান। সুতরাং আপনি যদি Xcodeকোনও বড় সংস্করণে আপডেট করেন তবে বিল্ড ফিল্ডটি খালি। সংস্করণ ক্ষেত্রটি খালি নাও হতে পারে !.


ভেরিয়েবল হিসাবে বিল্ড নম্বর পেতে NSString:

NSString * appBuildString = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];

ভেরিয়েবল হিসাবে সংস্করণ নম্বর পেতে NSString:

NSString * appVersionString = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];

যদি আপনি উভয় এক চান NSString:

NSString * versionBuildString = [NSString stringWithFormat:@"Version: %@ (%@)", appVersionString, appBuildString];

এটি এক্সকোড সংস্করণ 4.6.3 (4H1503) দিয়ে পরীক্ষা করা হয় । বিল্ড নম্বর প্রায়শই প্রথম বন্ধনী / বন্ধনীতে লেখা হয়। বিল্ড নম্বর হেক্সাডেসিমাল বা দশমিক in

buildandversion


ইন Xcode আপনি স্বতঃ-বাড়ায় পারেন বিল্ড সংখ্যা হিসেবে দশমিক সংখ্যা নিম্নোক্ত স্থাপন দ্বারা Run scriptপ্রকল্প সেটিংসে বিল্ড ফেজ

#!/bin/bash    
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"

জন্য হেক্সাডেসিমেল বিল্ড সংখ্যা এই স্ক্রিপ্ট ব্যবহার

buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$((0x$buildNumber)) 
buildNumber=$(($buildNumber + 1)) 
buildNumber=$(printf "%X" $buildNumber)
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"

প্রকল্প সেটিংস


6

দুর্দান্ত উত্তরের জন্য @nekno এবং @ ale84 কে ধন্যবাদ।

যাইহোক, আমি @ ale84 এর স্ক্রিপ্টটি ভাসমান পয়েন্টের জন্য বাড়ানোর বিল্ড সংখ্যার থেকে সামান্যই পরিবর্তন করেছি।

আপনার ভাসমান বিন্যাসের প্রয়োজনীয়তা অনুসারে Incl এর মান পরিবর্তন করা যেতে পারে। উদাহরণস্বরূপ: যদি incl = .01 হয় তবে আউটপুট ফর্ম্যাটটি হবে ... 1.19, 1.20, 1.21 ...

buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
incl=.01
buildNumber=`echo $buildNumber + $incl|bc`
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"

1

আর একটি উপায় হ'ল সংস্করণ নম্বরটি এতে সেট করা appDelegate didFinishLaunchingWithOptions:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
     NSString * ver = [self myVersion];
     NSLog(@"version: %@",ver);

     NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults];
     [userDefaults setObject:ver forKey:@"version"];
     return YES;
}

- (NSString *) myVersion {
    NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
    NSString *build = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
    return [NSString stringWithFormat:@"%@ build %@", version, build];
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.