IPA oluşturulurken Xcode 6.1 hatası


140

Sadece bugün Xcode 6.1'e yükselttik ve tahmin edin: Şimdi TestFlight masaüstü uygulamasını kullanarak derlemeler gönderme konusunda sorun yaşıyorum. Uygulama IPA'yı oluşturmaya başlarken karşılaştığım hata İşte:

Hata

hata: / usr / bin / codesign --force --preserve-metadata = tanımlayıcı, yetkiler, kaynak kuralları --ign 854059d45eed724593debef577a562e1ba96ab55 --resource-rules = / tmp / QYFSJIvu7W / Payload / XX.app / ResourceRules.plist / tmp /QYFSJIvu7W/Payload/XX.app hata 1 ile başarısız oldu. Çıktı: Uyarı: "kaynak kuralları" seçeneğiyle --preserve-metadata kullanımı (Mac OS X> = 10.10'da kaldırıldı)! Uyarı: - Mac OS X> = 10.10'da kaynak kuralları kullanımdan kaldırıldı! /tmp/QYFSJIvu7W/Payload/XX.app/ResourceRules.plist: kaynaklar okunamıyor

'Destek Makalesi'nin ne olduğu hakkında hiçbir fikri yok.

Bir TestFlight sorunu gibi görünmüyor çünkü aynı şey xcrun veya benzeri araçları kullanarak Jenkins gibi bir CI ortamında gerçekleşiyor.

Uygulama aylarca güncellenmedi, bu yüzden yakın zamanda bunu düzeltmek için herhangi bir güncelleme beklememem gerektiğini biliyorum. Eskiden benim ve müşterilerim için çok iyi çalışırdı, bu yüzden başka bir şey için terk etmeye gerçekten hevesli değilim.

Bu hatanın ne olduğu ve nasıl düzeltileceği hakkında herhangi bir fikir çok takdir edilecektir.


4
Aynı şey böyle xcrun komutunu kullanarak bir CI ortamında olur çünkü TestFlight sorun olarak görünmüyor: xcrun -sdk iphoneos PackageApplication -v <Path_to_App> -o <Path_to_IPA> --sign <Distribution_certificate> --embed <Provisioning_profile>. Xcode 6.0.1 ile her şey yolunda gitti.
Daniel Martín

Yanıtlar:


312

Keşke neden işe yaradığını bilsem , ama işte benim için işe yarayan bir düzeltme :

Düzeltmeyi buldum!

Projenizi> Hedefler> Hedefinizi seçin> Oluşturma Ayarları>

Code Signing Resource Rules Path

ve Ekle :

$(SDKROOT)/ResourceRules.plist


7
Teşekkürler! Açıkçası neden işe yaradığı umrumda değil :) sadece son birkaç ay içinde kendi büyük vida-up streak kırdı ne son. Her neyse, çözüme dikkat ettiğiniz için teşekkürler. (ve göndermeden önce hataya iyice bakmadığım için bir aşağı oy)
Şafak Gezer

10
Xcodeproj ayarlarınızı bir komut dosyası veya komut satırı üzerinden düzenliyorsanız, CODE_SIGN_RESOURCE_RULES_PATH değişken adıdır. developer.apple.com/library/ios/recipes/…
roblocop

5
Code Signing Resource Rules PathYapı Ayarlarımda göremiyorum . Herhangi bir fikir?
Georg

7
Seçtiğinizden emin TÜM değil TEMEL ayarları ( "Genel, Yetenek, Bilgi, Ayarlar vb İnşa" altındaki satırı) Make
AS

Görünüşe göre bu, uygulamanızı reddedecek: stackoverflow.com/questions/26488077/…
Glenn Maynard

61

PackageApplications için aşağıdaki düzeltme eki benim için düzeltti, 10.10'da kullanımdan kaldırıldığını söylediği gibi kaynak kurallarını kaldırdım.

Testflight, onsuz çalışma oluşturur. Appstore da oluşturulur.

/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});

Rogue deprecated parametresini PackageApplication'tan kaldırdı ve buildozer şimdi iOS için Python uygulamamı oluşturuyor
Ian Ellis

Harika bir düzeltme! Çok teşekkürler :) Yukarıdaki "Kod İmzalama Kaynak Kuralları Yolu" ayarı sorunumu çözmedi ama bu cevap yaptı, artı düzeltme şimdi tüm projelerde küresel :)
Pelet

@IanEllis: "resource-rules" parametresini PackageApplication'dan nasıl kaldırdığınızı bize bildirir misiniz? Çok yardımcı olacak !!
Rashmi Ranjan mallick

8
PackageApplication'ı düzeltmek için bir oneliner: perl -p -i'Orig '-e' BEGIN {undef $ /;} s /, kaynak kuralları (. * Sign}). * ResourceRules.plist "/ $ 1 / smg '" / Uygulamalar / Xcode6.1.1.app / İçindekiler / Geliştirici / Platformlar / iPhoneOS.platform / Geliştirici / usr / bin / PackageApplication "(yolunuzu ayarlayın) Ve bunu uygulamak için tam bir komut dosyası: bitbucket.org/WeWantToKnow/xcode_scripts/raw/… kullanımına: xcode_fix_PackageApplicationResourceRules.sh /Applications/Xcode6.1.1.app
coffeebreaks

Bu doğru cevap. Derleme ayarı yanıtı, kullanımdan kaldırılmış bir API'nın kullanımını zorlar.
Jameson

10

TestFlight desteğine e-posta gönderdim ve şu yanıtı aldım:

Ekibimiz şu anda TestFlight Masaüstü uygulamasıyla bu sorunu araştırmaktadır. Bu arada, IPA dosyasını oluşturmak için lütfen Xcode kullanın ve ardından masaüstü uygulamasını veya TestFlight web sitesini kullanarak yükleyin.

Önerilen geçici çözüm işe yaradı.


1
Sadece Xip ile .ipa yapmak ve masaüstü uygulaması aracılığıyla yüklemek benim için çalıştı.
livingtech

@livingtech Evet, ancak ben de "-bug :) İstediğim birini seçmek yerine yeni bir profil üreten korkunç Xcode aldım :) Testflight ile yükleme doğrudan muhteşem çalıştı.
14:49, helmesjo

10

Cevap Tim Gostony tarafından artık kaynak kuralları mevcut olduğunda Şimdi App Store gönderim işlemi başarısız Xcode 7'nin çıktığından beri çalışmaktadır. Çözüm, Kod İmzalama Kaynak Kuralları Yolunuzu temizlemek ve xcrun'u xcodebuild aracıyla değiştirmektir:

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

Geçici dağıtım ipa dosyalarını dışa aktarmak için en basit Options.plist şöyle görünür:

<?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>

Bu plist dosyası için bitcode, uygulama inceltme, vb. İle ilgili başka seçenekler de var. Bu yüzden xcodebuild aracının iOS 9 ve üstü için ipa dosyalarını dışa aktarmak için doğru araç olduğunu düşünüyorum.

Seçenekler plist hakkında daha fazla ayrıntı xcodebuild -help komutuyla kullanılabilir.


Teşekkürler Vladimir, bu konuda Xcode 7 başvurularıyla nasıl çeliştiği ile gerçekten karışıyordum.
kevinl

xcrun tam olarak nasıl değiştirilir? Jenkins Xcode eklentisinde bunun için herhangi bir ayar göremiyorum :(
Hlung

2

Yosemite w / XCode 6.4 ile SDKROOT düzeltme ekini kullanarak bile kod imzalama başarısız olur. Aşağıdaki makalede, bu sorunu çözmek için XCode komut dosyasının nasıl ekleneceği açıklanmaktadır. Bunun XCode yamasını eklediğini unutmayın, bu nedenle sürüme özgüdür, ancak sorunu düzeltir.

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


1

Cevap benim için Alistra işten Bana ait olmayan bir script değiştirmek istemiyor ama (gelecekteki bir Xcode bırakma bu dosyayı değişebilir ve düzeltme kaybolur).

 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});

Bence bir arşiviniz varsa Vladimir Grigorov'un cevabı en iyisi:

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

Benim durumumda, arşivim yok, çünkü uygulamayı oluşturduktan sonra değiştiriyorum ve Paket Kimliği ve imzalama sertifikasını değiştirmem gerekiyor.

Bulduğum çözüm codesignkullanılmadan önce kendimi aramak PackageApplicationve PackageApplicationimzalamamayı istemek . Bunun gibi :

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İmzalamak için kullanarak dosyayı katıştırmayı unutmayın cp.


0

Başka bir yanıtta belirtildiği gibi , imzalanacak dağıtım sertifikasını da belirleyemezsiniz ve doğru şekilde paketlenir. TestFlight'ın bunu yapmak için uygulamalarını güncellemesi gerekir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.