IPA बनाते समय Xcode 6.1 त्रुटि


140

बस आज Xcode 6.1 में अपग्रेड किया गया है, और लगता है कि क्या: अब मुझे TestFlight डेस्कटॉप ऐप का उपयोग करके बिल्ड सबमिट करने में समस्या हो रही है। यहां वह त्रुटि है जो मुझे तब मिल रही है जब ऐप IPA बनाना शुरू करता है:

त्रुटि

त्रुटि: / usr / bin / codeign --force --preserve-metadata = पहचानकर्ता, एंटाइटेलमेंट, संसाधन-नियम -sign 854059d45eed724593debef577a562e1ba96ab55-resource- नियम = / tmp / QYFSJIvu7W / पेलोड / XX/appsapp / संसाधन / नियम /QYFSJIvu7W/Payload/XX.app त्रुटि के साथ विफल रहा। आउटपुट: चेतावनी: विकल्प "संसाधन-नियमों" के साथ -preserve-मेटाडेटा का उपयोग (मैक ओएस एक्स में = = 10.10 चित्रित)! चेतावनी: - Mac OS X> = 10.10 में स्रोत-नियमों को हटा दिया गया है! /tmp/QYFSJIvu7W/Payload/XX.app/ResourceRules.plist: संसाधन उपलब्ध नहीं करा सकता

'सपोर्ट आर्टिकल' का कोई पता नहीं है कि क्या चल रहा है।

यह एक TestFlight समस्या नहीं लगती है क्योंकि जेनेक जैसे xcrun या इसी तरह के औजारों का उपयोग करके सीआई वातावरण में एक ही बात होती है।

एप्लिकेशन को महीनों तक अपडेट नहीं किया गया था, इसलिए मुझे पता है कि मुझे किसी भी अपडेट के लिए जल्द ही इसे ठीक करने की उम्मीद नहीं करनी चाहिए। यह मेरे और मेरे ग्राहकों के लिए वास्तव में अच्छा काम करता था इसलिए मैं वास्तव में इसे किसी और चीज़ के लिए छोड़ने के लिए उत्सुक नहीं हूं।

इस त्रुटि के बारे में कोई भी विचार, और इसे कैसे ठीक किया जाए, इसकी बहुत सराहना की जाएगी।


4
यह एक TestFlight समस्या नहीं लगती है क्योंकि इसी तरह से xcrun कमांड का उपयोग करके CI वातावरण में भी यही होता है xcrun -sdk iphoneos PackageApplication -v <Path_to_App> -o <Path_to_IPA> --sign <Distribution_certificate> --embed <Provisioning_profile>:। Xcode 6.0.1 के साथ, यह सब ठीक है।
डैनियल मार्टिन 7

जवाबों:


312

काश मुझे पता होता कि यह काम क्यों करता है, लेकिन यहाँ एक तय है कि मेरे लिए काम किया:

ठीक पाया!

अपनी परियोजना> लक्ष्य> अपना लक्ष्य चुनें> सेटिंग चुनें> पर क्लिक करें

Code Signing Resource Rules Path

और जोड़ :

$(SDKROOT)/ResourceRules.plist


7
धन्यवाद! सच कहूँ तो मुझे परवाह नहीं है कि यह काम क्यों करता है :) पिछले कुछ महीनों में Apple ने अपनी भव्य लकीर को तोड़ दिया है। वैसे भी, समाधान के लिए इशारा करने के लिए धन्यवाद। (और पोस्ट करने से पहले त्रुटि को अच्छी तरह से नहीं देखने के लिए मेरे लिए एक अपमान है)
downफाक गीज़र

10
CODE_SIGN_RESOURCE_RULES_PATH एक चर नाम है यदि आप एक स्क्रिप्ट या कमांड लाइन के माध्यम से अपनी xcodeproj सेटिंग्स संपादित कर रहे हैं। डेवलपर
.apple.com

5
मैं Code Signing Resource Rules Pathअपनी बिल्ड सेटिंग्स में नहीं देख सकता । कोई उपाय?
जॉर्ज

7
सुनिश्चित रूप से चयनित सभी और नहीं मूल सेटिंग्स (नीचे "जनरल, क्षमताओं, जानकारी, बिल्ड सेटिंग्स आदि" पंक्ति) बनाओ
के रूप में

जाहिरा तौर पर यह आपके ऐप को अस्वीकार कर दिया जाएगा: stackoverflow.com/questions/26488077/…
ग्लेन मेनार्ड

61

PackageApplications के लिए निम्नलिखित पैच ने इसे मेरे लिए तय किया, मैंने संसाधन-नियमों को हटा दिया क्योंकि यह कहता है कि यह 10.10 पर पदावनत है।

टेस्टफ्लाइट इसके बिना काम बनाता है। Appstore भी बनाता है।

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin
 % diff PackageApplication PackageApplicationFixed 
155,157c155,156
<     my @codesign_args = ("/usr/bin/codesign", "--force", "--preserve-metadata=identifier,entitlements,resource-rules",
<                          "--sign", $opt{sign},
<                          "--resource-rules=$destApp/ResourceRules.plist");
---
>     my @codesign_args = ("/usr/bin/codesign", "--force", "--preserve-metadata=identifier,entitlements",
>                          "--sign", $opt{sign});

PackageApplication से दुष्ट पदावनत पैरामीटर को हटा दिया गया, और buildozer अब iOS के लिए मेरा पायथन ऐप बनाता है
Ian Ellis

महान तय! बहुत बहुत धन्यवाद :) उपरोक्त "कोड साइनिंग रिसोर्स रूल्स पाथ" सेटिंग ने मेरी समस्या को ठीक नहीं किया, लेकिन यह जवाब दिया, साथ ही यह फिक्स अब सभी परियोजनाओं के लिए वैश्विक है :)
गोली

@IanEllis: क्या आप मुझे बता सकते हैं कि आपने PackageApplication से "संसाधन-नियम" पैरामीटर को कैसे हटाया। इससे बहुत मदद मिलेगी !!
रश्मि रंजन मल्लिक

8
यहाँ पैकेजएप्लिकेशंस को ठीक करने के लिए एक ऑनलाइनर है: perl -p -i'Orig '-e' BEGIN {undef $ /;} s /, रिसोर्स-रूल्स (। * साइन})। * ResourceRules.plist / "$ 1 / smg '" /। एप्लीकेशन / Xcode6.1.1.app / Contents / Developer / Platforms / iPhoneOS.platform / Developer / usr / bin / PackageApplication ”(अपना रास्ता समायोजित करें) और इसे लागू करने के लिए एक पूरी स्क्रिप्ट: bitbucket.org/WeantToKnow/xcode_scripts/raw/… उपयोग करने के लिए: xcode_fix_PackageApplicationResourceRules.sh /Applications/Xcode6.1.1.app
कॉफीब्रेड

यह सही जवाब है। बिल्ड सेटिंग उत्तर बल एक अपग्रेड किए गए API का उपयोग करते हैं।
जेम्सन

10

मैंने TestFlight समर्थन ईमेल किया और इसे प्रतिक्रिया मिली:

हमारी टीम वर्तमान में TestFlight Desktop ऐप के साथ इस मुद्दे की जांच कर रही है। इस बीच, कृपया IPA फ़ाइल बनाने के लिए Xcode का उपयोग करें और फिर इसे डेस्कटॉप ऐप या TestFlight वेबसाइट का उपयोग करके अपलोड करें।

सुझाए गए वर्कअराउंड ने काम किया।


1
इसने मेरे लिए काम किया कि मैं सिर्फ Xcode के साथ .ipa बनाऊं और डेस्कटॉप ऐप के जरिए अपलोड करूं।
लिविंगटेक

@livingtech हाँ, हालाँकि मुझे भी डर लग गया "Xcode एक नई प्रोफ़ाइल बनाने के बजाय जिसे मैं चाहता हूँ उसे चुनने के बजाय" -बग :) टेस्टफलाइट के साथ अपलोड करना सीधे-सीधे शानदार काम करता है।
हेल्मेसो

10

जवाब टिम Gostony द्वारा नहीं रह गया है Xcode 7. की रिलीज के बाद से काम करता है अब ऐप स्टोर प्रस्तुत प्रक्रिया विफल जब संसाधन नियम मौजूद हैं। समाधान के लिए अपने कोड हस्ताक्षर संसाधन नियम पथ को साफ़ करना है और xcrun को xcodebuild उपकरण से बदलना है:

xcodebuild -exportArchive -archivePath [path to archive] -exportPath [path to output directory] -exportOptionsPlist [path to options.plist file]

सरलतम विकल्प। Ad-hoc वितरण ipa फ़ाइलें निर्यात करने के लिए इस तरह दिखता है:

<?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>iCloudContainerEnvironment</key>
    <string>Production</string>
    <key>teamID</key>
    <string>[YOUR TEAM ID]</string>
    <key>method</key>
    <string>ad-hoc</string>
</dict>
</plist>

बिटकॉइन, ऐप थिनिंग, आदि के बारे में इस plist फ़ाइल के लिए अन्य विकल्प उपलब्ध हैं। यही कारण है कि मुझे लगता है कि xcodebuild उपकरण iOS 9 और इसके बाद के संस्करण के लिए ipa फ़ाइलें निर्यात करने के लिए सही उपकरण है।

विकल्प प्लिस्ट के बारे में अधिक विवरण xcodebuild -help कमांड के साथ उपलब्ध हैं।


धन्यवाद व्लादिमीर, मैं वास्तव में इस पर भ्रमित हो रहा था कि यह एक्सकोड 7 सबमिशन के साथ कैसे टकराव करता है।
केविनल सेप

आप वास्तव में xcrun की जगह कैसे लेते हैं? मैं जेनकिंस Xcode प्लगइन में उस के लिए कोई सेटिंग नहीं देख सकता :(
Hlung

2

Yosemite w / XCode 6.4 पर भी SDKROOT पैच का उपयोग करके कोडिंग फेल है। निम्नलिखित लेख बताता है कि इसको प्राप्त करने के लिए XCode स्क्रिप्ट को कैसे पैच करना है। ध्यान दें कि यह XCode को पैच कर रहा है, इसलिए यह संस्करण विशिष्ट है, लेकिन समस्या को ठीक करता है।

http://www.jayway.com/2015/05/21/fixing-your-ios-build-scripts


1

एलिस्ट्रा का जवाब मेरे लिए काम करता है लेकिन मैं ऐसी स्क्रिप्ट नहीं बदलना चाहता जो मेरी नहीं है (भविष्य में Xcode रिलीज होने से यह फाइल बदल सकती है और सुधार खो जाएगा)।

 diff PackageApplication PackageApplicationFixed 155,157c155,156
<-     my @codesign_args = ("/usr/bin/codesign", "--force", "--preserve-metadata=identifier,entitlements,resource-rules",
<-                          "--sign", $opt{sign},
<-                          "--resource-rules=$destApp/ResourceRules.plist");
---
->     my @codesign_args = ("/usr/bin/codesign", "--force", "--preserve-metadata=identifier,entitlements",
->                          "--sign", $opt{sign});

मुझे लगता है कि व्लादिमीर ग्रिगोरोव का जवाब सबसे अच्छा है अगर आपके पास संग्रह का उपयोग करना है:

xcodebuild -exportArchive -archivePath [path to archive] -exportPath [path to output directory] -exportOptionsPlist [path to options.plist file]

मेरे मामले में, मेरे पास संग्रह नहीं है, क्योंकि मैं इसे बनाने के बाद आवेदन को संशोधित करता हूं और मुझे बंडल आईडी और हस्ताक्षर प्रमाणपत्र को बदलने की आवश्यकता होती है।

मैंने जो समाधान पाया वह उपयोग करने codesignसे पहले खुद को कॉल करने PackageApplicationऔर PackageApplicationहस्ताक्षर न करने के लिए कहा। ऐशे ही :

replace :

 /usr/bin/xcrun -sdk iphoneos PackageApplication -v "<app_path>" -o "<ipa_path>" --sign "<provisioning_profile.certificateSubject>" --embed "<provisioning_profile.path>"

by :

/bin/cp -rpfv "<provisioning_profile.path>" "<app_path>/embedded.mobileprovision"
/usr/bin/codesign -v -vvvv -f -s "<provisioning_profile.certificateSubject>" --entitlements="<entitlement_path>" "<app_path>"
/usr/bin/xcrun -sdk iphoneos PackageApplication -v "<app_path>" -o "<ipa_path>"

.mobileprovisionसाइन इन करने के लिए फ़ाइल का उपयोग करना न भूलें cp


0

जैसा कि एक अन्य उत्तर में कहा गया है , आप वितरण प्रमाणपत्र को केवल हस्ताक्षर करने के लिए निर्दिष्ट नहीं कर सकते हैं और यह सही तरीके से पैकेज करेगा। TestFlight को ऐसा करने के लिए अपने ऐप को अपडेट करना होगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.