Gandakan dan ganti nama proyek Xcode & folder terkait [ditutup]

195

Saya ingin dapat menduplikasi seluruh proyek Xcode, mengganti nama proyek dan file terkait tanpa Xcode menjadi mental, dan tanpa harus mengimpor kembali secara manual semua file ke proyek.

Sammio2
sumber

Jawaban:

368

Jawaban ini adalah puncak dari berbagai posting dan tutorial StackOverflow lainnya di internet yang dibawa ke satu tempat untuk referensi saya di masa depan, dan untuk membantu siapa pun yang mungkin menghadapi masalah yang sama. Semua kredit diberikan untuk jawaban lain di bagian akhir.

Duplikat Proyek Xcode

  • Di Finder, duplikat folder proyek ke lokasi yang diinginkan dari proyek baru Anda. Jangan mengganti nama nama file .xcodeproj atau folder terkait pada tahap ini.

  • Dalam Xcode, ganti nama proyek. Pilih proyek Anda dari panel navigator (panel kiri). Di panel Utilities (panel kanan) ganti nama proyek Anda, Terima perubahan yang diusulkan Xcode.

  • Di Xcode, ganti nama skema di "Kelola Skema", juga ganti nama target yang mungkin Anda miliki.

  • Jika Anda tidak menggunakan Bundle Identifier default yang berisi PRODUCT_NAME saat ini di bagian akhir (jadi akan diperbarui secara otomatis), maka ubah Bundle Identifier Anda dengan yang baru yang akan Anda gunakan untuk proyek duplikat Anda.

Mengganti nama folder sumber

Jadi setelah mengikuti langkah-langkah di atas Anda harus memiliki proyek Xcode digandakan dan diganti namanya yang harus membangun dan mengkompilasi berhasil, namun folder kode sumber Anda akan tetap dinamai seperti di proyek asli. Ini tidak menyebabkan masalah kompilator, tetapi itu bukan struktur file yang paling jelas bagi orang untuk bernavigasi di SCM, dll. Untuk mengganti nama folder ini tanpa memutus semua tautan file Anda, ikuti langkah-langkah ini:

  • Di Finder, ganti nama folder sumber. Ini akan merusak proyek Anda, karena Xcode tidak akan secara otomatis mendeteksi perubahan. Semua daftar file xcode Anda akan kehilangan tautannya dengan file yang sebenarnya, jadi semuanya akan berubah menjadi merah.

  • Dalam Xcode, klik pada folder virtual yang Anda beri nama baru (Ini kemungkinan akan tepat di atas, tepat di bawah proyek .xcodeproject Anda yang sebenarnya) Ubah nama ini untuk mencocokkan nama di Finder, ini tidak akan memperbaiki apa pun dan benar-benar bukan diperlukan langkah tetapi senang memiliki nama file yang cocok.

  • Di Xcode, Pilih folder yang baru saja Anda ganti namanya di panel navigasi. Kemudian di panel Utilities (paling kanan) klik ikon yang terlihat seperti folder abu-abu gelap, tepat di bawah menu drop down 'Lokasi'. Dari sini, navigasikan ke folder Anda yang telah diubah namanya di finder dan klik 'Pilih'. Ini secara otomatis akan mengaitkan kembali semua file Anda, dan mereka seharusnya tidak lagi tampak merah dalam panel navigasi Xcode.

Ikon untuk diklik

  • Dalam pengaturan membangun proyek / target Anda, cari nama folder lama dan ubah nama secara manual setiap kejadian yang Anda temukan. Biasanya ada satu untuk prefix.pch dan satu untuk info.plist, tetapi mungkin ada lebih banyak.

  • Jika Anda menggunakan pustaka pihak ketiga (Testflight / Hockeyapp / etc), Anda juga perlu mencari 'Path Pencarian Perpustakaan' dan mengganti nama kemunculan nama file lama di sini juga.

  • Ulangi proses ini untuk setiap folder kode sumber tes unit yang berisi proyek Anda, prosesnya identik.

Ini akan memungkinkan Anda untuk menduplikasi & mengubah nama proyek xcode dan semua file terkait tanpa harus mengedit file xcode secara manual, dan berisiko mengacaukan semuanya.

Kredit

Terima kasih banyak kepada Nick Lockwood , dan Pauly Glott karena memberikan jawaban terpisah untuk masalah ini.

Sammio2
sumber
3
Setelah mengikuti di atas saya hanya mencari proyek lubang untuk "nama lama" dan menemukan apa yang perlu diubah (Prefix header) dan dikompilasi ok dengan "nama baru" dan di tempat lain. Tutorial hebat - hanya apa yang saya butuhkan. (Diuji dengan Xcode 5.0.1 / iOS 7.0)
Mac
Ini sepertinya tidak membuat saya jauh-jauh ke sana (pada Xcode 5.0.2 di sini, dengan proyek yang dimigrasikan dari 4.6.3 ke 5.0.0). Ada banyak hal di dalam *.xcodeproj/project.pbxprojfile yang berisi jalur folder asli. Secara khusus, build gagal karena terus mencari info.plist di folder asli.
Steven Lu
2
Sebagai rasa ingin tahu, ini semacam cara lama untuk melakukan ini ... stackoverflow.com/questions/10006482/… (jawaban Daniel)
Fattie
1
Xcode 7.1.1 mogok untuk saya pada rintangan pertama - mengganti nama proyek. Akan menyelidiki, tetapi apakah ada orang lain yang menemukan ini?
HughHughTeotl
5
Kehilangan cara menangani ketika Anda memiliki integrasi Cocoapods dalam proyek. Saya menemukan tautan bermanfaat untuk mengatasinya juga: h4ckish.com/2015/01/22/renaming-your-cocoapods-ios-project
KK
30

Saya memposting ini karena saya selalu kesulitan ketika mengganti nama proyek XCode .

Mengganti nama proyek itu bagus dan sederhana tetapi ini tidak mengganti nama folder sumber. Ini adalah langkah demi langkah dari apa yang telah saya lakukan yang bekerja sangat baik di Xcode 4 dan 5 berkat tautan di bawah ini.

Tautan REF:
Ganti nama Project.
Ganti nama Folder Sumber dan file lainnya.

1- Cadangkan proyek Anda.

Jika Anda menggunakan git, lakukan perubahan apa pun, buat salinan dari seluruh folder proyek dan cadangan dalam mesin waktu sebelum membuat perubahan apa pun (langkah ini tidak diperlukan, tetapi saya sangat disarankan).

2- Buka proyek Anda.

3- Klik dua kali pelan atau tekan enter pada nama Project (ikon biru atas) dan ganti nama menjadi apa pun yang Anda suka.

CATATAN: Setelah Anda mengubah nama proyek dan menekan 'enter', itu akan menyarankan untuk secara otomatis mengubah semua entri yang terkait dengan nama proyek dan akan memungkinkan Anda untuk memilih-pilih beberapa dari mereka jika Anda mau. Pilih semuanya dan klik ok.

4- Ganti nama Skema

a) Klik menu tepat di sebelah tombol berhenti dan pilih Kelola Skema.

b) Klik satu kali dengan lambat atau tekan enter pada skema nama lama dan ganti namanya menjadi apa pun yang Anda suka.

c) Klik ok.

5 - Bangun dan jalankan untuk memastikannya berhasil.

CATATAN: Pada titik ini semua file proyek penting harus diganti namanya kecuali komentar di kelas yang dibuat ketika proyek dibuat atau folder sumber. Selanjutnya kita akan mengganti nama folder di sistem file.

6- Tutup proyek.

7- Ganti nama folder utama dan sumber.

8- Klik kanan .xcodeprojfile bundel proyek dan pilih "Tampilkan Isi Paket" dari menu konteks. Buka file .pbxproj dengan editor teks apa pun.

9- Cari dan gantikan kemunculan nama folder asli dengan nama folder baru.

10- Simpan file.

11 - Buka proyek XCode, ujilah.

12 - Selesai.

EDIT 10/11/19:

Ada alat untuk mengganti nama proyek di Xcode. Saya belum cukup mencobanya untuk mengomentarinya. https://github.com/appculture/xcode-project-renamer

fs_tigre
sumber
2
Pertanyaannya adalah untuk menggandakan dan kemudian mengganti nama proyek yang disalin. Jawaban ini hanya untuk mengganti nama proyek yang ada.
martinjbaker
1
Bagi saya, ini adalah pendekatan yang paling sederhana. Cukup salin folder proyek asli, misalnya MyProject, secara rekursif ke "MyNewProject". Kemudian buka MyNewProject dan lanjutkan dengan instruksi fs_tigre. Saya terkejut bahwa baik Android Studio maupun Xcode tidak menyediakan opsi "File-> Clone Project" yang akan sangat nyaman. Mungkin proyek plugin yang bagus untuk seseorang ( nshipster.com/xcode-plugins )?
Blisterpeanuts
Hanya metode yang bekerja untuk saya
XCode
2
Langkah 10.1 - Jika Anda memiliki bridging header dan / atau file hak, ganti nama file tersebut untuk mencerminkan nama baru Anda. Jika menggunakan Cocoapods, edit nama di file pod Anda.
David Lari
6

Pada XCode 7 ini menjadi lebih mudah.

Apple telah mendokumentasikan proses di situs mereka: https://developer.apple.com/library/ios/recipes/xcode_help-project_editor/RenamingaProject/RenamingaProject.html

Pembaruan: tautan XCode 8: http://help.apple.com/xcode/mac/8.0/#/dev3db3afe4f

PBICS
sumber
2
Ini hanya berfungsi untuk mengubah nama internal aplikasi, tetapi secara eksternal folder untuk aplikasi tetap tidak berubah
smac89
2

Saya menggunakan skrip ini setelah saya mengganti nama Proyek iOS saya. Ini membantu untuk mengubah nama direktori dan membuat nama dalam sinkronisasi.

http://github.com/ytbryan/rename

CATATAN: Anda perlu mengubah nama skema secara manual.

ytbryan
sumber
1

Dalam kode contoh untuk buku "OpenCV Instan untuk iOS" Saya telah menemukan skrip bash yang menyalin proyek dari folder ke folder lain.
Melakukan sedikit riset, saya menemukan posting blog dari apa yang tampaknya menjadi penulis asli skrip: http://mohrt.blogspot.it/2009/01/renaming-xcode-project-from-command.html , di mana Anda dapat mengunduh skripnya . Saya mencobanya dan menjalankannya dari terminal seperti ini

    sh renameXcodeProject.sh <name-of-existing-folder> <name-of-folder-to-create>   

bekerja dengan baik.
Info tambahan dapat ditemukan membuka file dengan editor teks. Semoga itu bisa membantu

Giorgio Tempesta
sumber
0

Saya menggunakan Xcode 6+ dan saya hanya melakukan:

  • Salin semua file dalam folder proyek ke Folder baru (dengan nama baru).
  • Buka *.xcodeproj or *.xcworkspace
  • Ubah nama Proyek.
  • Klik pada skema dan hapus chema saat ini dan tambahkan yang baru.

Di sini dilakukan, tetapi nama jendela Xcode dan *.xcodeproj or *.xcworkspacemasih <old-name>. Maka saya lakukan:

  • pop install
  • Buka <new name>.xcworkspace
SLyHuy
sumber
0

Satu hal lagi untuk dicoba!

Ketika saya menyalin semua file saya, membuka proyek, dan menamainya, semuanya berubah menjadi nama proyek baru saya kecuali untuk target pengujian! Saya mendapat kesalahan tautan yang mengatakan bahwa saya kehilangan file bernama "myOldProjectname.app". Inilah yang diperbaiki:

  1. Klik pada pengaturan proyek Anda dan pilih target pengujian Anda masukkan deskripsi gambar di sini

  2. Klik pada pengaturan bangunan dan cari "host uji" masukkan deskripsi gambar di sini

  3. Periksa 2 jalur file tersebut. Kemungkinan kedua jalur tersebut masih menunjuk pada nama proyek lama Anda. masukkan deskripsi gambar di sini

Semoga itu bisa membantu!

Erparker
sumber
0

Untuk orang lain yang memiliki masalah dengan storyboard crash setelah menyalin proyek Anda, kunjungi Main.storyboard di bawah Identity Inspector.

Selanjutnya, periksa apakah modul Anda saat ini adalah modul yang diubah namanya dan bukan yang lama.

Wraithseeker
sumber
0

Saya menggunakan skrip BASH sederhana untuk mengganti nama.

Pemakaian: ./rename.sh oldName newName

#!/bin/sh

OLDNAME=$1
NEWNAME=$2

export LC_CTYPE=C 
export LANG=C
find . -type f ! -path ".*/.*" -exec sed -i '' -e "s/${OLDNAME}/${NEWNAME}/g" {} +

mv "${OLDNAME}.xcodeproj" "${NEWNAME}.xcodeproj"
mv "${OLDNAME}" "${NEWNAME}"

Catatan:

  1. Script ini akan mengabaikan semua file seperti .gitdan.DS_Store
  2. Tidak akan berfungsi jika nama lama / nama baru mengandung spasi
  3. Mungkin tidak berfungsi jika Anda menggunakan pod (tidak diuji)
  4. Nama skema tidak akan diubah (lagi pula proyek berjalan dan mengkompilasi secara normal)
Anton Malmygin
sumber