এক্সকোড কমান্ড লাইন থেকে "বিল্ড এবং সংরক্ষণাগার"


392

এক্সকোড ৩.২ বিল্ড মেনু, "বিল্ড এবং আর্কাইভ" এর অধীনে একটি দুর্দান্ত একটি নতুন বৈশিষ্ট্য সরবরাহ করে যা অ্যাডহক বিতরণের জন্য উপযুক্ত একটি .ipa ফাইল উত্পন্ন করে। আপনি অর্গানাইজারটিও খুলতে পারেন, "সংরক্ষণাগার অ্যাপ্লিকেশনগুলি" এবং "আইটিউনস কানেক্টে অ্যাপ্লিকেশন জমা দিন।"

কমান্ড লাইন থেকে (বিল্ড স্ক্রিপ্টের অংশ হিসাবে) "বিল্ড এবং সংরক্ষণাগার" ব্যবহার করার কোনও উপায় আছে? আমি ধরে নিই যে xcodebuildএটি কোনওভাবে জড়িত থাকবে তবে manপৃষ্ঠাটি এ সম্পর্কে কিছু বলবে বলে মনে হয় না।

আপডেট আপডেট মাইকেল গ্রিনিচ স্পষ্টির জন্য অনুরোধ করেছেন; কমান্ড-লাইন তৈরির সাথে আপনি ঠিক কী করতে পারবেন না তা এখানে রয়েছে, আপনি "বিল্ড এবং আর্কাইভ" করার পরে এক্সকোডের সংগঠককে কেবল বৈশিষ্ট্যগুলিই করতে পারেন।

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

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


1
ওহ, ক্রুড এটি অসম্ভব বলে মনে হচ্ছে। যদি আপনি উত্তরটি না জানেন তবে দয়া করে কমপক্ষে প্রশ্নটি উত্থাপন করুন যাতে আমার অনুগ্রহ ইথারে যায় না ... :-(
ড্যান ফাবুলিচ

3
এটি অসম্ভব নয়, এটি কেবল অংশ নয় xcodebuild। একটি আইপিএ ফাইল তৈরির মধ্যে কেবল অ্যাপ্লিকেশনটিকে "পেলোড" নামে একটি ডিরেক্টরিতে অন্তর্ভুক্ত করা, সেই ডিরেক্টরিটি জিপ করা এবং মাইএপনেম.আইপিএর নাম পরিবর্তন করা অন্তর্ভুক্ত।
মাইকেল গ্রিনিচ

@ মিশেল, "বিল্ড এবং আর্কাইভ" অর্গানাইজারের বৈশিষ্ট্যগুলিকে সক্ষম করে, যা আপনি কেবল হাতে আইপিএ ফাইল তৈরি করার সময় উপলব্ধ হয় না।
ড্যান ফাবুলিচ

আমার মন্তব্যটি কিছুটা দীর্ঘ হয়েছে, সুতরাং এটি একটি উত্তর হিসাবে পোস্ট করা হয়েছে ।
মাইকেল গ্রিনিচ

3
যদিও ভডব্রির প্রথম / গৃহীত উত্তরগুলি কাজ করবে, তবে রিডের উত্তরটি এক্সকোডের নতুন সংস্করণগুলির জন্য অনেক সহজ।
প্রমিথিউস

উত্তর:


314

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

আপনার যে কমান্ডটি ব্যবহার করতে হবে তা হ'ল xcrun:

/usr/bin/xcrun -sdk iphoneos PackageApplication \
-v "${RELEASE_BUILDDIR}/${APPLICATION_NAME}.app" \
-o "${BUILD_HISTORY_DIR}/${APPLICATION_NAME}.ipa" \
--sign "${DEVELOPER_NAME}" \
--embed "${PROVISONING_PROFILE}"

আপনি নিবন্ধে সমস্ত বিবরণ পাবেন । আপনার যদি কোনও প্রশ্ন থাকে তবে জিজ্ঞাসা করতে দ্বিধা করবেন না।


19
কিছু সময়ের জন্য আমার কাছে সুস্পষ্ট নয়, তবে RELEASE_BUILDDIRএটি একটি পরম পথ হতে হবে।
ডেভিড ডানহাম

5
এছাড়াও নোট করুন যে আপনি যখন অ্যাপ্লিকেশনটি তৈরি করা হয়েছিল তখন একই সাইন ইন / প্রোফাইলটি রাখতে চান তবে আপনার - সাইন বা - এম্বেড বিকল্পগুলির প্রয়োজন হবে না। আপনার রিলিজ কনফিগারেশনের জন্য কোড সাইনিং বিল্ড সেটিংসে আপনি যা সেট আপ করেছেন এটিই হবে।
মাইক ওয়েলার

12
নোট করুন যে আইপা ফাইল পাথ -o "${ipa_path}"অবশ্যই একটি পরম পাথ হবে। অন্যথায় আপনি সম্ভবত পাবেন error: Unable to create '.../...ipa'বা এটি তৈরি করে চুপচাপ উপেক্ষা করা হবে। অভিশাপ এটা আমার কয়েক ঘন্টা নষ্ট।
এইচ - এন

2
কেউ আমাকে বলতে পারেন যে ces} ধনুবন্ধগুলি কী করে? আমি ধরে নিচ্ছি তারা ফাঁকা জায়গার যত্ন নেয় তবে আমি ভুল হতে পারি।
scord

6
এক্সকোড 8.3 বিটা 1 সম্পূর্ণভাবে প্যাকেজ অ্যাপ্লিকেশন কমান্ডটি সরান। এটি আবার ব্যবহার করবেন না এবং নীচের পরামর্শ মতো "xcodebuild -scheme <স্কেমনেম> সংরক্ষণাগার" ব্যবহার করুন।
হান্স ন্যাচেল

283

এক্সকোড ৪.২ এর সাহায্যে আপনি এটি করতে -স্কিমি পতাকা ব্যবহার করতে পারেন:

xcodebuild -scheme <SchemeName> archive

এই কমান্ডের পরে সংরক্ষণাগারটি এক্সকোড সংগঠকটিতে প্রদর্শিত হবে।


3
হ্যাঁ, আরও ভাল! এটির কাজটি করার জন্য, আমি নিম্নলিখিতগুলি করেছি: আপনার প্রকল্প ফোল্ডারে সিডি করুন, তারপরে "xcodebuild -scheme মাইপ্রজেক্টনাম সংরক্ষণাগার" চালান (কারণ সাধারণত, আপনার প্রকল্পের নামের মতো একটি প্রকল্প রয়েছে)
স্যামুয়েল

18
মনে রাখবেন যে কর্মক্ষেত্র এবং স্কিম বাদে এই অনুরোধের মাধ্যমে আপনি যে কোনও সেটিংস সরবরাহ করেছেন সেটি archiveঅ্যাকশনটি সম্মান করে না - এতে আমার কেবল কয়েক ঘন্টা ব্যয় করেছে !
danyowdee

5
এক্সকোড ৪.৪ এ দুর্দান্ত কাজ করে এবং আমি নিশ্চিত যে এটি ৪.৩-এও ঠিক ছিল। নিশ্চিত হয়ে নিন যে আপনি ব্যবহার করে সঠিক এক্সকোড প্রকাশটি নির্বাচন করেছেনxcode-select <path to Xcode.app>
রেড এলিস

2
এছাড়াও, আপনার অবশ্যই স্কিমটি " -scheme <SchemeName>"
রিড এলিস

6
এটি সংরক্ষণাগার তৈরির জন্য ঠিক আছে, তবে xcrun এ প্যাকেজ অ্যাপ্লিকেশনটি আসলে .ipa ফাইল তৈরি করে। টেস্টফ্লাইট
jmstone617

145

এক্সকোড 9 এবং সুইফ্ট দিয়ে আমার উত্তর আপডেট করা

সংরক্ষাণাগার

xcodebuild -workspace <ProjectName>/<ProjectName>.xcworkspace \
  -scheme <schemeName> clean archive -configuration release \
  -sdk iphoneos -archivePath <ProjectName>.xcarchive

আইপিএ রফতানি ( রফতানীর বিকল্পটি দয়া করে নোট করুন )

xcodebuild -exportArchive -archivePath  <ProjectName>.xcarchive \
  -exportOptionsPlist  <ProjectName>/exportOptions.plist \
  -exportPath  <ProjectName>.ipa

যারা এক্সপোর্টOptions.plist সম্পর্কে জানেন না তাদের জন্য, https://blog.bitrise.io/new-export-options-plist-in-xcode-9


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

আপনি এটির জন্য নীচের 2 টি বিকল্প ব্যবহার করতে পারেন।

  1. এক্সকোডবিল্ডের পুরো পথটি ব্যবহার করুন,
/Applications/Xcode 9.3.1.app/Contents/Developer/usr/bin/xcodebuild
  1. এক্সকোড-নির্বাচন ব্যবহার করুন,
xcode-select -switch /Applications/Xcode 9.3.1.app

নীচে আমার পুরানো উত্তর দেওয়া আছে

সংরক্ষণাগার এবং আইপিএ উদাহরণ তৈরির জন্য এখানে কমান্ড লাইন স্ক্রিপ্ট রয়েছে। আমার একটি আইফোন এক্সকোড প্রকল্প রয়েছে, যা ডেস্কটপ / মাইওএসএপি ফোল্ডারে অবস্থিত।

একের পর এক নিম্নলিখিত কমান্ড প্রয়োগ করুন:

cd /Users/username/Desktop/MyiOSApp/

xcodebuild -scheme MyiOSApp archive \
  -archivePath /Users/username/Desktop/MyiOSApp.xcarchive

xcodebuild -exportArchive -exportFormat ipa \
  -archivePath "/Users/username/Desktop/MyiOSApp.xcarchive" \
  -exportPath "/Users/username/Desktop/MyiOSApp.ipa" \
  -exportProvisioningProfile "MyCompany Distribution Profile"

এটি এক্সকোড 5 দিয়ে পরীক্ষা করা হয়েছে এবং আমার জন্য কাজ করছে।


2
এটি Xcode6.1.1 এ পুরোপুরি কাজ করেছে। আমি টার্মিনাল থেকে আমার অ্যাপ্লিকেশনগুলি তৈরি করতে পছন্দ করি কারণ আমি যখন সংগঠকের কাছ থেকে অ্যাডহক বিতরণ তৈরি করার চেষ্টা করি তখন এক্সকোড 6 আমাকে "আপনার অ্যাকাউন্টে ইতিমধ্যে একটি বৈধ শংসাপত্র রয়েছে" ত্রুটি দেয়।
ফর্মিগা নিনজা

আপনার যদি একটি ওয়াচকিট অ্যাপ থাকে তবে আইপায় একটি নতুন ফোল্ডার রয়েছে যার নাম ওয়াচকিটসপোর্ট, পাশাপাশি একটি সিম্বলস ফোল্ডার (optionচ্ছিক হতে পারে)। আপনি কি জানেন যে এগুলি রফতানির জন্য এক্সপোর্টআরসিভ করার কোনও উপায় আছে কি?
আরপিএম

1
xcodebuild -workspace <ProjectName>/<ProjectName>.xcworkspace -scheme <schemeName> clean archive -configuration release -sdk iphoneos -archivePath <ProjectName>.xcarchive ত্রুটি নিক্ষেপ করছে:requires a provisioning profile with the Associated Domains feature. Select a provisioning profile for the "Release" build configuration in the project editor.
vbRocks

1
@ মোহাম্মদরেজাকোহকান যা পুরানো উত্তরে ছিল তা আমি রেফারেন্সটি দেখানোর জন্য রেখেছিলাম, আপনি আমার উত্তরের শুরুতে বৈধ রফতানি বিকল্প দেখতে পারবেন
রাজ

1
@ রাজ ইয়েপ, আপনাকে ধন্যবাদ
মোহাম্মদ রেজা কোহকান

29

অ্যাডহক বিতরণের জন্য আইপা প্যাকেজ তৈরি করতে আমি নিজের বিল্ড স্ক্রিপ্টটি ব্যবহার করছি।

die() {
    echo "$*" >&2
    exit 1
}

appname='AppName'
config='Ad Hoc Distribution'
sdk='iphoneos3.1.3'
project_dir=$(pwd)

echo using configuration $config

echo updating version number
agvtool bump -all
fullversion="$(agvtool mvers -terse1)($(agvtool vers -terse))"
echo building version $fullversion

xcodebuild -activetarget -configuration "$config" -sdk $sdk build || die "build failed"

echo making ipa...
# packaging
cd build/"$config"-iphoneos || die "no such directory"
rm -rf Payload
rm -f "$appname".*.ipa
mkdir Payload
cp -Rp "$appname.app" Payload/
if [ -f "$project_dir"/iTunesArtwork ] ; then
    cp -f "$project_dir"/iTunesArtwork Payload/iTunesArtwork
fi

ipaname="$appname.$fullversion.$(date -u +%Y%m%d%H%M%S).ipa"
zip -r $ipaname Payload

echo finished making $ipaname

স্ক্রিপ্টটি সংস্করণ সংখ্যা বৃদ্ধি করে। প্রয়োজন না হলে আপনি সেই অংশটি সরাতে পারেন। আশা করি এটা সাহায্য করবে.


3
এটি একটি ভাল সমাধান, যদিও আপনার কোড মন্তব্য ছাড়াই পড়া কিছুটা কঠিন। কি ঘটছে সে সম্পর্কে আপনি আরও কিছু লিখবেন?
মাইকেল গ্রিনিচ

এক্সকোডটি "APPNAME.ipa" নামটি পায় কোথায়? প্যাকেজিং থেকে-> পণ্যের নাম?
কার্লোস রিকার্ডো

3
এই স্ক্রিপ্টটি এখন ওয়াচকিট অ্যাপ্লিকেশন সহ যথেষ্ট নয়। ওয়াচকিট অ্যাপ দিয়ে আইপা ফাইলের নতুন স্পেসিফিকেশনগুলি কি কেউ জানেন?
আরপিএম

ওয়াচ কিটের সাথে @RPM এর মতো সমস্যাগুলি দেখছি। কোন রেজোলিউশন?
danieljimenez 18

@ আরপিএম এটি দেখুন ওয়াচকিট স্টাফগুলির জন্য। আমি নিজে চেষ্টা করে দেখিনি
পি

26

xcodebuildটুল নির্মাণ ও সঙ্গে সংরক্ষণাগার পণ্য রপ্তানি করতে পারেন -exportArchive পতাকা (Xcode 5 হিসাবে)। রফতানি পদক্ষেপটি কেবলমাত্র এক্সকোড অর্গানাইজার ইউআইয়ের মাধ্যমে সম্ভব হয়েছিল।

আপনার অ্যাপ্লিকেশনটি প্রথম সংরক্ষণাগারভুক্ত করুন:

xcodebuild -scheme <scheme name> archive

দেওয়া $ARCHIVE_PATH( .xcarchive ফাইলের পাথ ), নিম্নলিখিত একের সাথে সংরক্ষণাগার থেকে অ্যাপটি রফতানি করুন:

iOS .ipa ফাইল:

xcodebuild -exportArchive -exportFormat ipa -archivePath "$ARCHIVE_PATH" -exportPath "myApp.ipa" -exportProvisioningProfile "My App Provisioning profile"

ম্যাক। অ্যাপ ফাইল:

xcodebuild -exportArchive -exportFormat app -archivePath "$ARCHIVE_PATH" -exportPath "myApp.app" -exportSigningIdentity "Developer ID Application: My Software Company"

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


1
এক্সকোড ওয়ার্কস্পেস ব্যবহার করার সময় এবং কোকোপডগুলির সাথে সামঞ্জস্যপূর্ণ না হয়ে কাজ করে না
amleszk

1
আপনি কি -workspaceএক্সকোডবিল্ড (এবং একটি ওয়ার্কস্পেসের পথ) এ বিকল্প যুক্ত করার চেষ্টা করেছেন ? man xcodebuildউল্লেখ করেছে: "একটি এক্সকোড ওয়ার্কস্পেস তৈরি করতে, বিল্ডটি সংজ্ঞায়িত করতে আপনাকে অবশ্যই-ওয়ার্কস্পেস এবং -স্কিম উভয় বিকল্পই পাস করতে হবে"।
নিক

এটি আমার জন্য ওয়ার্কস্পেস বিকল্প যুক্ত করে দুর্দান্ত কাজ করে - আমার প্রথম কমান্ড দ্বারা তৈরি সংরক্ষণাগারটির পথটি পাওয়া দরকার, তাই আমি এটি দ্বিতীয়টিতে ফিড করতে পারি। সংরক্ষণাগারপথ বিকল্পটি দিয়ে সংরক্ষণাগারটি কোথায় তৈরি করা হয়েছে তা আপনি নির্দিষ্ট করতে পারেন তবে আমি এর ডিফল্ট অবস্থানটি পছন্দ করি। এই সাহায্য আমাকে জিনিসটা কিভাবে যে পথ পেতে: stackoverflow.com/a/9024901/813247
robotspacer

24

আমরা এক্সকোড ৪.২.১ সহ একটি আইপ্যাড অ্যাপ্লিকেশন তৈরি করেছি এবং ওটিএ বিতরণের জন্য বিল্ডটি আমাদের অবিচ্ছিন্ন ইন্টিগ্রেশন (জেনকিন্স) এ সংহত করতে চেয়েছিলাম। সমাধানটি আমি এখানে নিয়ে এসেছি:

# Unlock keychain
security unlock-keychain -p jenkins /Users/jenkins/Library/Keychains/login.keychain

# Build and sign app
xcodebuild -configuration Distribution clean build

# Set variables
APP_PATH="$PWD/build/Distribution-iphoneos/iPadApp.app"
VERSION=`defaults read $APP_PATH/Info CFBundleShortVersionString`
REVISION=`defaults read $APP_PATH/Info CFBundleVersion`
DATE=`date +"%Y%m%d-%H%M%S"`
ITUNES_LINK="<a href=\"itms-services:\/\/?action=download-manifest\&url=https:\/\/xxx.xxx.xxx\/iPadApp-$VERSION.$REVISION-$DATE.plist\">Download iPad2-App v$VERSION.$REVISION-$DATE<\/a>"

# Package and verify app
xcrun -sdk iphoneos PackageApplication -v build/Distribution-iphoneos/iPadApp.app -o $PWD/iPadApp-$VERSION.$REVISION-$DATE.ipa

# Create plist
cat iPadApp.plist.template | sed -e "s/\${VERSION}/$VERSION/" -e "s/\${DATE}/$DATE/" -e "s/\${REVISION}/$REVISION/" > iPadApp-$VERSION.$REVISION-$DATE.plist

# Update index.html
curl https://xxx.xxx.xxx/index.html -o index.html.$DATE
cat index.html.$DATE | sed -n '1h;1!H;${;g;s/\(<h3>Aktuelle Version<\/h3>\)\(.*\)\(<h3>&Auml;ltere Versionen<\/h3>.<ul>.<li>\)/\1\
${ITUNES_LINK}\
\3\2<\/li>\
<li>/g;p;}' | sed -e "s/\${ITUNES_LINK}/$ITUNES_LINK/" > index.html

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

এটি প্লাস্ট টেমপ্লেট:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>items</key>
    <array>
        <dict>
            <key>assets</key>
            <array>
                <dict>
                    <key>kind</key>
                    <string>software-package</string>
                    <key>url</key>
                    <string>https://xxx.xxx.xxx/iPadApp-${VERSION}.${REVISION}-${DATE}.ipa</string>
                </dict>
                <dict>
                    <key>kind</key>
                    <string>full-size-image</string>
                    <key>needs-shine</key>
                    <true/>
                    <key>url</key>
                    <string>https://xxx.xxx.xxx/iPadApp.png</string>
                </dict>
                <dict>
                    <key>kind</key>
                    <string>display-image</string>
                    <key>needs-shine</key>
                    <true/>
                    <key>url</key>
                    <string>https://xxx.xxx.xxx/iPadApp_sm.png</string>
                </dict>
            </array>
            <key>metadata</key>
            <dict>
                <key>bundle-identifier</key>
                <string>xxx.xxx.xxx.iPadApp</string>
                <key>bundle-version</key>
                <string>${VERSION}</string>
                <key>kind</key>
                <string>software</string>
                <key>subtitle</key>
                <string>iPad2-App</string>
                <key>title</key>
                <string>iPadApp</string>
            </dict>
        </dict>
    </array>
</dict>
</plist>

এটি সেট আপ করতে, আপনাকে মনোনীত ব্যবহারকারীর কীচেইনে বিতরণ শংসাপত্র এবং প্রভিশন প্রোফাইল আমদানি করতে হবে।


3
আপনি অ্যাপলের Plistbuddy কমান্ডের সাহায্যে একটি plist-file পরিবর্তন করতে পারেন, যেমন: / usr / lixec / PlistBuddy -c "সেট: সিএফবান্ডেলভিশন 1.2.3.4" /path/to/info.plist। এসইডির সাথে খেলার
স্থিতিতে

তথ্যের জন্য ধন্যবাদ। আমি প্লিস্টবড্ডির চেয়ে সেডের সাথে বেশি অভিজ্ঞ, তাই আমি সেড বেছে
নিলাম

1
আমি উত্পাদনের $WORKSPACEপরিবর্তে প্রস্তাব দিচ্ছি$PWDAPP_PATH
রিচার্ড

16

আমি অন্যান্য উত্তরগুলি এখানে পাওয়া শক্ত পেয়েছি get এই নিবন্ধটি আমার জন্য যদি না। অন্যান্য উত্তরে যেমন উল্লেখ করা হয়েছে তেমন কিছু পাথের নিখুঁত প্রয়োজন হতে পারে।

আদেশ:

xcrun -sdk iphoneos PackageApplication \
    "/path/to/build/MyApp.app" \
    -o "output/path/to/MyApp.ipa" \
    --sign "iPhone Distribution: My Company" \
    --embed "/path/to/something.mobileprovision"

15

আপনি যেমন এক্সকোডের মতো বাস্তবে কোনও বিল্ডকে পদত্যাগ করতে পারেন, যাতে আপনি একই বাইনারি পরীক্ষা এবং শিপ করতে পারেন। উদাহরণস্বরূপ আমার স্ক্রিপ্টে (উপরেরগুলির অনুরূপ) আমি অ্যাডহক বিল্ড হিসাবে স্বাক্ষরিত আমার প্রকাশ সংস্করণটি তৈরি করি, তারপরে আমি পরীক্ষার জন্য আইপিএ হিসাবে সংরক্ষণাগারভুক্ত করি, তারপরে আমার বিতরণ শংসাপত্রের সাথে পদত্যাগ করব এবং একটি জিপ ফাইল তৈরি করব, যা আমি প্রেরণ করি অ্যাপল। সম্পর্কিত লাইনটি হ'ল:

codesign -f -vv -s "$DistributionIdentity" "$APPDIR"

14

এক্সকোড 7 এর জন্য আপনার কাছে অনেক সহজ সমাধান রয়েছে। কেবলমাত্র অতিরিক্ত কাজ হ'ল সংরক্ষণাগার রফতানির জন্য আপনাকে একটি কনফিগারেশন প্লাস্ট ফাইল তৈরি করতে হবে।

(এর ফলাফলে Xcode 6 তুলনায় xcrun xcodebuild -help, -exportFormatএবং -exportProvisioningProfileঅপশন কোনো উল্লেখ করা হয় না; সাবেক মুছে ফেলা হয়, এবং পরবর্তীটি দ্বারা বাতিল করা হয়-exportOptionsPlist ।)

পদক্ষেপ 1 , .xcodeproject বা .xcworkspace ফাইল সহ ফোল্ডারে ডিরেক্টরি পরিবর্তন করুন।

cd MyProjectFolder

পদক্ষেপ 2 , এক্সকোড ব্যবহার করুন বা /usr/libexec/PlistBuddy exportOptions.plistএক্সপোর্ট বিকল্পগুলি প্লাস্ট ফাইল তৈরি করুন। যাইহোক, xcrun xcodebuild -helpপ্লাস্ট ফাইলটিতে আপনার কী কী sertোকাতে হবে তা আপনাকে জানিয়ে দেবে।

পদক্ষেপ 3 , নিম্নরূপে .xcarchive ফাইল তৈরি করুন (ফোল্ডার, প্রকৃতপক্ষে) (বিল্ড / ডিরেক্টরি এখনই এক্সকোড দ্বারা স্বয়ংক্রিয়ভাবে তৈরি হবে),

xcrun xcodebuild -scheme MyApp -configuration Release archive -archivePath build/MyApp.xcarchive

পদক্ষেপ 4 , এক্সপিড 6 থেকে পৃথক, এই জাতীয় .ipa ফাইল হিসাবে রফতানি করুন

xcrun xcodebuild -exportArchive -exportPath build/ -archivePath build/MyApp.xcarchive/ -exportOptionsPlist exportOptions.plist

এখন, আপনি বিল্ড / ডিরেক্টরিতে একটি আইপিএ ফাইল পাবেন। এটি কেবল অ্যাপল অ্যাপ স্টোরে প্রেরণ করুন।

যাইহোক, এক্সকোড 7 দ্বারা নির্মিত আইপা ফাইলটি এক্সকোড 6 এর চেয়ে অনেক বড়।


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

"প্রকল্প.pbxproj" নামের একটি ফাইলের অন্তর্ভুক্ত প্রকল্প সেটিংসে স্বাক্ষরকারী সেটিংস রয়েছে, -schemeএবং -configurationকীভাবে আইপিএ ফাইলটি স্বাক্ষর করবেন বিকল্পগুলি সুনির্দিষ্ট করে।
ডনসং

আপনি যখন "কেবল এটি অ্যাপলকে প্রেরণ করুন" বলবেন, যেহেতু এটি স্বাভাবিক সংরক্ষণাগারটির ধাপগুলির বাইরে রয়েছে তাই প্রক্রিয়াটি কী?
16'2

"এটি অ্যাপলে প্রেরণ করুন", আইটিউনসোনকেট.এপল.কম এ লগইন করুন বা এক্সকোড-> ওপেন বিকাশকারী সরঞ্জাম-> অ্যাপ্লিকেশন লোডার ব্যবহার করার দুটি উপায় রয়েছে । @ মিক্সড 3 ডি
ডনসং

1
আমি একটি সম্পূর্ণ স্বয়ংক্রিয় সমাধান আবিষ্কার করেছি, যার জন্য আমি একটি নতুন উত্তর তৈরি করেছি!
23:38

14

নীচের টার্মিনালটি ব্যবহার করে আইপা তৈরির সময় অনুসরণ করার পদক্ষেপগুলি এবং পরামিতিগুলি সম্পর্কে একটি সংক্ষিপ্ত বিবরণ আমি দিয়েছি:

  1. টার্মিনালে আমার অ্যাপ্লিকেশন। Xcodeproject ফাইল রয়েছে এমন ফোল্ডারে যান

  2. নীচে প্রদত্ত কমান্ডটি ব্যবহার করে আপনি আবেদনের সমস্ত লক্ষ্যমাত্রা পাবেন

    /usr/bin/xcodebuild -list 
  3. উপরের কমান্ডটি কার্যকর করার পরে, আপনি .Pa উত্পন্ন করার জন্য আপনার নির্দিষ্ট লক্ষ্য নির্বাচন করা উচিত সেই লক্ষ্যগুলির একটি তালিকা পাবেন

    /usr/bin/xcodebuild -target $TARGET -sdk iphoneos -configuration Release
  4. উপরের কমান্ডটি প্রকল্পটি তৈরি করে এবং একটি .app ফাইল তৈরি করে। অ্যাপ ফাইলটি সনাক্ত করার পথটি path ./build/Release-iphoneos/MyApp.app

  5. বিল্ড সফল হওয়ার পরে নীচের বাক্য গঠন ব্যবহার করে বিকাশকারী নাম এবং প্রভিশনিং প্রোফাইল ব্যবহার করে অ্যাপ্লিকেশনটির আইপিএ উত্পন্ন করতে নিম্নলিখিত কমান্ডটি কার্যকর করুন:

    /usr/bin/xcrun -sdk iphoneos PackageApplication -v ${TARGET}.app -o ${OUTDIR}/${TARGET}.ipa sign ${IDENTITY}” embed ${PROVISONING_PROFILE}”

উপরের সিনট্যাক্সে প্রতিটি প্যারামিটারের ব্যাখ্যা:

${TARGET}.app                == Target path (ex :/Users/XXXXXX/desktop/Application/build/Release-iphoneos/MyApp.app)
${OUTDIR}                    == Select the output directory(Where you want to save .ipa file)
${IDENTITY}                   == iPhone Developer: XXXXXXX (XXXXXXXXXX)(which can be obtained from Keychain access)
${PROVISONING_PROFILE}   == Path to the provisioning profile(/Users/XXXXXX/Library/MobileDevice/Provisioning Profiles/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.mobileprovision”)
  1. আইপা নির্বাচিত আউটপুট ডিরেক্টরি " $ {আউটডির} " এ উত্পন্ন হবে

আমি এই ত্রুটিটিটি দেখছি "নির্দিষ্ট অ্যাপ্লিকেশনটি বিদ্যমান নয় বা একটি বান্ডিল ডিরেক্টরি নয়"
আনসারী আওইস

2
xcrun প্যাকেজ অ্যাপ্লিকেশনটি হ্রাস করা হয়েছে।
তুনভির রহমান তুষার

8

এক্সকোড 8:


আইপিএ ফর্ম্যাট:

xcodebuild -exportArchive -exportFormat IPA -archivePath MyMobileApp.xcarchive -exportPath MyMobileApp.ipa -exportProvisioningProfile 'MyMobileApp Distribution Profile'

প্রাইভেশনিং প্রোফাইল মাইমোবাইল অ্যাপ্লিকেশন ডিস্ট্রিবিউশন প্রোফাইল ব্যবহার করে মাইমোবাইল অ্যাপ.পিপা পথে আইপিএ ফাইল হিসাবে আর্কাইভ মাইমোবাইল অ্যাপ.এক্সক্রাইভকে রফতানি করে।

অ্যাপ্লিকেশন ফর্ম্যাট:

xcodebuild -exportArchive -exportFormat APP -archivePath MyMacApp.xcarchive -exportPath MyMacApp.pkg -exportSigningIdentity 'Developer ID Application: My Team'

অ্যাপ্লিকেশন-ব্যবহার অ্যাপ্লিকেশন কেশন স্বাক্ষরকারী পরিচয় বিকাশকারী আইডি অ্যাপ্লিকেশনটি ব্যবহার করে MyMacApp.pkg পথে একটি পিকেজি ফাইল হিসাবে আর্কাইভ মাইম্যাকএপি.এক্সক্রাইভকে রফতানি করে: আমার দল। ইনস্টলার স্বাক্ষরকারী পরিচয় বিকাশকারী আইডি ইনস্টলার: আমার দলটি রফতানি প্যাকেজটিতে স্বাক্ষর করার জন্য স্পষ্টভাবে ব্যবহৃত হয়।

এক্সকোডবিল্ড ম্যান পৃষ্ঠা


7

আপনার প্রকল্পের মূল যেখানে রয়েছে সেই ফোল্ডারে যান এবং:

xcodebuild -project projectname -activetarget -activeconfiguration archive

7
এটি কাজ করে না বলে মনে হচ্ছে। এক্সকোড ৩.২.২ (চূড়ান্ত) তে 'সংরক্ষণাগার' বিল্ডঅ্যাকশন উপলব্ধ নয়।
মার্টিন কোট

4

আরও এক ধাপ এগিয়ে এক্সকোড 7 এর সাথে কমান্ডলাইনের মাধ্যমে আইটিউনস কানেক্টে আপলোড হচ্ছে ! (ধরে নিচ্ছি যে আপনি এমন একটি দিয়ে শুরু .ipaকরছেন যা সঠিক প্রকাশের প্রোফাইল এবং স্বাক্ষর স্বাক্ষরের সাথে স্বাক্ষরিত হয়েছে))

altoolঅ্যাপ্লিকেশন লোডার ( docs, পৃষ্ঠা 38) এর জন্য সিএলআই ইন্টারফেস প্রবেশ করান । এক্সকোড.এপসের কাঠামোর মধ্যে গভীরভাবে লুকানো, এটি আইটিউনস কানেক্টে সরাসরি আপলোড করতে দেওয়া একটি সহজ কাজ।

/Applications/Xcode.app/Contents/Applications/Application Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/altool

$ altool --upload-app -f file -u username [-p password]আপনার নতুন টক্কর আপলোড করতে কেবল চালান.ipa সরাসরি অ্যাপলে । পাসওয়ার্ডটি isচ্ছিক এবং আপনি যদি আদেশটি ছেড়ে না দেন তবে এটির জন্য আপনাকে অনুরোধ জানাবে।

যদি যাচাইকরণের পদক্ষেপের সময় অ্যাপ্লিকেশনটিতে কোনও সমস্যা থাকে তবে কনসোল সেগুলি মুদ্রণ করবে।

আপনি altoolযদি এর অবস্থানটি সংরক্ষণ করতে না চান তবে আপনাকে সম্ভবত এই পথটি রফতানি করতে হবে।

export PATH=$PATH:/Applications/Xcode.app/Contents/Applications/Application\ Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/

এটাই! কেবলমাত্র আইটিউনসোনেক্ট.কম এ লগইন করুন এবং টেস্টফ্লাইটের সাথে পরীক্ষার জন্য আপনার নতুন বিল্ডটি নির্বাচন করুন।

চূড়ান্ত দ্রষ্টব্য: আপনি যদি বলার ক্ষেত্রে ত্রুটি পেয়ে থাকেন তবে সঠিক অবস্থানটিতে একটি সিমিলিংক চালাতে আপনি এই এসও উত্তরেরException while launching iTunesTransporter: Transporter not found at path: /usr/local/itms/bin/iTMSTransporter. You should reinstall the application পরামর্শটি অনুসরণ করতে পারেন :

ln -s /Applications/Xcode.app/Contents/Applications/Application\ Loader.app/Contents/itms /usr/local/itms

3

ভিনসেন্টের উত্তরের উন্নতি করে, আমি xcodearchive
এটি করার জন্য একটি স্ক্রিপ্ট লিখেছিলাম: এটি আপনাকে কমান্ড লাইনের মাধ্যমে আপনার প্রকল্প সংরক্ষণাগার (আইপিএ উত্পাদন) করতে দেয়। xcodebuildকমান্ডের বোনের মতো এটি ভাবুন তবে সংরক্ষণাগারভুক্ত করার জন্য।

কোডটি গিথুবে উপলভ্য: http://github.com/gcerquant/xcod Searchive


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


@ কুণালবালানী না, আমি আশা করি না যে এটি কর্মক্ষেত্রটি সঠিকভাবে পরিচালনা করবে। কোডটি দেখুন, এটিকে মানিয়ে নিতে খুব বেশি কাজ লাগবে না। অনুরোধ স্বাগত টান!
গিলাইম

3

কমান্ড দিয়ে আইওএস প্রকল্পটি কীভাবে তৈরি করবেন?

Clean : codebuild clean -workspace work-space-name.xcworkspace -scheme scheme-name 

&&

Archive : xcodebuild archive -workspace work-space-name.xcworkspace -scheme "scheme-name" -configuration Release -archivePath IPA-name.xcarchive 

&&

Export : xcodebuild -exportArchive -archivePath IPA-name.xcarchive -exportPath IPA-name.ipa -exportOptionsPlist exportOptions.plist


ExportOptions.plist কি?

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

গুরুত্বপূর্ণ : এক্সপোর্টঅপশন.পলিট অ্যাপস্টোরে মুক্তি ও বিকাশের পদ্ধতি আলাদা is

exportOptions_release ~ পদ্ধতি = অ্যাপ-স্টোর

উন্নয়ন

exportOptions_dev ~ পদ্ধতি = বিকাশ


2

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

  1. Xcode.app এর মতো একই পরীক্ষা চালায়।
  2. বিল্ড এবং পরীক্ষার ফলাফলগুলির কাঠামোগত আউটপুট।
  3. মানব-বান্ধব, এএনএসআই রঙিন আউটপুট।

নং 3 অত্যন্ত কার্যকর। আমি যদি কেউ এক্সকোডবিল্ডের কনসোল আউটপুট পড়তে পারি তবে আমি তা পারি না, সাধারণত এটি আমাকে 5000+ অক্ষরের সাথে একটি লাইন দেয়। এমনকি একটি থিসিস পেপার চেয়ে পড়া কঠিন।

xctool: https://github.com/facebook/xctool



2

এক্সকোড 8-এ আপডেট করার পরে আমি দেখতে পেলাম যে এন্টারপ্রাইজ আইপা তৈরি করে rate

/usr/bin/xcrun -sdk iphoneos PackageApplication -v "${RELEASE_BUILDDIR}/${APPLICATION_NAME}.app" -o "${BUILD_HISTORY_DIR}/${APPLICATION_NAME}.ipa" --sign "${DEVELOPER_NAME}" --embed "${PROVISONING_PROFILE}" 

কিছু স্বাক্ষর সমস্যার কারণে কমান্ড আরম্ভ করা যাবে না। লগটি নির্দেশ করে যে "সতর্কতা: প্যাকেজ অ্যাপ্লিকেশনটি হ্রাস করা হয়েছে, xcodebuild -exportArchiveপরিবর্তে ব্যবহার করুন।

তাই আমি স্যুইচ করেছি xcodebuild -exportArchiveএবং সবকিছু স্বাভাবিক হয়ে গেছে।


1

আপনি বৈধতা / ভাগ / জমা বিকল্পগুলি বলতে চান? আমি মনে করি সেগুলি এক্সকোডের সাথে সুনির্দিষ্ট এবং কমান্ড-লাইন বিল্ড সরঞ্জামের জন্য উপযুক্ত নয়।

কিছু চালাকতার সাথে, আমি বাজি ধরছি আপনি এটি করার জন্য একটি স্ক্রিপ্ট তৈরি করতে পারেন। দেখে মনে হচ্ছে এগুলি কেবল ~/Library/MobileDevice/Archived Applications/একটি ইউডিআই এবং একটি প্লিস্টের সাথে সঞ্চিত রয়েছে । আমি ভেবে দেখতে পারি না যে বৈকল্পিক প্রকৌশলীকে রিভার্স করা এত কঠিন হবে।

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


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

2
হ্যাঁ. আমি একটি কাস্টম স্ক্রিপ্টের সাথে হডসন কন্টিনিউজ ইন্টিগ্রেশন ব্যবহার করছি যা চলে xcodebuildএবং আইপিএ তৈরি করে।
মাইকেল গ্রিনিচ

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