Xcode 8 her seferinde tam kodu yeniden derliyor


131

Koddaki herhangi bir değişiklikle (dosya .pch biçiminde olmasa da), proje her seferinde yeniden derlenir.


31
Bu neden reddedildi ?! Bu yasal bir konudur. Her seferinde derlemek 4 dakika sürüyor, tüm ekip üretkenliğini artırıyor.
Josh

1
Ben de bu sorunu anlıyorum.
AJ9

3
Xib / storyboard'ları IBDesignable şeyler ile mi değiştiriyorsunuz?
Larme

1
İlgili apple forum başlığı: forums.developer.apple.com/thread/62737 . Hala çözüm yok.
ldiqual

1
Apple forumunda önerildiği gibi bir hata raporu açtığınızdan emin olun.
Leo Natan

Yanıtlar:


34

2017/1/2 güncellemesi

Bu sorun Xcode 8.2.1'de çözülmedi (projem için)

Hayatta nasıl kalınır?

Code IDE: Xcode/Atom
Build: xcrun
Debug: Xcode (Control + Command + R)

2016/12/17 Güncellemesi

Bu sorun Xcode 8.2'de çözülmedi.

2016/12/12 Güncellemesi

Kod için atom ve derlemek ve hata ayıklamak için komut satırı artık benim seçimim. Umarım Apple bu yasal hatayı yakında düzeltir.

Güncelleme 2016/12/04

Bu sorun Xcode 8.2 (beta 2) ile çözülmüş görünüyor .

Ama benim için çözülmedi, Xcode 8.2'yi kullandığımda bile bu sorunla karşılaşıyorum. Deneyebilirsiniz (Xcode8.2 beta2'yi buradan indirin )

Sistem Oluşturma • Xcode, yalnızca küçük değişiklikler meydana geldiğinde tüm hedefi yeniden oluşturmayacaktır. (28892475)


Eski cevap: Bu, etrafındaki bir çalışmadır:

görüntü açıklamasını buraya girin "Yapı Ayarı" sekmesi -> "C Dili Lehçesi" -> "Derleyici Varsayılanı" olarak değiştirin.

Referans için :

"C Dili Lehçesi", "Derleyici Varsayılanı" yerine "GNU99" olarak ayarlandı. Önceden standart GNU99'du ama şimdi değil. Bir noktada Xcode, kitaplık proje ayarlarını doğru bir şekilde taşımadı ve bu nedenle GNU99'a ayarlandı. Onu GNU99 olarak değiştirdiğimde, her seferinde tüm kodumu yeniden derlemeyi bıraktı!


1
Çok uzak çok iyi!!! Bana bir saat verin ve devam ederse ödül senindir.
Adam Waite

7
Argh, her şeyi yeniden derlemeye geri döndü
Adam Waite

1
Ben de aynı davranışlarım var. Elde edilen verileri temizlersem (veya C dili lehçesini değiştirirsem), yaklaşık 10 yapı için çalışacaktır. Bundan sonra her şeyi yeniden inşa etmek için geri çekilir.
bluebambu

1
Xcode 8.2 (beta 2), 10 derleme için çalışır ve ardından her şeyi sıfırdan yeniden oluşturur, ancak yine de öncekinden daha iyidir.
Markus

3
Maalesef sorun Xcode 8.3 beta 2'de (en azından bizim için) devam ediyor. Projemizde dikkate değer bir gelişme ölçülemez.
Kasper Munck

20

Ürün -> Şema -> Şemayı Düzenle'ye gidin. Sol taraftaki sütunda Oluştur'u seçin ve " Örtülü bağımlılıkları bul " seçeneğinin işaretini kaldırın "

Ancak projeyi ilk kez oluştururken bu bayrak kontrol edilmiş olarak kalmalıdır ..


@Josh, projenizde birden fazla proje kullanıyor musunuz (ör. Alt proje veya dahil). Ve derleme çıktınıza bakarak her şeyi gerçekten yeniden inşa ettiğinden emin misiniz?
Mobile Ben

3
Kokoapodlar ve ana proje ile temel bir çalışma alanı. CocoaPods yerleşik olarak kalır, ancak ana proje her dosyayı yeniden oluşturur; derleme çıktısını izlemek ve kesinlikle 100'den fazla dosyanın tamamı yeniden oluşturuluyor.
Josh

1
Güncelleme: Görünüşe göre bu çözüm, bunu yaptıktan sonra birkaç yapı için çalışıyor, ancak tüm projeyi temizleyip yeniden inşa ediyor. Ancak 2-8. Kez yeniden inşa edildiğinde, her şeyi yeniden derlemeye başlar. Herhangi bir fikir? Sinir bozucu olmanın ötesinde.
Josh

Bu, en azından CocoaPods çalışma alanında çalışmaz. Her seferinde her şey inşa edilir. Özellikle Apple'ın bu sorunu çözmek için yılları olduğu için çok can sıkıcı.
Womble

7

Benim için düzeltme film şeridini kapatmaktı, kaynak dosyayı destekli düzenleyiciyle açtırdım ve film şeridi dosyası da açıldı (film şeridini kapatarak - üzerinde herhangi bir değişiklik yapmadığım için) tüm gereksiz derlemeyi kaldırdım


1
Çok kolay olabilir :)
manmal

5

GÜNCELLENMİŞ

Yapabildiğim en büyük iyileştirme projemi modüler hale getirmekti. Hemen hemen tüm diğer sınıflarda kullanılan ORM katmanını özel olarak modülerleştirmek. Bu kodu projem içinde ayrı bir hedefe taşıyarak ve onu bir modül olarak içe aktararak derleme sürelerini büyük ölçüde iyileştirebildim. Artık bir derleme yaptığımda Xcode gereksiz dosyaları yeniden derlemeye karar vermiyor.

Şimdi hızlı artımlı hata ayıklama derlemeleri için Tek Dosya derleme yöntemini kullanıyorum .

Bu bağlantıda kod yeniden düzenleme dahil olmak üzere başka iyi öneriler var, https://medium.com/rocket-fuel/optimizing-build-times-in-swift-4-dc493b1cc5f5

ESKİ

Hala Xcode 9 ile benim için sürekli bir sorun oldu. Birçoğunuz gibi ben de büyük bir swift 4 / cocoapod üzerinde çalışıyorum , birçok kaynak dosyası içeren projesi ve her dosyayı her seferinde yeniden derlemek çıldırtıcı.

Şimdiye kadar aşağıdaki ayarlarla en iyi sonuçları alıyorum. Bir denemenizi ve sizin için nasıl çalıştığını görmenizi öneririm.

  • Şema -> Oluştur -> "Örtülü Bağımlılıkları Bul" = DOĞRU
  • Derleme Ayarları -> Bağlantı Süresi Optimizasyonu = Artımlı
  • Derleme Ayarları -> Optimizasyon Düzeyi (Hata Ayıklama) = Yok [-OO]
  • Derleme Ayarları -> Optimizasyon Düzeyi (Yayın) = En Hızlı, En Küçük [-Os]
  • Oluşturma Ayarları -> Önceden Derlenmiş Üstbilgilerin Paylaşımını Artır = EVET
  • Oluşturma Ayarları -> Artımlı Distil'i Etkinleştir = EVET

Özel Kullanıcı Tanımlı derleme ayarları eklendi,

  • Derleme Ayarları -> HEADERMAP_USERS_VFS = YES

Not: Tüm modül optimizasyonu için özel kullanıcı tanımlı ayara sahip değilim.


3

Bu sorunu çözmüş görünen önek başlığıyla ilgili kodumla birkaç şeyi değiştirdim. Hangisinin gerçekten hile yaptığını bilmiyorum, ama hepsini orada başka birine yardım etmesi umuduyla paylaşacağım. Bir önek başlık setiniz yoksa, o zaman sorun bu değil sanırım (veya problem çok yönlüdür).

  1. Önek başlığından, yerleşik ürünler dizinindeki dosyalar olan tüm içe aktarmaları kaldırın, böylece bunun için oluşturma ayarını ("Önceden Derlenmiş Üstbilgi, Derleme Dizinindeki Dosyaları Kullanır") "Hayır" olarak değiştirebilirsiniz. Diğer ithalatlar yoluyla da dolaylı olarak ithal edilmediğinden emin olun.
  2. Önek başlığından Clang modüllerini kullanan tüm içe aktarmaları kaldırın (Başlıklar dizininde module.modulemap dosyası olan kitaplıklar veya çerçeveler, böylece kod gibi yazabilirsiniz @import MyModule). (Benim için bu ve 1. adım bir ve aynıydı.)
  3. Önek başlığı paylaşımı için yapı ayarını "Evet" olarak ayarlayın. (Bunun gerekli olduğunu düşünmüyorum ve kendi projemde bir etkisi olmamalı. Bunu sadece değiştirdiğim için söylüyorum çünkü her şeyi denemeye istekliydim. :))
  4. Xcode'dan çıkın ve DerivedData / ModuleCache dizininizi silin (doğru hatırlıyorsam ~ / Library / Developer'da olacak şekilde yapılandırılır).

Bu hala işe yaramazsa, önek başlığınızdan daha fazla içe aktarmayı kaldırmayı deneyebilirsiniz. Onu tetikleyen bir şey olabilir ...


3

Görünüşe göre https://forums.developer.apple.com/thread/62737 adresine göre üzerinde aktif olarak çalışıyorlar, ancak bir çözüm eklemek

HEADERMAP_USES_VFS = YES

hedefinizin derleme ayarları altında (Proje -> Hedef -> Yapı Ayarları -> Kullanıcı Tanımlı).

Bu çözüm, geçtiğimiz ay hiçbir çözümün tutarlı bir şekilde çalışmadığı günümüzde benim için her seferinde işe yaradı.

DÜZENLEME: Yine de bazen her şeyi yeniden derliyor, ancak bu ayar tanımlandığında bunu çok daha az sıklıkta yapıyor gibi görünüyor.


Bu değeri de ekledim, yapım süresi daha hızlı ama artımlı yapıyı çözmedi. Swift Derleyicisini - Kod Oluşturma / Hata Ayıklama'yı Hızlı, Tam Modül Optimizasyonu olarak değiştirdim ... şimdiye
Antonio Junior

Kullanıcı Tanımlı'yı bile bulamıyorum)
David Seek

2
@DavidSeek, Build Settings'in en altında
Laser Hawk


3

@IBDesignableBenim özel durumumdaki direktiflerle ilgili tüm kodunuzu kontrol edin Xcode derleme projem her zaman çünkü film şeridimde bu @IBDesignableözellikleri içeren bazı görüşlerim vardı . İkinci şey, film şeridimi ayrı bir pencerede (sekmede değil) açarak Xcode'umu sonsuza dek tüm simülatörler için derlemeler yapmamı sağlamaktır.


Oldukça fazla @IBDesignabledirektif kullanıyoruz ... özellikle aramamız gereken bir şey var mı?
Stan

Bunları tek tek dışarıda bırakarak bulmanın mümkün olduğunu düşünüyorum, benim durumum tüm projede @ IBDesignable direktiflerinin sadece 2'siydi.
ua24

2

Madhuri Mane bu konuda tamamen haklı. Biraz daha netlik eklemek için dikkat edilmesi gereken bazı önemli noktalar:

Bu YALNIZCA hedefinizin dayandığı kitaplıklara / çerçevelere örtük bağımlılıklarınız varsa geçerlidir.

"Örtülü Bağımlılıkları Bul" devre dışı bırakılırsa:

Sonuç: Uygulama hedefi oluşturulmadan önce kütüphane oluşturulmayacak. Uygulama hedefi oluşturulamıyor.

Düzeltme: İkinci senaryonun gerçekleşmediğinden emin olmak için, gerekli hedefleri hedefler listesine eklemeli ve bunları doğru şekilde sıralamalısınız.

Konuyla ilgili kaynak ve daha fazla okuma: https://pewpewthespells.com/blog/managing_xcode.html#scheme-action

Şimdi, tüm projeniz tek bir hedef içinde barındırılıyorsa ve derlenmesi 4 dakika sürüyorsa, yukarıdakilerden yararlanmak veya derlemenin nerede geciktiğini anlamak için çerçevelere ayırmak dışında bu konuda yapabileceğiniz pek bir şey yoktur. PaintCode gibi bir şey kullanıyorsanız veya UIKit kodunun büyük parçalarına hızlı bir şekilde sahipseniz, bunu Objective-c olarak değiştirin, çok daha hızlı derlenir


2

Senin hedefin inşa ayarları ve sette gidin Defines Moduleiçin Yes.

Birkaç derleme için benim için çalıştı, bunun kesin bir çözüm olduğunu iddia etmek için çok erken, ama en azından deniyoruz.


2

Apple dün Xcode'un yeni beta sürümünü yayınladı (14 Kasım)

Xcode 8.2 beta 2

Ve bu sorun sürüm notunda çözüldü olarak işaretlenmiştir.

Sistem Oluştur

• Xcode, yalnızca küçük değişiklikler meydana geldiğinde tüm hedefi yeniden oluşturmayacaktır. (28892475)

Benim için çalışıyor. Derleme hızı her zamanki gibi geri geldi. Bu sorunla karşı karşıya olan herkes denemeli!

https://developer.apple.com/download/


2

Lütfen projenin inşa ayarına gidin ve "C Dili Lehçesi" ni değiştirin.

Xcode sürümünü güncellediğinizde "C Dili Lehçesi" "Derleyici Varsayılanı" yerine "GNU99" olarak ayarlanır. Bir noktada Xcode, kitaplık proje ayarlarını doğru bir şekilde taşımadı ve bu nedenle GNU99'a ayarlandı. Bu sorunu çözecek


1

Swift dosyasında değişiklikler yaptıysanız uygulamayı oluşturmaya başlayın, son sekmeye gidin ve "Bağımlılıkları kontrol et" aşamasında derleme günlüğüne tıklayın, derlemeyi durdurun ve tekrar çalıştırın. İkinci çalıştırmada, yalnızca değiştirdiğiniz dosyaları oluşturmalıdır. Doğru yapılırsa her seferinde işe yaradığını buldum. Herhangi bir proje ayarı değişikliği yapmaya gerek yoktur.

Bu, Xcode'da bir hata gibi görünüyor.

görüntü açıklamasını buraya girin

Uygulamanın tam bir derleme yaptığını görürseniz, derlemeyi durdurun ve bu numarayı tekrar deneyin.

Kodda herhangi bir değişiklik yapmadıysanız, hata ayıklayıcı ekleyen uygulamayı oluşturmadan çalıştırmak için CMD + CTRL + R kullanın. Uygulama oluşturmaz, ancak gereksiz zaman kazanmanıza yardımcı olabilir.


Bu gerçekten işe yarıyor, ancak bazen XCode kod 1 ile başarısız olur ve Temiz Yapı yapmanız gerekir. Bu bir kabus
Antonio Junior

Xcode'un her zaman tam derleme yapacağı başka senaryolar da vardır. Köprüleme başlığında bulunan .h dosyasını değiştirirseniz, tüm Swift dosyalarını yeniden oluşturacağını buldum. Xcode hatasıyla ilgisi olmayan başka senaryolar da olabilir.
Vlad

Tek değişikliğin bir işlevin yeniden adlandırılması veya mevcut bir sınıfa / yapıya eklenen yeni bir özellik olduğu ve bu da tüm bir yeniden oluşturma ile sonuçlanan senaryolar vardır.
Antonio Genç

Bu soruya / cevaba bakın, bu konu şunun bir kopyası: Daha iyi çalışan bir çözüme sahip olun: stackoverflow.com/questions/39456223/…
Vlad

1

Benim tarafımdan gelen sorun, "Örtülü Bağımlılıkları Bul" çözümüne işareti kaldırarak giderildi.

AMA, cocoapod kullanıyorsanız, bu ayarları pod projenize de seçerek uygulamak için unutmayın.

Ürün -> Şema -> Bölmeler- "ProjenizinAdı"

şunlarda da geçerlidir:

Ürün -> Şema -> "ProjenizinAdı"

Bana yardımcı oluyor, umarım bu ipucu başka birine yardımcı olur.

Teşekkürler


1

Şunları deneyin: 1. Projeye gidin 2. Oluşturma Ayarları'nı tıklayın 3. Hata ayıklama için Optimizasyon Düzeyi'nin Yok olarak ayarlandığını kontrol edin. 4. Kullanıcı Tanımlı Ayar Ekle'yi tıklayın. 5. SWIFT_WHOLE_MODULE_OPTIMIZATION'ı YES olarak ayarlayın.

görüntü açıklamasını buraya girin


tek bir harf yazdığımda hala derlenecek hiçbir şey yok.
Chandni

-2

xcode derleme süresini kısaltmak için IRAMDISK (Sanal bellek diski) kullanabilir. Derleme süresini azaltmak için çok kullanışlı ve etkili araçlar.

Ayrıca sık kullanılan uygulamayı hızlandırmak için de kullanabilirsiniz.

indirmek ve kullanmak için aşağıdaki bağlantıya bakın: http://iramdisk.findmysoft.com/mac/


Zaten bir SSD diskiniz varsa, bu derlemeyi hızlandırmaz.
Jano
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.