Tetapi bagi saya ini tidak dapat diselesaikan, saya menghadapi masalah ini bahkan ketika saya menggunakan Xcode 8.2. Anda dapat mencobanya (unduh Xcode8.2 beta2 di sini )
Build System • Xcode tidak akan membangun kembali seluruh target ketika hanya perubahan kecil yang terjadi. (28892475)
Jawaban lama:
Ini adalah solusi:
"Bangun Pengaturan" tab -> "C Bahasa Dialek" -> Ubah ke "Compiler Default".
"C Language Dialect" disetel ke "GNU99" bukan "Compiler Default". Sebelumnya standar adalah GNU99 tetapi sekarang tidak. Pada titik tertentu Xcode tidak memigrasi pengaturan proyek perpustakaan dengan benar dan itu diatur ke GNU99. Setelah saya mengubahnya ke GNU99, ia berhenti mengkompilasi ulang semua kode saya setiap waktu!
Sejauh ini baik!!! Beri saya satu jam dan hadiah itu milik Anda jika terus naik.
Adam Waite
7
Argh kembali mengkompilasi segalanya
Adam Waite
1
Saya memiliki perilaku yang sama. Jika saya menghapus data yang diturunkan (atau mengubah dialek bahasa C) itu akan bekerja selama sekitar 10 build. Setelah itu jatuh kembali untuk membangun kembali semuanya.
bluebamboo
1
Xcode 8.2 (beta 2) berfungsi untuk 10 build kemudian membangun kembali semuanya dari awal, tetapi masih lebih baik dari yang sebelumnya.
Markus
3
Sayangnya masalah ini tetap ada di Xcode 8.3 beta 2 (setidaknya untuk kami). Tidak ada peningkatan nyata yang dapat diukur dalam proyek kami.
Kasper Munck
20
Pergi ke Produk -> Skema -> Edit Skema. Pilih Bangun di kolom sisi kiri dan hapus centang " Temukan dependensi tersirat "
Tetapi bendera ini harus tetap diperiksa ketika Anda membangun proyek untuk pertama kalinya ..
@Josh, apakah Anda menggunakan beberapa proyek dalam proyek Anda (mis. Sub proyek atau termasuk). Dan apakah Anda yakin dengan melihat output build Anda bahwa itu benar-benar membangun kembali segalanya?
Ponsel Ben
3
Ini adalah ruang kerja dasar dengan cocoapods dan proyek utama. CocoaPods tetap dibangun, tetapi proyek utama membangun kembali setiap file; menonton output build dan pasti 100+ file yang dibangun kembali.
Josh
1
Pembaruan: sepertinya solusi ini berfungsi untuk beberapa bangunan setelah melakukannya, namun demikian membersihkan seluruh proyek dan membangun kembali. Namun pada saat 2-8 kali membangun kembali, ia mulai mengkompilasi ulang semuanya lagi. Ada ide? Melebihi frustasi.
Josh
Ini tidak berfungsi, setidaknya tidak dengan ruang kerja CocoaPods. Semuanya membangun, setiap saat. Sangat menjengkelkan, terutama karena Apple sudah bertahun-tahun memperbaiki masalah ini.
Womble
7
Perbaikan untuk saya adalah hanya menutup storyboard, saya memiliki file sumber dibuka dengan editor yang dibantu dan file storyboard dibuka juga (menutup storyboard --- karena saya tidak membuat perubahan padanya) menghapus semua kompilasi yang tidak perlu
Satu-satunya peningkatan terbesar yang dapat saya lakukan adalah memodulasi proyek saya. Secara khusus memodulasi lapisan ORM yang digunakan di hampir setiap kelas lainnya. Dengan memindahkan kode itu ke target terpisah dalam proyek saya dan mengimpornya sebagai modul, saya dapat meningkatkan waktu kompilasi. Xcode tidak lagi memutuskan untuk mengkompilasi ulang file yang tidak perlu ketika saya membangun.
Sekarang saya menggunakan metode kompilasi File Tunggal untuk membangun debug inkremental cepat.
Masih menjadi masalah konstan bagi saya dengan Xcode 9. Seperti banyak dari Anda, saya sedang mengerjakan proyek swiftap 4 / cocoapods besar dengan banyak file sumber dan mengkompilasi ulang setiap file setiap kali menyebalkan.
Sejauh ini saya mendapatkan hasil terbaik dengan pengaturan berikut. Saya sarankan Anda mencobanya dan melihat cara kerjanya untuk Anda.
Saya mengubah beberapa hal dengan kode saya mengenai header awalan yang tampaknya telah memperbaiki masalah ini. Saya tidak tahu yang mana yang benar-benar berhasil, tetapi saya akan membagikan semuanya dengan harapan dapat membantu orang lain di luar sana. Jika Anda tidak memiliki set header awalan, maka saya kira ini bukan masalahnya (atau masalahnya multifaset).
Hapus impor apa pun dari header awalan yang merupakan file dari direktori produk bawaan sehingga Anda dapat mengubah pengaturan build untuk ini ("Header Terkompilasi Menggunakan File Dari Direktori Build") menjadi "Tidak". Pastikan tidak diimpor secara tidak langsung melalui impor lain juga.
Hapus impor dari header awalan yang menggunakan modul Dentang (perpustakaan atau kerangka kerja yang memiliki file module.modulemap di direktori Header mereka, sehingga Anda dapat menulis kode seperti @import MyModule). (Bagi saya, ini dan langkah 1 adalah satu dan sama.)
Setel pengaturan bangun untuk berbagi header awalan ke "Ya". (Saya pikir ini tidak perlu, dan seharusnya tidak berpengaruh pada proyek saya sendiri. Saya hanya menyatakan ini karena saya mengubahnya karena saya mau mencoba apa saja. :))
Keluarlah dari Xcode dan hapus direktori DerivedData / ModuleCache Anda (dikonfigurasi untuk berada di ~ / Library / Developer jika saya ingat dengan benar).
Jika itu masih tidak berhasil, Anda dapat mencoba menghapus beberapa impor lagi dari header awalan Anda. Mungkin ada sesuatu yang tersandung ...
Saya juga menambahkan nilai ini, waktu pembuatan lebih cepat tetapi tidak menyelesaikan pembangunan tambahan. Saya telah mengubah Swift Compiler - Pembuatan Kode / Debug menjadi Cepat, Optimalisasi Modul Utuh ... adalah hasil terbaik hingga sekarang
Periksa semua kode Anda tentang @IBDesignablearahan dalam kasus khusus saya, proyek pembangunan Xcode sepanjang waktu karena saya memiliki beberapa pandangan di storyboard saya yang berisi @IBDesignableatribut ini di dalamnya. Hal kedua adalah saya juga membuka storyboard di jendela terpisah (bukan tab) yang mendorong Xcode saya membuat build untuk semua simulator selamanya.
Kami menggunakan cukup banyak @IBDesignablearahan ... adakah yang khususnya harus kita cari?
Stan
Saya pikir itu mungkin untuk menemukan mereka dengan mengecualikan satu per satu, dan periksa hasilnya, kasus saya itu hanya 2 dari arahan @IBDesignable di seluruh proyek.
ua24
2
Madhuri Mane benar tentang ini. Untuk menambahkan sedikit kejelasan, beberapa hal penting yang perlu diperhatikan:
Ini HANYA berlaku jika Anda memiliki ketergantungan tersirat pada perpustakaan / kerangka kerja yang diandalkan oleh target Anda.
Jika "Temukan Ketergantungan Tersirat" dinonaktifkan:
Hasil: Perpustakaan tidak akan dibangun sebelum membangun target aplikasi. Target aplikasi gagal dibangun.
Solusi: Untuk memastikan bahwa skenario kedua tidak terjadi, Anda harus menambahkan target yang diperlukan ke dalam daftar target dan memesannya dengan benar.
Sekarang jika seluruh proyek Anda ditempatkan dalam satu target dan yang membutuhkan 4 menit untuk mengkompilasi tidak ada banyak yang dapat Anda lakukan kecuali memecahnya menjadi kerangka kerja untuk mengambil keuntungan dari yang di atas atau mencari tahu di mana kompilasi tertinggal. Jika Anda menggunakan sesuatu seperti PaintCode atau memiliki potongan besar kode UIKit dengan cepat mengubahnya menjadi Objective-c itu mengkompilasi jauh lebih cepat
Silakan pergi ke pengaturan build proyek dan ubah "Dialek Bahasa C".
"C Language Dialect" diatur ke "GNU99" dan bukan "Compiler Default" ketika Anda memperbarui versi xcode. Pada titik tertentu Xcode tidak memigrasi pengaturan proyek perpustakaan dengan benar dan itu diatur ke GNU99. Ini akan menyelesaikan masalah
Jika Anda telah membuat perubahan pada file Swift mulai membangun aplikasi, buka tab terakhir dan klik pada log build, selama tahap "Periksa dependensi" hentikan build dan jalankan lagi. Pada jalankan kedua itu seharusnya hanya membangun file yang Anda modifikasi. Jika dilakukan dengan benar, saya menemukan itu berfungsi setiap saat. Tidak perlu melakukan perubahan pengaturan proyek.
Tampaknya ini adalah bug di Xcode.
Jika Anda melihat aplikasi melakukan build penuh maka hentikan build dan coba trik ini lagi.
Jika Anda tidak membuat perubahan pada kode gunakan CMD + CTRL + R untuk menjalankan tanpa membangun aplikasi yang melampirkan debugger. Tidak akan membangun aplikasi tetapi dapat membantu menghemat waktu yang tidak perlu.
Ini benar-benar berfungsi, tetapi kadang-kadang XCode akan gagal dengan kode 1 dan Anda harus membuat Clean Build. Ini mimpi buruk
Antonio Junior
Ada skenario lain di mana Xcode akan selalu melakukan pembangunan penuh. Saya telah menemukan jika Anda memodifikasi file .h termasuk dalam bridging header itu akan membangun kembali semua file Swift. Mungkin ada skenario lain yang tidak terkait dengan bug Xcode.
Vlad
Ada skenario di mana satu-satunya perubahan adalah penggantian nama fungsi atau properti baru yang ditambahkan ke kelas / struct yang ada yang menghasilkan seluruh pembangunan kembali.
Antonio Junior
Merujuk pada pertanyaan / jawaban ini, utas ini adalah duplikat dari ini: Punya solusi yang berfungsi lebih baik: stackoverflow.com/questions/39456223/…
Vlad
1
Masalah dari sisi saya diperbaiki dengan menerapkan hapus centang pada solusi "Temukan Ketergantungan Implisit".
TAPI ingat jika Anda menggunakan cocoapods, untuk menerapkan pengaturan ini juga ke proyek pod Anda dengan memilihnya
Produk -> Skema -> Pods- "yourProjectName"
juga berlaku di:
Produk -> Skema -> "NamaProyek Anda"
Ini membantu saya, jadi saya harap petunjuk ini membantu orang lain.
tidak ada yang berhasil masih dikompilasi ketika saya menulis satu surat.
Chandni
-2
untuk memupuk waktu kompilasi xcode, dapat menggunakan IRAMDISK (disk memori virtual). Berarti sangat berguna dan efektif untuk mengurangi waktu kompilasi.
Juga dapat digunakan untuk mempercepat aplikasi yang sering digunakan.
Jawaban:
Perbarui 2017/1/2
Masalah ini belum diselesaikan di Xcode 8.2.1 (untuk proyek saya)
Bagaimana cara bertahan?
Pembaruan 2016/12/17
Masalah ini belum diselesaikan di Xcode 8.2.
Pembaruan 2016/12/12
Atom ke kode dan baris perintah untuk membangun dan debug adalah pilihan saya sekarang. Semoga Apple akan segera memperbaiki bug yang sah ini.
Pembaruan 2016/12/04
Masalah ini tampaknya diselesaikan dengan Xcode 8.2 (beta 2) .
Tetapi bagi saya ini tidak dapat diselesaikan, saya menghadapi masalah ini bahkan ketika saya menggunakan Xcode 8.2. Anda dapat mencobanya (unduh Xcode8.2 beta2 di sini )
Jawaban lama: Ini adalah solusi:
"Bangun Pengaturan" tab -> "C Bahasa Dialek" -> Ubah ke "Compiler Default".
Untuk referensi :
sumber
Pergi ke Produk -> Skema -> Edit Skema. Pilih Bangun di kolom sisi kiri dan hapus centang " Temukan dependensi tersirat "
Tetapi bendera ini harus tetap diperiksa ketika Anda membangun proyek untuk pertama kalinya ..
sumber
Perbaikan untuk saya adalah hanya menutup storyboard, saya memiliki file sumber dibuka dengan editor yang dibantu dan file storyboard dibuka juga (menutup storyboard --- karena saya tidak membuat perubahan padanya) menghapus semua kompilasi yang tidak perlu
sumber
DIPERBARUI
Satu-satunya peningkatan terbesar yang dapat saya lakukan adalah memodulasi proyek saya. Secara khusus memodulasi lapisan ORM yang digunakan di hampir setiap kelas lainnya. Dengan memindahkan kode itu ke target terpisah dalam proyek saya dan mengimpornya sebagai modul, saya dapat meningkatkan waktu kompilasi. Xcode tidak lagi memutuskan untuk mengkompilasi ulang file yang tidak perlu ketika saya membangun.
Sekarang saya menggunakan metode kompilasi File Tunggal untuk membangun debug inkremental cepat.
Ada beberapa saran bagus lainnya di tautan ini termasuk refactoring kode, https://medium.com/rocket-fuel/optimizing-build-times-in-swift-4-dc493b1cc5f5
TUA
Masih menjadi masalah konstan bagi saya dengan Xcode 9. Seperti banyak dari Anda, saya sedang mengerjakan proyek swiftap 4 / cocoapods besar dengan banyak file sumber dan mengkompilasi ulang setiap file setiap kali menyebalkan.
Sejauh ini saya mendapatkan hasil terbaik dengan pengaturan berikut. Saya sarankan Anda mencobanya dan melihat cara kerjanya untuk Anda.
Menambahkan pengaturan bangunan Buatan Pengguna yang ditetapkan,
Catatan: Saya tidak memiliki pengaturan kustom yang ditentukan pengguna untuk optimasi seluruh modul.
sumber
Saya mengubah beberapa hal dengan kode saya mengenai header awalan yang tampaknya telah memperbaiki masalah ini. Saya tidak tahu yang mana yang benar-benar berhasil, tetapi saya akan membagikan semuanya dengan harapan dapat membantu orang lain di luar sana. Jika Anda tidak memiliki set header awalan, maka saya kira ini bukan masalahnya (atau masalahnya multifaset).
@import MyModule
). (Bagi saya, ini dan langkah 1 adalah satu dan sama.)Jika itu masih tidak berhasil, Anda dapat mencoba menghapus beberapa impor lagi dari header awalan Anda. Mungkin ada sesuatu yang tersandung ...
sumber
Sepertinya mereka secara aktif mengerjakannya sesuai dengan https://forums.developer.apple.com/thread/62737 tetapi solusinya adalah menambahkan
HEADERMAP_USES_VFS = YES
di bawah pengaturan build target Anda (Proyek -> Target -> Pengaturan Build -> Ditetapkan Pengguna).
Solusi ini bekerja setiap saat untuk saya hari ini, setelah tidak ada solusi lain yang bekerja secara konsisten selama sebulan terakhir.
EDIT: Kadang-kadang masih mengkompilasi ulang semuanya, meskipun tampaknya melakukannya lebih jarang dengan pengaturan ini ditetapkan.
sumber
Periksa semua kode Anda tentang
@IBDesignable
arahan dalam kasus khusus saya, proyek pembangunan Xcode sepanjang waktu karena saya memiliki beberapa pandangan di storyboard saya yang berisi@IBDesignable
atribut ini di dalamnya. Hal kedua adalah saya juga membuka storyboard di jendela terpisah (bukan tab) yang mendorong Xcode saya membuat build untuk semua simulator selamanya.sumber
@IBDesignable
arahan ... adakah yang khususnya harus kita cari?Madhuri Mane benar tentang ini. Untuk menambahkan sedikit kejelasan, beberapa hal penting yang perlu diperhatikan:
Ini HANYA berlaku jika Anda memiliki ketergantungan tersirat pada perpustakaan / kerangka kerja yang diandalkan oleh target Anda.
Jika "Temukan Ketergantungan Tersirat" dinonaktifkan:
Sumber dan bacaan lebih lanjut tentang topik ini: https://pewpewthespells.com/blog/managing_xcode.html#scheme-action
Sekarang jika seluruh proyek Anda ditempatkan dalam satu target dan yang membutuhkan 4 menit untuk mengkompilasi tidak ada banyak yang dapat Anda lakukan kecuali memecahnya menjadi kerangka kerja untuk mengambil keuntungan dari yang di atas atau mencari tahu di mana kompilasi tertinggal. Jika Anda menggunakan sesuatu seperti PaintCode atau memiliki potongan besar kode UIKit dengan cepat mengubahnya menjadi Objective-c itu mengkompilasi jauh lebih cepat
sumber
Buka pengaturan build target Anda dan atur
Defines Module
keYes
.Bekerja untuk saya untuk membangun pasangan, terlalu cepat untuk mengklaim ini adalah solusi yang pasti, tapi setidaknya kami mencoba.
sumber
Apple merilis versi beta baru Xcode kemarin (14 Nov)
Xcode 8.2 beta 2
Dan masalah ini telah ditandai sebagai terselesaikan dalam catatan rilis.
Ini bekerja untuk saya. Kecepatan build kembali seperti biasa. Setiap orang yang menghadapi masalah ini, harus mencobanya!
https://developer.apple.com/download/
sumber
Silakan pergi ke pengaturan build proyek dan ubah "Dialek Bahasa C".
"C Language Dialect" diatur ke "GNU99" dan bukan "Compiler Default" ketika Anda memperbarui versi xcode. Pada titik tertentu Xcode tidak memigrasi pengaturan proyek perpustakaan dengan benar dan itu diatur ke GNU99. Ini akan menyelesaikan masalah
sumber
Jika Anda telah membuat perubahan pada file Swift mulai membangun aplikasi, buka tab terakhir dan klik pada log build, selama tahap "Periksa dependensi" hentikan build dan jalankan lagi. Pada jalankan kedua itu seharusnya hanya membangun file yang Anda modifikasi. Jika dilakukan dengan benar, saya menemukan itu berfungsi setiap saat. Tidak perlu melakukan perubahan pengaturan proyek.
Tampaknya ini adalah bug di Xcode.
Jika Anda melihat aplikasi melakukan build penuh maka hentikan build dan coba trik ini lagi.
Jika Anda tidak membuat perubahan pada kode gunakan CMD + CTRL + R untuk menjalankan tanpa membangun aplikasi yang melampirkan debugger. Tidak akan membangun aplikasi tetapi dapat membantu menghemat waktu yang tidak perlu.
sumber
Masalah dari sisi saya diperbaiki dengan menerapkan hapus centang pada solusi "Temukan Ketergantungan Implisit".
TAPI ingat jika Anda menggunakan cocoapods, untuk menerapkan pengaturan ini juga ke proyek pod Anda dengan memilihnya
Produk -> Skema -> Pods- "yourProjectName"
juga berlaku di:
Produk -> Skema -> "NamaProyek Anda"
Ini membantu saya, jadi saya harap petunjuk ini membantu orang lain.
Terima kasih
sumber
Coba: 1. Navigasikan ke Proyek 2. Klik Bangun Pengaturan 3. Periksa apakah OptimizationLevel diatur ke None untuk debugging. 4. Klik Tambah Pengaturan Buatan Pengguna 5. Setel SWIFT_WHOLE_MODULE_OPTIMIZATION ke YES.
sumber
untuk memupuk waktu kompilasi xcode, dapat menggunakan IRAMDISK (disk memori virtual). Berarti sangat berguna dan efektif untuk mengurangi waktu kompilasi.
Juga dapat digunakan untuk mempercepat aplikasi yang sering digunakan.
lihat tautan berikut untuk mengunduh dan menggunakan: http://iramdisk.findmysoft.com/mac/
sumber