Xcode 6 - Geçici dağıtım için imzalama sertifikası / ön hazırlık profili nasıl seçilir?


143

Uygulamayı test kullanıcılarımıza dağıtmak için, aşağıdaki işlemi kullanarak yaptığımız Xcode'u kullanıyoruz:

  • Arşiv uygulaması
  • Geçici için Dağıt
  • Ön hazırlık profilini seçin
  • .İpa dosyasını bir klasöre kaydedin

Ancak Xcode 6 ile bu iş akışı biraz değişti. Yine de Geçici dağıtım seçeneğini belirleyebilirim, ancak istediğim sağlama profilini seçemiyorum. Bu bize hangi imzalama sertifikasının kullanıldığı ve sağlama profili yapılandırması üzerinde hiçbir denetim sağlamaz (push bildirimlerini kullanırız).

Varsayılan olarak, iPhone distributionimzalama kimliği kullanılır ve XC Ad Hocaşağıdaki resimde görülebilen bir tür ön hazırlık profili oluşturulur: Ön IPA'yı dışa aktarma hazırlık profilinin yanındaki oku tıklarsanız, ön hazırlık profilli klasörü açar.

Benim sorum şu:

Xcode 6'da Geçici dağıtım ile kullanılan sağlama profilini seçmenin bir yolu var mı?

Teşekkürler!


Bunun düzeltilip düzeltilmediğini bilen var mı? Push bildirimlerini test etmek için bir yapıyı iOS 7 kullanıcılarına dağıtmak için yine de var mı?
haupman

Xcode 6 GM sürümünü kullanan, aynı sorun ...
Chris Chen

Yani bunun için hala iyi bir çözümümüz yok mu? Aşağıdaki cevaplar benim için işe yaramıyor. XC ön hazırlık profilini kullanabilir miyiz? Elma incelemesi için bekleyen bir hafta kaybetmek istemiyorum. Teşekkürler
Miles M.

2
Bugün bu sorunu yaşadım ve Xcode sadece çevrimiçi kaydettiğiniz tüm cihazları kullanan dağıtım profillerini kullanıyor gibi görünüyor.
HackingOtter

1
Ciddi anlamda? Temel hazırlık dosyasını seçemiyoruz? Yossarian'ın yaşadığına inanıyorum.
ajbraus

Yanıtlar:


52

Aynı sorunla karşı karşıya kaldım, Xcode 6 ile önceden yüklenmiş (Xcode 5'i yeniden yüklemeye gerek yoktu) komut satırı "xcodebuild" aracı komut dosyası kullanılarak çözüldü.

http://www.thecave.com/2014/09/16/using-xcodebuild-to-export-a-ipa-from-an-archive/

Terminaldeki komut dosyası:

xcodebuild -exportArchive -archivePath $projectname.xcarchive -exportPath $projectname -exportFormat ipa -exportProvisioningProfile 'Provisioning Profile Name'

1
bu benim için çalışıyor! kullanarak diğer cevaplar anahtarı xcodebuildyoktu -exportProvisioningProfile.
bunnyhero

6
Uygulamanız herhangi bir uzantı, katıştırılmış çerçeve veya kitaplık kullanıyorsa bunun düzgün çalışmadığını unutmayın.
clarkcox3

4
Bu bana yardımcı oldu. Teşekkürler! Böylece Apple, crappy XC Prov Profilleri oluşturmak için XCode'u günceller, ancak XCodeBuild'i unutur. Bu sefer şanslıyız. Ah! Apple bizi nasıl acı çekiyor!
kamyFC

1
Bunu kabul edilen cevap olarak ayarlıyorum. Yanıt tüm durumlar için çalışmayabilir, ancak bazı modifikasyonlarla xcodebuild bu sorunu çözmek için kullanılabilir (CI sunucumuzda yaptığımız şey budur).
Legoless

1
Keşke 3 saat önce xcodebuild'in ipa formatına da aktarabileceğini öğrenmiş olsaydım! Belirli bir provizyon profilini gömmek için xcrun almaya çalışırken çok fazla zaman harcadım, ancak sadece Xcode 6'da çalışmaz. Xcodebuild yapar! Teşekkür ederim.
Oscar Hierro

31

App Store'a gönderirken de benzer bir sorun yaşadım. Bir arşiv oluşturdum, ardından "gönder" i tıkladım ve Xcode, zaten açık olan profil yerine varsayılan "XC com. *" Joker karakter ön hazırlık profiliyle otomatik olarak imzalamak istedi.

Bunu düzeltmek için, profili Apple Geliştirici Portalı'nda yeniden oluşturdum:

1) developer.apple.com adresine gidin ve kullanmak istediğiniz dağıtım ön hazırlık profilini bulun.
2) Seçin, "Düzenle" yi tıklayın, profili yeniden adlandırın ve "Oluştur" u tıklayın.
3) Hazırlık profilini Masaüstüne indirin ve Xcode 6 simgesine sürükleyin.
4) Xcode 6'yı yeniden başlatın.
5) Ajanda penceresini açın ve oluşturduğunuz arşivde "Gönder" i tıklayın. Xcode genel profil yerine açık profilinizi otomatik olarak seçer.


Merhaba, bu değişiklik hakkında bazı resmi açıklamalar var mı?
frank

Bildiğim kadarıyla hayır.
Biçimdeki

2
Şüpheliydim ama bu benim için çalıştı. Sadece Xcode 6'ya
geçtim

Şimdiye kadar Geliştirme ön hazırlık profilini kullandım. Bu hala kullanılabilir mi veya dağıtım profili oluşturmam gerekiyor mu?
Legoless

Evet Legoless, bir yapıyı dışa aktarmak için bir Dağıtım profili oluşturmanız gerekir. Cihazınız Mac'inize bağlandığında hata ayıklamak için bir Geliştirme profili kullanmaya devam edebilirsiniz.
codeburn

27

Organizer'a girdikten sonra

  • Geçici yapıyı seçin ve "Dışa aktar ..." ı tıklayın.
  • "Özel Dağıtım için Kaydet" i seçin -> Sonraki
  • Açılır menüden bir kuruluş seçmek yerine "Yerel imza varlığını kullan" -> Seç
  • .İpa dosyasını daha önce olduğu gibi dışa aktarın ve kaydedin.

Tabii ki geçici ön hazırlık profilini oluşturmuş, indirmiş ve kurmuş olmanız gerekir.


5
Bu cevap ve bu cevap sayesinde problem çözüldü . Hazırlık profilinin, uygulamanızla aynı paket tanımlayıcısını kullanan bir Açık Uygulama Kimliğine bağlı olması gerekir. Bir joker Uygulama Kimliği çalışmaz. Daha sonra uygulamayı dışa aktarırken "Yerel imzalama varlığını kullan" ı seçmeniz gerekir.
Sarah Elan

@SarahElan iki cevabı birleştirin ve yeni bir cevap yazın ... teşekkürler
YaBoiSandeep

Bence ve deneyimlerime göre, bunun en iyi cevap olduğunu düşünüyorum. Teşekkürler.
Basem Saadawy

17

Son oluşturulan sağlama profili şu anda kazanıyor gibi görünüyor. Böylece istediğiniz profili yeniden oluşturabilir ve indirebilirsiniz ve Xcode onu kullanacaktır.

Biraz daha iyi bir yaklaşım: hedefinizde istediğiniz prov profilini ayarlayın ve ipa'nızı oluşturmak için komut satırını kullanın, bu da işe yarar.

İşte senaryo, kullanıyorum:

#!/bin/sh

# Current as working as of 2014/09/22
# Xcode 6

OUTPUTDIR="$HOME/build"
APPNAME="your-app"
SCHEME="your-app"
APP_WORKSPACE="$HOME/Path/To/your-app.xcworkspace"

rm "$OUTPUTDIR/$APPNAME.ipa" #deletes previous ipa
xcodebuild -workspace "$APP_WORKSPACE" -scheme "$SCHEME" archive -archivePath "$OUTPUTDIR/$APPNAME.xcarchive"
xcodebuild -exportArchive -exportFormat ipa -archivePath "$OUTPUTDIR/$APPNAME.xcarchive" -exportPath "$OUTPUTDIR/$APPNAME.ipa" 

ve ayarlarım:

Xcode ayarları


Daha kolay bir yolu var mı?
Timur Bernikovich

Bence bunun nedeni MacOS 10.0. hâlâ beta sürümündedir.
Timur Bernikovich

1
XC Ad Hoc profillerini kullanmayla ilgili sorun, her zaman tüm cihazları içermesidir - manuel profillerle yapabileceğiniz bazı cihazları devre dışı bırakma seçeneğini ortadan kaldırır.
Jonny

XC Ad Hoc profili yalnızca bir örnektir. İstediğiniz profili kullanabilirsiniz.
Thorsten

'.İpa' uzantısını xexbuild tarafından zaten otomatik olarak eklendiğinden, -exportPath değişkeninden kaldırmalısınız.
Oscar Hierro

8

Bunu da anlayamadım - AppStore'a gönderirken, bir joker profiline varsayılan olarak biraz aldım.

Xcode 6'da bina bitirdim, sonra Xcode 5'in gönderilmesi için Organizatör penceresine geri döndüm. Bu şekilde, oturum açmak için bir profil seçmeniz istenir.


Yaptığım geçici çözüm bu. Ama şimdi Xcode 5'ten gerçekten kurtulmak istiyorum. Şimdi xcrun ve komut satırı kullanmayı düşünüyorum.
Legoless

Bulduğum tüm önerilen çözümleri denedim, ancak aslında işe yarayan tek çözüm bu.
HunTer DRF

8

Ad hoc için dışa aktarma yaparken Xcode 6'da (şimdi en az 6.1 kullanıyorum), xcode 6, geliştirici hesabına kayıtlı tüm aygıtları içeren ve aynı zamanda paket kimliğiyle eşlenen herhangi bir ön hazırlık profili varsa otomatik olarak tarar . Hayır ise, XC ön hazırlık profilini kullanacaktır. Bu nedenle, örneğin push bildirimi amacıyla kendi profilinizi kullanmak istiyorsanız, profilinizdeki tüm cihazları elma geliştirici portalında seçmeniz gerekecektir. Sanırım bazı insanlar profil yeniden yaratırken bazıları işe yaramaz.

btw, script'i testflight'a aktarabilir ve yükleyebilir, ancak cihaz indiremez. muhtemelen yanlış yaptığım bir yerde. kimse neden olduğunu biliyorsa, pls bana bildirin. tks


Teşekkürler! Bu benim için hile yaptı. Profili tüm cihazları içerecek şekilde düzenledim, uygulamayı yeniden arşivledim ve viola, doğru profili kullandı.
Erik Villegas

Bu tam olarak bu ve bana bir hata gibi geliyor ya da şimdi Apple'ın Beta sürümlerini dağıtmak için TestFlight'ı tanıttığı için AdHoc dağıtımı uygun ilgi görmedi. Bana ne oldu @AlexHsieh açıkladı; Ön hazırlık profilimi her zaman yaptığım gibi oluşturdum, tüm kayıtlı aygıtlarımın yalnızca bir alt kümesini seçtim ve IPA'yı oluşturmaya çalıştığımda, Xcode geçerli bir ön hazırlık profili bulamadı ve bu otomatik oluşturulan XC'yi ( benim durumumda da başarısız oldu). Düzeltme, kayıtlı tüm aygıtlarımı ön hazırlık profiline eklemekti.
jjramos

7

Bu benim için çalıştı:

  1. "..bir Geliştirme Ekibi seçin .." iletişim kutusundaki "Hesapları Görüntüle .." seçeneğini tıklayın.
  2. "Ayrıntıları Görüntüle .." yi tıklayın ve XC Ad Hoc sağlama profilini bulun.
  3. bu profile sağ tıklayın ve "Finder'da Göster" i seçin.
  4. seçili profili sil.
  5. 1. adımdaki iletişim kutusuna dönün.
  6. "Seç" i tıklayın.
  7. temel hazırlık profilleri dizinini açmak için temel hazırlık profilinin yakınındaki oku tıklayın.
  8. 4. adımdaki gibi genel profili tekrar silin.
  9. "[uygulama adı] 'nı Apple'a gönder:" iletişim kutusundaki "Önceki" düğmesini tıklayın.
  10. tekrar "Özel Dağıtım için Kaydet" i seçin
  11. "seç" düğmesini tekrar tıklayın.

şimdi doğru ön hazırlık profil adını görmelisiniz.


İlkini denemedim. Ama bu benim için çalıştı. Teşekkürler. =]
Glauco Neves

5
Benim için çalışmadı. Adım 4 ve 8'deki profilleri sildikten sonra bile, profiller yeniden oluşturulur ve adım 11'de otomatik olarak yeniden seçilir.
Chun

1
Benim için işe yaramıyor çünkü her hesap tıklatmam gerektiğinde (uygulamaları müşterilerime teslim etmek için birden fazla hesabım var) XC Oluşturulan profili yeniden oluşturuluyor. Apple'dan PITA.
wuf810

XCode 6 ile bu adımları izlemeden önce, Apple geliştirici hesabınızdan XC: * sağlama profillerini silmeniz gerektiğini ekliyorum. 4. adımdan sonra Ayrıntıları Görüntüle iletişim kutusuna dönüp bu XC: * profillerinin artık orada olmadığından emin olmak için yenile düğmesine basardım. Ayrıca, doğru profili seçtiğinizden emin olmak için Thorsten'in oluşturma ayarlarını kullanın. Benim için iki kez çalıştı.
Android Noob

@Chun ve (@) wuf810 ile aynı sorunu yaşadım. Bu lanet olası mobil hareketler yeniden yaratılıyor. Yaptığım şey "Hazırlık Profilleri" dizin penceresini açık tutmaktı. Sonunda Xcode doğru ön hazırlık profilimi seçti. Şimdi bir sonraki probleme
geçiyorum

6

Benim için çalışan bir geçici çözüm var.

Hem Xcode 6 hem de Xcode 5.1.1 yüklü, Xcode 6 Uygulamalar ve Xcode 5.1.1 başka bir dizinde. Bir derleme yapmak istediğimde Arşivi oluşturmak için Xcode 6 kullanıyorum. Ancak, Xcode 5.1.1'de oluşturulan Arşivi de görebilirsiniz, bu nedenle kullanmak istediğiniz sağlama profilini kullanarak Ad Hoc .ipa'yı dağıtmak için Xcode 5.1.1 kullanıyorum. Bu yüzden Xcode 6 kullanarak oluşturun ancak Xcode 5.1.1 kullanarak dağıtın.


testflight bu şekilde yapı yüklemek mümkün değil.
hardik hadwani

Oluşturmak ve dağıtmak için aynı ön hazırlık profilini kullanıyorsanız, uçuşunuzu bu şekilde test etmek için derlemenizi yükleyebilmeniz gerekir. Bina için kullandığınız sağlama profilinin dağıtım için kullandığınız profil ile aynı olduğunu iki kez kontrol edin.
Adam Freeman

4

Dışa aktarma sırasında yerel imza varlıklarını kullanmak sorunu benim için çözdü:resim açıklamasını buraya girin


3

@ MRPatol'un yanıtı benim için işe yaramadı. Xcode 6.3.2 için çalışma senaryom

Üye Merkezinde -> iOS Temel Hazırlık Profilleri

  • Uygulamayı oluşturmaya çalışırken varsayılan olarak ayarlanan ön hazırlık profilini silin (örn. "XC ..."). Kısa adla geçici bir ön hazırlık profili (üretim değil) oluşturun.

İPhone Yapılandırma Yardımcı Programı'nda -> Temel Hazırlık Profilleri

  • Aynı ön hazırlık profilini silin (örn. "XC ...")

Xcode'da -> Organizatör

  • Geçici yapıyı seçin ve "Dışa aktar ..." ı tıklayın. "Özel Dağıtım için Kaydet" i seçin -> İleri
  • Açılır menüden bir kuruluş seçin
  • Yeni geçici ön hazırlık profilinizin otomatik olarak seçildiğinden emin olun
  • .İpa dosyasını daha önce olduğu gibi dışa aktarın ve kaydedin.

2

İşte benim için problemi çözen iki önemli nokta.

  • Temel hazırlık profilini oluşturduğunuzda, profilin uygulamanızla aynı paket tanımlayıcısını kullanan bir Açık Uygulama Kimliğine bağlı olması gerekir. Bir joker Uygulama Kimliği çalışmaz.
  • Uygulamayı geçici dağıtım için dışa aktardığınızda, açılır menüden Yerel imza varlığını kullan'ı seçin ve Seç'i tıklayın.

Xcode daha sonra Uygulama Kimliğini uygulamanın paket tanımlayıcısıyla eşleştirerek doğru ön hazırlık profilini bulur.


1

Aslında, Geçici Dağıtım için özel yeni bir Dağıtım profili oluşturmanız gerekir. Bu, klasik üye merkezinde bulunabilir, ancak yeni bir sertifika türüdür.

Daha sonra, uygulamayı bir geliştirici profiliyle yapacağınız gibi test etmek için hangi cihazların kullanılabileceğini seçebilirsiniz.

Ve yeni oluşturulan sertifika, paketinizi her zamanki gibi Düzenleyici'den dışa aktardığınızda kullanılabilir.

Alternatif olarak, Apple'ın iOS 8 ile sağladığı TestFlight çözümünü kullanarak kullanıcılarınızın yayın öncesi erişime sahip olmasını sağlayabilirsiniz.

resim açıklamasını buraya girin


Evet, ancak belirttiğiniz gibi bu yalnızca iOS8 anlamına gelir. Apple, Testflight kullanıcılarını yalnızca iOS8'e zorlamak için özellikle aptalca olmuştur. Bir süre için en büyük kurulu taban hala iOS7 olacak, bu yüzden elma buna izin vermeliydi.
wuf810

1

Aynı sorunu yaşadım, sonunda iOS Dev hesabımda kaydettiğim tüm cihazlar da dahil olmak üzere Xcode 6'da kullanmak istediğim profili yeniden oluşturmayı çözdüm, bu şekilde yapıyorum, dışa aktarmayı seçerken doğru profili gösteriyor ve ben komut dosyası kullanmadan Xcode 6 ile Ad Hoc dışa aktarma yapabilirsiniz. Umarım yardımcı olur.


1
Bu işe yarar, ancak yalnızca iOS geliştirici hesabınıza kayıtlı tüm cihazları içeren ön hazırlık profilinde sorun yoksa . Ön hazırlık profilindeki cihazların yalnızca bir alt kümesini kullanmak için bu tekniği kullanmak zorunda kaldım: stackoverflow.com/a/26296138/71262
Oran Dennison

0

Bir süredir bununla sıkıştım, ama Crashlytics kullanarak çözdüm , Xcode projenizin oluşturma ayarlarında seçilen profili kullanarak dağıtılmış oluşturun.

umarım birine yardım eder.


0

Neredeyse aynı sorun. Dağıtım için bir arşiv oluşturduktan sonra (Ürün> Arşiv) arşivi dışa aktarırsınız (Dışa Aktar ... 'ı tıklarsınız "" Kurumsal Dağıtım İçin Kaydet "i seçersiniz; sonra "İleri". Ardından "Geliştirme Ekibi" varsayılanını (ör. Kuruluş adı) seçer ve "Seç" i tıklatırsınız. Son olarak, Xcode'un sizin için otomatik olarak bulduğu (belki anında oluşturulmuş) ön hazırlık profilini de listeleyen bir özet görünüm sunulacak. Bu, yanlış provizyon profili olabilir (genellikle "XC: *" gibi bir joker karakter provizyon profili) ve MIGHT olabilir çünkü geliştirici portalında zaten bir joker provizyon profili vardır.

Bunun için bir destek bileti kullandım ve sadece bu bağlantıyı geri aldım https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/ConfiguringPushNotifications/ConfiguringPushNotifications.html#//apple_ref/doc/uid/TP40012582 -CH32-SW1 . Gerçekten büyük bir yardım değil.

MrPatol'un çözümünün Kurumsal Dağıtım için de işe yaradığını ve sorunu bizim için çözdüğünü buldum . İlk olarak geliştirici portalına giriş yaptım ve manuel olarak uygulamama uygun bir ön hazırlık profili oluşturdum. Daha sonra, manuel olarak oluşturulan yeni ön hazırlık profilini indirip yükledi.


0

Xcode 7'de, adhoc sağlama yöntemini seçemedim

Ajanda -> App Store ve Ajandaya Yükle -> Doğrula

Ancak Organizatör aracılığıyla seçebilirim -> Dışa aktar

Düzenlendi:

TestFlight için uygulama mağazasına geçici olarak dışa aktardıktan sonra uygulamayı yüklemek, burada tartışılan başka bir soruna neden oldu . Yani, her iki sorunun da çözümü birdir. Düzenleyici aracılığıyla seçebilmek için AppStore temel hazırlığı oluşturun ve uygulama mağazasına yükleyerek testFlight'ı kullanın.


0
  1. Xcode 7'den sonra bir -exportOptionsPlist seçeneği belirtmek için doğru bir yol olduğunu düşünüyorum. Proje ayarında belirttiğiniz ne olursa olsun GUI ihracat gibi doğru provizyon dosyaları seçecektir.

xcodebuild -exportArchive -archivePath $ Arşiv_Yolu -exportYol $ LOCAL_PACKAGE_DIR -exportOptionsPlist $ Export_Plist_Path

optionPlist dosyası böyle,

<dict>
  <key>teamID</key>
        <string>MYTEAMID123</string>
        <key> teamID </key>
        <string>app-store</string>
        <key>uploadSymbols</key>
        <true/>
</dict>


<plist>

app-store, kurumsal, ad-hoc, geliştirme alternatiftir

  1. Ancak yukarıdakilerden sonra başka bir hatayla karşılaşabilirsiniz.

Error Domain = IDEDistributionErrorDomain Code = 14 "Uygulanabilir cihaz bulunamadı." UserInfo = {NSLocalizedDescription = Uygulanabilir cihaz bulunamadı.}

Bu yakut bir problem. Bu kabuk komut dosyasını deneyin,xcbuild-safe.sh

xcbuild-safe.sh xxxxNormalOptionsInXcodebuild bla...
  1. Bir dakika bekleyin, garip bir hata daha gelir.

xcbuild-safe.sh: line 62: shell_session_update: komut bulunamadı

Cehennem shell_session_updatenedir? Etrafında çalışalım. Gerçek xcodebuild cmd'sinden önce, yani 60 veya 61 satırında bir işlev tanımlamanız yeterlidir.

function shell_session_update() { :; }

-4

Özel sorunuza yanıt olarak, kullanılacak ön hazırlık profilini seçmenin bir yolu yoktur. Ne yapmaya çalışıyorsun? (yani, seçmek istediğiniz profil otomatik olarak oluşturulan profilin izin vermemesine neden olur?)


1
Örneğin, söz konusu uygulama için UDID'lerin belirli bir listesine sahip olmak. Birden fazla müşteri için uygulamalar geliştiriyorum ve bunların karıştırılmasını sağlayamıyorum. Bu konuda yollar var, elbette, ama hepsi kullanmak istediğim provizyon profilini seçmekten çok daha karmaşık
Lope

Kesinlikle kullanılacak sağlama profilini seçmenin bir yolu vardır. stackoverflow.com/a/26296138/71262
Oran Dennison

1
@Lope Bir istemcide uygulamalarınızdan biri ve ilişkili profil yüklüyse, uygulamalarınızdan herhangi birini yükleyebilir (diğer uygulamaların profilleri cihazlarını içermiyor olsa bile). Bu karışıklık, geliştiricileri profillerini ve cihaz listelerini manuel olarak belirtmekten uzaklaştırmak istememizin başlıca nedenlerinden biridir. (örneğin, birçok kişi profilleri manuel olarak belirtmek istemelerinin birincil nedeni olarak sahte bir güvenlik duygusuna güveniyor gibi görünüyor)
clarkcox3

@ clarkcox3 şey daha da kötü, istemcinin birbirlerini uygulamaları görmesini engellemek istiyorum
Lope

@Lope: Tüm uygulamalarınızı test kullanıcılarınız için kullanılabilir hale getirecek geçici ipa dosyalarını dağıtmanın bir yolunun farkında değilim. Başka bir deyişle, test etmelerini istediğiniz uygulamayı açıkça test kullanıcılarınıza sağlamanız gerekir, değil mi? Bu fiziksel ayrım onların başka uygulamaları kullanmasını engelleyecektir. (Mağazaya gidip hepsini alabilirler gibi değil mi?) Testçilerinizin izniniz olmadan tüm uygulamalarınıza erişebilmelerinin başka bir yolu var mı ???
leanne
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.