আইপিএ ফাইলে পুনরায় স্বাক্ষর করবেন কীভাবে?


107

আমি নীচের মতো আইপিএ তৈরি করার পরে বিধানের প্রোফাইলের সাথে .ipa ফাইলটিতে কীভাবে স্বাক্ষর করব? আমি বিটা পরীক্ষার জন্য অ্যাড-হক প্রভিশন প্রোফাইলে আইপিএতে স্বাক্ষর করতে চাই এবং তারপরে অ্যাপ স্টোরের জন্য একটি অ্যাপ্লিকেশন জমা দেওয়ার প্রোফাইল দিয়ে সঠিক আইপিএতে পুনরায় সই করতে চাই।

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

উত্তর:


207

কমান্ড লাইন থেকে এটি করা খুব সহজ। এটি করার জন্য আমার একটি স্ক্রিপ্টের সংক্ষিপ্তসার ছিল। এটি এখন https://github.com/RichardBronosky/ota-tools এ ipa_sign স্ক্রিপ্টে অন্তর্ভুক্ত করা হয়েছে যা আমি প্রতিদিন ব্যবহার করি। এই সরঞ্জামগুলি ব্যবহার সম্পর্কে আপনার যদি কোনও প্রশ্ন থাকে তবে জিজ্ঞাসা করতে দ্বিধা করবেন না।

এর হৃদয় এটি:

CODESIGN_ALLOCATE=`xcrun --find codesign_allocate`; export CODESIGN_ALLOCATE
IPA="/path/to/file.ipa"
PROVISION="/path/to/file.mobileprovision"
CERTIFICATE="Name of certificate: To sign with" # must be in keychain
# unzip the ipa
unzip -q "$IPA"
# remove the signature
rm -rf Payload/*.app/_CodeSignature
# replace the provision
cp "$PROVISION" Payload/*.app/embedded.mobileprovision
# sign with the new certificate (--resource-rules has been deprecated OS X Yosemite (10.10), it can safely be removed)
/usr/bin/codesign -f -s "$CERTIFICATE" Payload/*.app
# zip it back up
zip -qr resigned.ipa Payload

আপনার নতুন স্বাক্ষরিত অ্যাপ্লিকেশনটিকে ইস্তফা দেওয়া হয়েছে ip


31
Up টি আপ এবং একক প্রশ্ন নয়। আমার অনুমান যে আমার বাশ ঠিক এটি পরিষ্কার।
ব্রুনো ব্রোনোস্কি

4
প্রকৃতপক্ষে এটা স্যার।
রুই পেরেস

3
@ রহমথুল্লাহ এমপুলিক্কাল আমি দেখতে পাচ্ছি যে আমি ভুলের সাথে সংক্ষেপে একটি পথ কঠোর করে রেখেছিলাম। আপনার সত্যিই গিস্টের পরিবর্তে github.com/RichardBronosky/ota-tools/blob/master/ipa_sign ব্যবহার করা উচিত । এটি রক্ষণাবেক্ষণের কোড।
ব্রুনো ব্রোনোস্কি

5
আপনি --res উত্স-বিধি পরামিতিগুলির উপর একটি সতর্কতা / ত্রুটি পেয়েছিলেন, যা ওএস এক্স ইয়োসেমাইট (10.10) এ অবজ্ঞা করা হয়েছে, কেবল এই সমস্যার সমাধান করার জন্য এই পরামিতিটি মুছুন।
25uǝʞ

4
এক সামান্য নোট: এটা দেখে মনে হচ্ছে CodeResourcesএখন অবস্থিত ভিতরে এর _CodeSignature, ফোল্ডার যাতে আপনি ঠিক যে ফোল্ডারের সরিয়ে ফেলা আবশ্যক।
dadude999

36

এটি কীভাবে করা যায় তার জন্য একটি সহজ সরঞ্জামের জন্য আইরিজাইন চেক করুন!

কিছুটা ঘোরাঘুরি করার পরে [সম্পাদনা করুন], আমি কীচেইন-সচেতন পদত্যাগ করার একটি সমাধান পেয়েছি। আপনি https://gist.github.com/Weptun/5406993 এ এটি পরীক্ষা করে দেখতে পারেন


পদত্যাগ করার সময় বান্ডেল আইডির সাথে ডিসপ্লে নামটি পরিবর্তন করতে পারে এমন কোনও সরঞ্জাম রয়েছে কি? এটি বিভিন্ন পরিবেশের জন্য বিভিন্ন ডিসপ্লে নাম রাখতে সহায়তা করবে। অ্যাপ্লিকেশন-দেব, অ্যাপ-কিউ, অ্যাপ-স্টেজ ইত্যাদি
নিশান্ত নায়ার

1
হ্যাঁ, floatsign.sh ঠিক এটি করে।
ব্লিটজ

কাজ করে। সাধারণ এবং সুন্দর।
অর্জুন কালিদাস

13

পুরানো প্রশ্নের মতো, তবে সর্বশেষতম এক্সকোড সহ codesignসহজ:

$ codesign -s my_certificate example.ipa 

$ codesign -vv example.ipa
example.ipa: valid on disk
example.ipa: satisfies its Designated Requirement

2
@ পাভেল এই প্রশ্নের উত্তর দেওয়া হয়েছিল যখন আইওএস 6.x সর্বশেষতম সংস্করণ ছিল। তার পর থেকে আমাদের দুটি বড় প্রকাশ হয়েছে, যা স্পষ্টতই অনেক কিছুই বদলেছে। আপনি আপনার অনুসন্ধানগুলিকে উত্তরগুলিতে সীমাবদ্ধ করতে চান যা বর্তমান প্রযুক্তিটিকে লক্ষ্য করে।
ব্রায়ানএইচ

এটা আমার জন্য কাজ করে। আপনাকে আপনার কী শৃঙ্খলে কী এর নামের সাথে "আমার_সেস্টিফেট" প্রতিস্থাপন করতে হবে।
ফ্রানজিস্কাস কারসুনকে

2
codesignকমান্ডটি ব্রুনো ব্রোনোস্কি প্রতিক্রিয়াতেও ব্যবহৃত হয়। আমি এটি সরাসরি "* .পাপা" ফাইলে ব্যবহার করতে পারছি না এবং "-vv" বিকল্পগুলি সর্বদা code object is not signed at allফাইলে ফিরে আসে যা আমি জানি যে তারা স্বাক্ষরিত হয়েছে ...
মারিয়ানো পানিগা

12

এখানে পোস্ট করা উত্তরগুলি আমার পক্ষে পুরোপুরি কার্যকর হয়নি। তারা মূলত এম্বেডড ফ্রেমওয়ার্কগুলি স্বাক্ষর করতে এড়িয়ে যায় (বা এনটাইটেলমেন্ট সহ)।

এখানে আমার জন্য কী কাজ করা হয়েছে (এটি ধরে নেওয়া হয় যে একটি আইপা ফাইল বিদ্যমান ডিরেক্টরিতে রয়েছে):

PROVISION="/path/to/file.mobileprovision"
CERTIFICATE="Name of certificate: To sign with" # must be in the keychain

unzip -q *.ipa
rm -rf Payload/*.app/_CodeSignature/

# Replace embedded provisioning profile
cp "$PROVISION" Payload/*.app/embedded.mobileprovision

# Extract entitlements from app
codesign -d --entitlements :entitlements.plist Payload/*.app/

# Re-sign embedded frameworks
codesign -f -s "$CERTIFICATE" --entitlements entitlements.plist Payload/*.app/Frameworks/*

# Re-sign the app (with entitlements)
codesign -f -s "$CERTIFICATE" --entitlements entitlements.plist Payload/*.app/

zip -qr resigned.ipa Payload

# Cleanup
rm entitlements.plist
rm -r Payload/

উপরে (সমৃদ্ধ) পদ থেকে দরকারী মন্তব্য: stackoverflow.com/questions/5160863/...
Serzas

9

ফাস্টলানের দীর্ঘশ্বাস আইপিএগুলিকে পদত্যাগ করার জন্য মোটামুটি শক্ত সমাধান সরবরাহ করে।

তাদের পুনরায় পড়া থেকে:

পদত্যাগ

আপনি যদি নিজের ipaফাইলটি উত্পন্ন করে থাকেন তবে আইপা ফাইলে সাইন ইন করতে আলাদা কোড প্রয়োগ করতে চান তবে আপনি ব্যবহার করতে পারেন sigh resign:

fastlane sigh resign

sigh যদি তারা বর্তমান ফোল্ডারে থাকে তবে আপনার জন্য আইপা ফাইল এবং প্রভিশনিং প্রোফাইলটি খুঁজে পাবেন।

কমান্ড লাইন ব্যবহার করে আপনি আরও তথ্য পাস করতে পারেন:

fastlane sigh resign ./path/app.ipa --signing_identity "iPhone Distribution: Felix Krause" -p "my.mobileprovision"

এটি নেস্টেড অ্যাপ্লিকেশনগুলির জন্য প্রভিশিং প্রোফাইলগুলিও পরিচালনা করবে (যেমন আপনার যদি ওয়াচকিট অ্যাপস থাকে)


8

আমি আমার সিয়েরা আইম্যাকের জন্য ব্রায়ানের কোড আপডেট করেছি:

# this version was tested OK vith macOs Sierra 10.12.5 (16F73) on oct 0th, 2017
# original ipa file must be store in current working directory 

IPA="ipa-filename.ipa"
PROVISION="path-to.mobileprovision"
CERTIFICATE="hexadecimal-certificate-identifier" # must be in keychain
# identifier maybe retrieved by running: security find-identity -v -p codesigning

# unzip the ipa
unzip -q "$IPA"

# remove the signature
rm -rf Payload/*.app/_CodeSignature

# replace the provision
cp "$PROVISION" Payload/*.app/embedded.mobileprovision

# generate entitlements for current app
cd Payload/
codesign -d --entitlements - *.app > entitlements.plist
cd ..
mv Payload/entitlements.plist entitlements.plist

# sign with the new certificate and entitlements
/usr/bin/codesign -f -s "$CERTIFICATE" '--entitlements' 'entitlements.plist'  Payload/*.app

# zip it back up
zip -qr resigned.ipa Payload

আমি নিম্নলিখিত ত্রুটিটি এনটাইটেলমেন্টগুলি.পলিট করি: অচেনা ব্লব টাইপ (অন্ধভাবে গ্রহণ করা) এনটাইটেলমেন্টস.পুলিস্ট: এনটাইটেলমেন্ট ব্লবে অবৈধ দৈর্ঘ্য
আমর রাগ

আপনি কি এনটাইটেলমেন্ট ফাইলের বিষয়বস্তু ভাগ করতে পারেন?
পিয়েরে প্রোট

মোহন মত কাজ!
লুইস ই প্রাদো

5
  1. .Ipa ফাইলটি .zip এর সাহায্যে এক্সটেনশন পরিবর্তন করে আনজিপ করুন
  2. পেলোডে যান। আপনি .app ফাইল পাবেন
  3. .App ফাইলটিতে ডান ক্লিক করুন এবং প্যাকেজ সামগ্রীগুলি ক্লিক করুন
  4. মুছুন _CodeSignedফোল্ডারটি
  5. প্রতিস্থাপন embedded.mobileprovisionনতুন বিধান প্রোফাইল দিয়ে ফাইলটি
  6. কীচেইন অ্যাক্সেসে যান এবং অস্থায়ী প্রোফাইলের সাথে সম্পর্কিত শংসাপত্র উপস্থিত রয়েছে তা নিশ্চিত করুন
  7. নীচের বর্ণিত আদেশটি কার্যকর করুন: /usr/bin/codesign -f -s "iPhone Distribution: Certificate Name" --resource-rules "Payload/Application.app/ResourceRules.plist" "Payload/Application.app"

  8. এখন পেইলোড ফোল্ডারটি আবার জিপ করুন এবং .ipa দিয়ে .zip এক্সটেনশনটি পরিবর্তন করুন

এই সহায়ক আশা করি।

রেফারেন্সের জন্য নীচে উল্লিখিত লিঙ্কটি অনুসরণ করুন: http://www.modelmetics.com/tomgersic/codesign-re-signing-an-ipa-between-apple-accounts/


1

এই অ্যাপ্লিকেশন চেষ্টা করুন http://www.ketzler.de/2011/01/resign-an-iphone-app-insert-new-bundle-id-and-send-to-xcode-organizer- for- /

আইপিএ ফাইলটি আপনাকে পদত্যাগ করতে সহায়তা করবে বলে মনে করা হচ্ছে। আমি নিজে চেষ্টা করেছিলাম কিন্তু এনটাইটেলমেন্টস.পুলিস্টের সাথে একটি ত্রুটি পাস করতে পারিনি। আমার প্রকল্পে কেবল সমস্যা হতে পারে। আপনার এটি করা উচিত।

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