Projeyi Xcode'da arşivlemek yanlış bir çoklu uygulama paketi oluşturur


170

Projemi Xcode'da arşivlemek, ana hedefimi yayınlanmak üzere paketlemek yerine, çok istediğim bir çoklu uygulama paketi oluşturuyor. Özellikle, arşivimi Organizatör'de doğruladığımda bana şu mesajı veriyor:

"[projectname] tek paketli uygulama içermiyor veya birden fazla ürün içeriyor. Lütfen başka bir arşiv seçin veya tek paketli uygulama oluşturmak için düzeninizi ayarlayın."

Şemada ayarlanması gereken bir ayar var gibi görünüyor, ancak diğer hedeflerin dahil edilmesine neyin neden olduğunu anlayamıyorum.

Bu arada Xcode 4.0 kullanıyorum.


Yanıtlar:


251

Tamam, kendi sorumu cevaplıyorum. Bu, XCode 4'teki bağımlı projelerle ilgili bir sorun olduğu ortaya çıkıyorsa, bu sizin başınıza gelirse, tüm bağımlı projeleriniz için Derleme Ayarları'na gidin (örneğin statik kütüphaneler) ve "Dağıtım" altındaki "Yüklemeyi Atla" seçeneğinin ayarlandığından emin olun EVET.

Burada daha fazla ayrıntı: http://flakasoft.com/developer-tips/xcode-4-bug-solution-for-archiving-build-with-static-library/


1
Sen, efendim, benim kahramanımsın! Bunu kolayca
bulamazdım

6
"EVET" olarak değiştirildi ... hala başarısız. :(
Joe D'Andrea

8
Skip Install öğesinin Project veya Target değil, yalnızca statik kitaplıkta Yes olarak ayarlanması gerekir. Geçici dağıtım hakkındaki bu blog gönderisi, uygulama mağazası sürümleri için de geçerlidir ve Atla Yükleme ile ilgili bir bölümü vardır: musicalgeometry.com/?p=1237
jj0b

8
Bazı kütüphaneler (CorePlot gibi) derleme aşamalarının Kopya Başlıkları bölümünü de değiştirmenizi gerektirir. Bu yüzden Ryan'ın cevabına da baktığınızdan emin olun.
Tim Swast

2
Ayrıca "Staj Kitaplığı" Hedef tüm başlık dosyaları (statik kütüphanesi) taşımak zorunda, "Kopya Başlıkları" Ben "Ortak" dan "Proje" taşındı.
Hlung

151

Bu sorunu çözmek için alt projelerde iki şeyin düzeltilmesi gerekiyordu:

  1. Jared'un keşfettiği gibi, Build Settings altında, "Install Skip" i "Yes" olarak ayarlayın
  2. Derleme Aşamaları altında, Başlıkları Kopyala bölümünü inceleyin. Özel veya Genel olarak listelenen başlık dosyaları varsa, bunları Proje bölümüne sürükleyin.

7
Seni gerçekten seviyorum dostum! : D
arielcamus

5
Tüm "Skip Install" ayarlarını düzelttim ama eksik olduğum şey Kopya Başlığı bölümü oldu, Teşekkürler!
Thomas Einwaller

2
Üç20 kullanıyorum. Bu projenin özel veya Ortak olarak listelenen başlık dosyaları vardır, ancak bunları proje bölümünde taşırsam derlemez. Herhangi bir öneri?
Breezeight

19
Bu Xcode sorununu aşsanız bile Three20'yi kullanmayı bırakın. Tamamen ciddiyim!
Adam Eberbach

2
Bizim gibi çok sayıda kütüphane projeniz varsa ve hangi kütüphanenin Atla Kurulumu'nun Hayır olarak ayarlandığını veya soruna hangi başlık dosyalarının neden olduğunu bulmakta zorlanırsanız, şunu deneyin: Arşivi seçin ve Dağıt düğmesini tıklayın. 'Yapılı Ürünleri Kaydet' seçeneğini belirtin. İleri'ye ve Kaydet'e basın. Oluşturulan dizine Finder'da göz atın. 'Kütüphaneler' alt dizini Kurulumu Atla seçeneğini Evet olarak ayarlamanız gereken kütüphaneleri tanımlar. Usr / local / include, Kamudan Projeye taşımanız gereken suçlu başlık dosyalarını tanımlar.
Sunil Gowda

10

Benim için işe yaraması için aşağıdakileri yaptım:

  1. three20 statik kütüphane için, ana proje içindeki dosyaları dahil etmek için cocoapods kullandım .. sadece three20'nin bana verdiği tüm sorunlardan kurtuldum (ve çok ..) btw ben üç20'yi Nimbus ile değiştirmeyi denedim .. ama Nimbus Projemin üç20 için kullandığı bazı özelliklerden yoksundu .. bu yüzden Nimbus yardımcı olmadı.
  2. diğer tüm alt projeler / statik kütüphaneler için derleme ayarları altında yüklemeyi atla seçeneğine ayarlayın ve kopya aşamalarını derleme aşamaları altında genelden projeye geçirin
  3. en önemlisi: alt kütüphaneler altında .. inşa aşamaları altında ben dosyaları kopya hedef hedef değiştirildi Absolute pathsağladı products directory.

ve hepsi bu kadar!

ipucu: arşivinizin bir ipa yerine bir arşiv dosyası oluşturmasına neden olan rahatsız edici dosyalar hakkında bir fikir edinmek için:

  1. Arşivi seçin ve Dağıt düğmesini tıklayın.
  2. 'Yapılı Ürünleri Kaydet' seçeneğini belirtin.
  3. İleri'ye ve Kaydet'e basın.
  4. Oluşturulan dizine Finder'da göz atın.
  5. 'Kütüphaneler' alt dizini Kurulumu Atla seçeneğini Evet olarak ayarlamanız gereken kütüphaneleri tanımlar.
  6. bazı durumlarda usr/local/includeGenel'den Projeye taşımanız gereken suçlu başlık dosyalarını veya mutlak yoldan ürünler dizinine değiştirmeniz gereken dosyaları tanımlar. ancak bu dizin (yani usr / local / include) alt kitaplık dizin yapınıza bağlı olarak değişir

Size 10 yıldız verirdim, yardımcı olanı bulana kadar okuduğum çözümlerin sayısı. Ben sadece 6. adımda bulduğum dosyaları tıkladım ve onları hedef üyelik alanında kamudan projeye işaretledim, hiçbir şeye gerek yok.
Cristi Băluță

yardımcı olduğuma sevindim! yazdım nedeni b / ci ne yaptığını geçti .. ben ne olduğunu anlamaya başlamadan önce belki 20 cevap gibi okudum .. :)
abbood

Birisi 6. adımı açıklayabilir mi? "Usr / local / include suçlu başlık dosyalarını tanımlayacak" ve bu dosyaları nerede / nasıl kontrol etmeliyim
Andrei F

@ CristiBăluță Dosyaları tam olarak nasıl buldunuz ve ayarlarda / menülerde nerede? XCode 11.2.1 ile aynı sorunu yaşıyorum ve xcode ile fazla deneyimim yok. Teşekkür ederim.
Andrei F

Ne buldum / usr / local / include arşiv içindeki bir klasör (kütüphaneler klasörü ile birlikte), ama benim genel arşiv bunlardan herhangi biri yok
Andrei F


0

ben de aynı sorunu yaşadım "[proje adı] tek paketli uygulama içermiyor ya da birden fazla ürün içeriyor. Lütfen başka bir arşiv seçin ya da tek paketli bir uygulama oluşturmak için düzeninizi ayarlayın." xcode5'e yükselttikten sonra.

sorun 'sürüm' için benim yapı ayarları bir grup alan boştu. Sanırım xcode4 otomatik olarak hata ayıklama ayarına geçti.

anwyays - düzeltmem boş olan tüm 'yayın' ayarlarını bulmak ve hata ayıklama ayarına ayarlamak oldu. Özellikle Info.plist dosya ayarıdır.

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.