Làm cách nào để đổi tên hoàn toàn dự án Xcode (bao gồm các thư mục)?


470

Tôi có một dự án tên XXX. Tôi muốn đổi tên dự án này thành YYY.

Lưu ý rằng đó XXXlà một thuật ngữ cực kỳ phổ biến (ví dụ: "dữ liệu" hoặc đơn giản là "dự án") và do đó, không thể tìm kiếm và thay thế RegEx đơn giản, vì có nguy cơ làm hỏng các tệp cấu hình dự án.

Thư mục dự án hiện tại của tôi chứa các mục sau đây:

  • XXX
  • XXXTests
  • XXX.xcodeproj

và tôi muốn đổi tên chúng thành:

  • YYY
  • YYYTests
  • YYY.xcodeproj

... tương ứng, với những thay đổi cần thiết được phản ánh trong tệp dự án của tôi.

Làm thế nào tôi có thể thực hiện điều này mà không cần phải tự tạo và điền vào một dự án mới?


Chỉnh sửa: Hoàn toàn vô lý khi điều này đã trở thành câu hỏi được đánh giá cao nhất của tôi.


Bản sao có thể có của dự án Đổi tên xcode
Ron Myschuk

1
Cũng đã hỏi và trả lời ở đây stackoverflow.com/questions/17744319/ trên với 200 phiếu bầu cho câu trả lời
Ron Myschuk

1
cũng đã hỏi và trả lời tại đây stackoverflow.com/questions/8262613/
Kiếm

Nếu bạn chỉ muốn đổi tên tên biểu tượng ứng dụng, hãy kiểm tra câu trả lời này stackoverflow.com/questions/238980/
LYu

Câu trả lời:


1020

Bước 1 - Đổi tên dự án

  1. Nhấp vào dự án bạn muốn đổi tên trong "Trình điều hướng dự án" trong bảng điều khiển bên trái của cửa sổ Xcode.
  2. Trong bảng bên phải, chọn "Trình kiểm tra tệp" và tên dự án của bạn sẽ được tìm thấy trong "Danh tính và Loại". Thay đổi nó thành tên mới của bạn.
  3. Khi hộp thoại hỏi có nên đổi tên hay không đổi tên các mục nội dung của dự án, bấm vào "Đổi tên".

Bước 2 - Đổi tên chương trình

  1. Ở đầu cửa sổ, bên cạnh nút "Dừng", có một sơ đồ cho sản phẩm của bạn dưới tên cũ; nhấp vào nó, sau đó chọn "Quản lý lược đồ".
  2. Nhấp vào tên cũ trong lược đồ và nó sẽ trở thành có thể chỉnh sửa; thay đổi tên và bấm "Đóng".

Bước 3 - Đổi tên thư mục với tài sản của bạn

  1. Thoát Xcode.
  2. Trong thư mục chính được đặt tên chính xác, có một tệp .xcodeproj mới được đặt tên với thư mục OLD được đặt tên sai. Đổi tên thư mục OLD thành tên mới của bạn (nếu bạn sử dụng Git, bạn có thể chạy git mv oldname newnameđể Git nhận ra đây là một động thái, thay vì xóa / thêm các tệp mới).
  3. Mở lại dự án trong Xcode và bạn sẽ thấy cảnh báo "Thư mục OLD không tồn tại"; bác bỏ cảnh báo.
  4. Trong "Trình điều hướng dự án" trong bảng điều khiển bên trái, nhấp vào thư mục OLD cấp cao nhất.
  5. Trong bảng điều khiển bên phải, bên dưới "Danh tính và Loại", thay đổi trường "Tên" từ tên OLD thành tên mới.
  6. Ngay bên dưới trường đó là menu "Vị trí". Nhấp vào biểu tượng thư mục gần đó và chọn thư mục được đổi tên.

Bước 4 - Đổi tên dữ liệu Plist Build

  1. Nhấp vào dự án trong "Trình điều hướng dự án" ở bên trái và trong bảng điều khiển chính chọn "Cài đặt bản dựng".
  2. Tìm kiếm "plist" trong cài đặt.
  3. Trong phần Bao bì, bạn sẽ thấy Info.plistProduct Bundle Identifier.
  4. Nếu có một tên được nhập vào Info.plist, cập nhật nó.
  5. Làm tương tự cho Product Bundle Identifier.
  6. Nếu bạn sử dụng SwiftUI, hãy tìm kiếm "Tài sản phát triển" và cập nhật đường dẫn.

Bước 5 - Lặp lại bước 3 để kiểm tra (nếu bạn có)

Bước 6 - Lặp lại bước 3 cho dữ liệu cốt lõi nếu tên của nó khớp với tên dự án (nếu bạn có)

Bước 7 - Xây dựng lại dự án của bạn

  1. Command+ Shift+ Kđể làm sạch
  2. Command+ Bđể xây dựng

5
Bạn có thể thay đổi tên của dự án nhưng tên thư mục vẫn giống nhau. Bạn có biết cách thay đổi chúng không
Coder221

5
Cảm ơn! đối với Xcode 8, tệp quyền lợi phải được đổi tên theo cách thủ công.
Jiulong Zhao

54
Khi thực hiện bước 3 phần 2 (đổi tên thư mục), nếu bạn đang sử dụng git, tôi khuyên bạn git mv oldname newname, theo cách đó git sẽ nhận ra rằng đó là một động thái, không xóa và thêm tất cả các tệp của bạn.
Aaron Ash

14
hoàn hảo, hoạt động hoàn hảo trong Xcode 8.2, chỉ cần một điều cần chỉ ra ở đây trong khi chỉnh sửa lược đồ nếu nhấp vào tên lược đồ một lần không thể chỉnh sửa được, sau đó chọn lược đồ và nhấn phím trả về, điều này sẽ làm cho tên lược đồ có thể chỉnh sửa.
Khurram Shehzad

5
Đừng quên tìm và thay thế các phiên bản khác của tên dự án cũ của bạn.
Derek Soike

194

Để thêm vào câu trả lời tuyệt vời của @ luke-west:

Khi sử dụng CocoaPods

Sau bước 2:

  1. Thoát khỏi XCode.
  2. Trong thư mục chính, đổi tên OLD.xcworkspacethành NEW.xcworkspace.

Sau bước 4:

  1. Trong XCode: chọn và chỉnh sửa Podfiletừ trình điều hướng dự án. Bạn sẽ thấy một targetmệnh đề với tên OLD. Thay đổi nó thành MỚI.
  2. Thoát khỏi XCode.
  3. Trong thư mục dự án, xóa OLD.podspectập tin.
  4. rm -rf Pods/
  5. Chạy đi pod install.
  6. Mở XCode.
  7. Nhấp vào tên dự án của bạn trong điều hướng dự án.
  8. Trong khung chính, chuyển sang Build Phasestab.
  9. Dưới Link Binary With Libraries, tìm kiếm libPods-OLD.avà xóa nó.
  10. Nếu bạn có tiêu đề Cầu nối mục tiêu, hãy chuyển đến Cài đặt bản dựng và thay đổi vị trí của tiêu đề từ OLD / OLD-Bridging-Header.h thành NEW / NEW-Bridging-Header.h
  11. Làm sạch và chạy.

7
Sử dụng Xcode 8.3.2 Tôi đã phải sử dụng cocoapods-deintegrate và cài đặt lại tất cả các nhóm để chạy dự án với tên mới.
SteffenK

2
@SteffenK có sự khác biệt giữa phương thức đó và rm -rf Pods /? Xem xét rằng bạn đã thực hiện tất cả các bước khác?
Vaiden

1
Bạn vui lòng giải thích? Dấu vết gì?
Vaiden

2
@Vaiden cảm ơn bạn rất nhiều vì sự rõ ràng hơn khi làm việc với CocoaPods! Quá trình đã tạo ra một tài liệu tham khảo thứ hai, thật lạ, nhưng sau khi gỡ bỏ nó, mọi thứ đều hoạt động hoàn hảo! Cảm ơn một lần nữa! :)
Matt Swift

4
Ai đó có thể cho tôi biết nơi tôi có thể tìm thấy tệp OLD.podspec được đề cập trong câu trả lời này không? Trong dự án của tôi, tôi đã nhận được một vài tệp như 'Podfile' / 'Podfile.lock' / 'Pods.xcodeproj' và tôi đã nhận được một thư mục trống có tên 'Local Podspecs', nhưng tôi không thể tìm thấy tệp
.podspec

51

Một giải pháp nhanh hơn bằng cách sử dụng các lệnh shell (cũng hoạt động với CocoaPods):

VUI LÒNG cdĐẾN MỘT ĐẠI DIỆN KHÔNG GIỚI HẠN TRƯỚC KHI TIẾN HÀNH

Bước 1 - Điều kiện tiên quyết

  1. Sao chép thư mục dự án ban đầu của bạn vào /NewProjectFolder BÊN NGOÀI tạm thời kho lưu trữ git của bạn. Thay đổi thành .git có thể làm hỏng chỉ số git của bạn 💥 ☠

Bước 2 - Mở Terminal

Bây giờ chúng ta sẽ đổi tên dự án từ oldNameđến NewProject.

  • Đóng XCode.
  • Đi đến của bạn /NewProjectFolder.
cd /Path/to/your/NewProjectFolder
  • Cài đặt các công cụ bổ sung cần thiết.
brew install rename ack
  • Đổi tên các tập tin và thư mục chứa chuỗi nguồn. Bạn sẽ cần CHẠY TWICE NÀY , vì các thư mục sẽ được đổi tên trước, sau đó các tệp và thư mục bên trong chúng sẽ được đổi tên trong lần lặp tiếp theo.
find . -name 'oldName*' -print0 | xargs -0 rename --subst-all 'oldName' 'NewProject'
  • Kiểm tra xem tất cả các tệp chứa chuỗi nguồn được đổi tên. Bạn sẽ thấy đầu ra trống.
find . -name 'oldName*'
  • Thay thế tất cả các lần xuất hiện của chuỗi trong tất cả các tệp.
ack --literal --files-with-matches 'oldName' --print0 | xargs -0 sed -i '' 's/oldName/NewProject/g'
  • Kiểm tra xem tất cả các lần xuất hiện của chuỗi trong tất cả các tệp đã được thay thế. Bạn sẽ thấy đầu ra trống.
ack --literal 'oldName'
  • Chạy pod install
  • Thêm NewProjectFoldervào kho lưu trữ của bạn.
  • Bạn xong việc rồi!

3
Cảm ơn vì điều này tôi thấy nó hữu ích. Khi sao chép và dán các lệnh như thế này, tôi thích nó hơn nếu công việc có thể được giảm thiểu để tên ví dụ của "YourNewAmazedProjectName" bị quá mức, chỉ cần sử dụng "ví dụ" vì nó kéo dài tuổi thọ của phím xóa của tôi.
LpLrich

1
@LpLrich cảm ơn bạn đã gợi ý, tôi vừa cập nhật câu trả lời của mình.
Pietro Basso

Thư mục chính đã được đổi tên nhưng tôi không thấy bất kỳ thư mục hoặc tệp nào được đổi tên, có đề xuất nào không?
Ethan Parker

2
@EthanParker bạn cần chạy find . -name 'oldName*' -print0 | xargs -0 rename --subst-all 'oldName' 'ExampleName'hai lần, các tệp và thư mục bên trong các thư mục chính sẽ được đổi tên trong lần lặp thứ hai.
Pietro Basso

1
Tôi đã sử dụng coreData trong dự án của mình và tôi đã phải chạy lệnh này không phải hai lần mà là ba lần.
ShadowToD ngày

21

Có một dự án GitHub được gọi là Xcode Project Renamer:

Nó nên được thực thi từ thư mục gốc của thư mục dự án Xcode và được gọi với hai tham số chuỗi: $ OLD_PROJECT_NAME & $ NEW_PROJECT_NAME

Tập lệnh đi qua tất cả các tệp và thư mục theo cách đệ quy, bao gồm tệp dự án Xcode hoặc tệp vùng làm việc và thay thế tất cả các lần xuất hiện của chuỗi $ OLD_PROJECT_NAME bằng chuỗi $ NEW_PROJECT_NAME (cả trong tên và nội dung của mỗi tệp).

ĐỪNG BỎ QUA ĐỂ TRỞ LẠI DỰ ÁN CỦA BẠN!

Đổi mới dự án Xcode


Điều này không hữu ích cho người mới bắt đầu, tất cả những gì nó làm là hỏng tệp dự án chính của tôi, nó cũng không xóa tập lệnh bằng cách sử dụng các lệnh dưới đây tôi kết thúc bởi lãng phí thời gian. $ rm đổi tên.swift
Peter Walter

Xin đừng đi theo lối tắt.
Peter Walter

6
@ peter-walter bạn nên luôn sao lưu dữ liệu của mình trước các hoạt động đó.
Olcay Ertaş

Điều này làm việc như một nét duyên dáng. Điều duy nhất còn thiếu là bạn cần chạy pod installsau khi chạy tập lệnh.
romin21

11

XCode 11.0+.

Bây giờ nó thực sự đơn giản. Chỉ cần đi đến Project Navigatorbảng điều khiển bên trái của cửa sổ XCode.
Nhấn Enterđể kích hoạt nó để đổi tên, giống như bạn thay đổi tên thư mục.
nhập mô tả hình ảnh ở đây

Chỉ cần thay đổi tên mới ở đây và XCode sẽ yêu cầu bạn đổi tên các phần khác.

nhập mô tả hình ảnh ở đây.

Nhấn vào Renameđây và bạn đã hoàn tất.
Nếu bạn bối rối về tên thư mục gốc của mình rằng tại sao nó không thay đổi, thì đó chỉ là một thư mục. chỉ cần đổi tên nó với một tên mới.
nhập mô tả hình ảnh ở đây


7

Để thay đổi tên dự án;

  1. Chọn dự án của bạn trong Trình điều hướng dự án.

2. Trong phần Danh tính và Loại của Trình kiểm tra tệp, nhập tên mới vào trường Tên.

3.Nhấn trả lại.

Một hộp thoại được hiển thị, liệt kê các mục trong dự án của bạn có thể được đổi tên. Hộp thoại bao gồm một bản xem trước về cách các mục sẽ xuất hiện sau khi thay đổi.

  1. Để chọn lọc đổi tên các mục, vô hiệu hóa các hộp kiểm cho bất kỳ mục nào bạn không muốn đổi tên. Để chỉ đổi tên ứng dụng của bạn, hãy để ứng dụng được chọn và bỏ chọn tất cả các mục khác.

  2. Nhấn "Đổi tên"


5

Hướng dẫn thêm khi làm theo các giải pháp của @ Luke-West + @ Vaiden:

  • Nếu lược đồ của bạn không thay đổi (vẫn hiển thị mac của tôi) ở trên cùng bên trái bên cạnh nút dừng:

    1. Nhấp vào Tên dự án được tạo MỚI (bên cạnh nút dừng)> Nhấp vào Chỉnh sửa lược đồ> Xây dựng (phía bên trái)> Xóa mục tiêu cũ (sẽ nói là thiếu) và thay thế bằng dự án có tên MỚI dưới logo dự án được đặt tên MỚI

Ngoài ra, tôi không phải sử dụng bước 3 trong giải pháp của @ Vaiden. Chỉ cần chạy rm -rf Pods/trong thiết bị đầu cuối đã loại bỏ tất cả các tệp pod cũ

Tôi cũng không phải sử dụng bước 9 trong giải pháp của @ Vaiden, thay vào đó tôi chỉ xóa dự án OLD có tên khung trong Thư viện nhị phân liên kết (khung được đặt tên MỚI đã có)

Vì vậy, các bước cập nhật sẽ như sau:

Bước 1 - Đổi tên dự án

  1. Nếu bạn đang sử dụng cocoapods trong dự án của mình, hãy đóng không gian làm việc và mở dự án XCode cho các bước này.
  2. Nhấp vào dự án bạn muốn đổi tên trong "Trình điều hướng dự án" ở bên trái của chế độ xem Xcode.
  3. Ở bên phải, chọn "Trình kiểm tra tệp" và tên dự án của bạn sẽ nằm trong đó dưới "Danh tính và Loại", thay đổi nó thành tên mới.
  4. Nhấp vào "Đổi tên" trong menu thả xuống

Bước 2 - Đổi tên Đề án

  1. Trong thanh trên cùng (gần nút "Dừng"), có một sơ đồ cho sản phẩm OLD của bạn, nhấp vào nó, sau đó chuyển đến "Quản lý lược đồ"
  2. Nhấp vào tên OLD trong lược đồ và nó sẽ có thể chỉnh sửa, thay đổi tên
  3. Thoát khỏi XCode.
  4. Trong thư mục chính, đổi tên OLD.xcworkspace thành NEW.xcworkspace.

Bước 3 - Đổi tên thư mục với tài sản của bạn

  1. Thoát Xcode
  2. Trong thư mục chính được đặt tên chính xác, có một tệp xcodeproj mới được đặt tên với thư mục OLD được đặt tên sai. Đổi tên thư mục OLD thành tên mới của bạn
  3. Mở lại dự án, bạn sẽ thấy một cảnh báo: "Thư mục OLD không tồn tại", bỏ qua cảnh báo
  4. Trong "Trình điều hướng dự án" ở bên trái, nhấp vào tên thư mục OLD cấp cao nhất
  5. Trong ngăn Tiện ích bên dưới "Danh tính và loại", bạn sẽ thấy mục "Tên", thay đổi mục này từ OLD thành tên mới
  6. Ngay bên dưới có một mục "Vị trí". Nhấp vào thư mục có tên OLD và chọn thư mục vừa được đổi tên

Bước 4 - Đổi tên dữ liệu Plist Build

  1. Nhấp vào dự án trong "Trình điều hướng dự án" ở bên trái, trong bảng điều khiển chính chọn "Cài đặt bản dựng"
  2. Tìm kiếm "plist" trong phần này Trong phần đóng gói, bạn sẽ thấy Info.plist và định danh gói sản phẩm
  3. Đổi tên mục hàng đầu trong Info.plist
  4. Làm tương tự cho Mã định danh sản phẩm

Bước 5 Xử lý Podfile

  1. Trong XCode: chọn và chỉnh sửa Podfile từ trình điều hướng dự án. Bạn sẽ thấy một mệnh đề đích với tên OLD. Thay đổi nó thành MỚI.
  2. Thoát khỏi XCode.
  3. Trong terminal, cd vào thư mục dự án, sau đó: rm -rf Pods/
  4. Chạy cài đặt pod.
  5. Mở XCode.
  6. Nhấp vào tên dự án của bạn trong điều hướng dự án.
  7. Trong ngăn chính, chuyển sang tab Build Ph Phase. Trong Liên kết nhị phân với các thư viện, hãy tìm khung OLD và xóa nó (nên nói là nó bị thiếu) Khung được đặt tên MỚI sẽ ở đó, nếu không sử dụng nút "+" ở dưới cùng của cửa sổ để thêm nó
  8. Nếu bạn có tiêu đề Cầu nối mục tiêu, hãy chuyển đến Cài đặt bản dựng và thay đổi vị trí của tiêu đề từ OLD / OLD-Bridging-Header.h thành NEW / NEW-Bridging-Header.h
  9. Làm sạch và chạy.

Bạn sẽ có thể xây dựng mà không có lỗi sau khi bạn đã thực hiện thành công tất cả các bước


2
Đối với Bước 5.3 thay vì rm-rf Pods/cách sạch hơn là chạy pod deintegrate, loại bỏ tất cả dấu vết của Cốc Cốc khỏi dự án Xcode của bạn nhưng vẫn giữ nguyên Podfile của bạn.
jklapwyk

Quy tắc này. Nó cung cấp nền tảng cho tôi để hợp nhất một ứng dụng Ionic với một ứng dụng iOS hiện có.
t4l

2

Ngoài tất cả các bước mà Luke và Vaiden đề xuất, tôi cũng phải đổi tên tất cả các thuộc tính customModule trong Storyboard của mình để khớp với tên mới và điều này phải phân biệt chữ hoa chữ thường.


1
người duy nhất đã từng đề cập đến điều này!
Fattie

1
LƯU Ý bạn có thể thực hiện việc này trong INTERFACE BUILDER, chỉ bằng cách sắp xếp "nhấp lại" trên trường. Sau đó, nó sẽ chính xác "tái mặc định" cho tên dự án mới của bạn.
Fattie
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.