2011-01-12 17 views

Trả lời

25

Tạo nhiều mục tiêu.

Bạn có thể thay đổi cấu hình xây dựng bằng cách nhấp chuột phải vào mục tiêu và chọn Nhận thông tin. Từ đó, bạn có thể làm những việc như thay đổi tệp Info.plist mà bạn đang xem (để làm những việc như thêm "Lite" vào tên và thay đổi biểu tượng/hình ảnh tải) và đặt cờ trình biên dịch để bạn có thể #ifdef ở những nơi.

Nếu có nhiều tệp chỉ áp dụng được ở phiên bản đầy đủ, bạn có thể nhấp chuột phải vào chúng và xóa chúng khỏi mục tiêu Lite để tạo ứng dụng nhỏ hơn.

Tôi đã thử nghiệm với nhiều lựa chọn thay thế, chẳng hạn như nhiều cấu hình và tôi tiếp tục quay lại nhiều mục tiêu. Tôi thường có ít nhất ba định nghĩa - Phát triển, Ad hoc và App Store, mỗi cài đặt riêng của họ.

+0

Jim - Khi bạn tạo mục tiêu mới, bạn có phải sao chép tất cả các tệp hoặc chỉ các tệp KHÔNG phổ biến? Ví dụ, tôi có một tập tin màn hình hơi khác (.xib) ... về cơ bản tôi muốn vô hiệu hóa một nút và thêm văn bản bổ sung vào nhãn. Vì vậy, khi tôi tạo ra một mục tiêu mới, tôi nên sao chép trên bản gốc (.xib) và thực hiện thay đổi cho rằng trong mục tiêu mới? – milesmeow

+0

Nếu những thay đổi là nhỏ, tôi sẽ cung cấp một macro tiền xử lý trong các thiết lập xây dựng cho mỗi mục tiêu, sau đó sử dụng '# ifdef' để thực hiện các thay đổi trong mã. – Jim

+0

Nếu có nhiều sự khác biệt lớn hơn, tôi sẽ tạo một thư mục cho mỗi mục tiêu, và đặt một bản sao của ngòi bút trong mỗi thư mục, cho phép mỗi một mục tiêu riêng của nó. Khi gói ứng dụng được tạo, Xcode bỏ qua cấu trúc thư mục gốc (theo mặc định) và sao chép các tệp cho đích đó vào một cấu trúc thư mục phẳng. Vì nó sẽ chỉ sao chép một trong hai tập tin, bạn sẽ kết thúc với ngòi chính xác. – Jim

15

Thêm mục tiêu bổ sung vào dự án Xcode của bạn bằng cách sao chép mục tiêu hiện tại. Xác định một macro trong mục tiêu mới (dưới "macro Preprocessor" trong xây dựng cài đặt), một cái gì đó như "macroIsFreeVersion"

Bây giờ bạn có thể làm điều này:

#ifdef macroIsFreeVersion 
    // code that will only execute in the free version here 
#endif 

và điều này:

#ifndef macroIsFreeVersion 
    // code for only the paid version goes here 
#endif 

Bạn sẽ cần thực hiện các thay đổi bổ sung cho id gói, hồ sơ cấp phép, v.v. Tất cả những thứ bạn đã làm để đưa phiên bản trả tiền của mình vào cửa hàng.

+0

Hi William: Tôi đang ở XCode4 (cũng xin vui lòng chịu với tôi bc đây là lần đầu tiên tôi đang cố gắng để làm điều này cấu hình đa mục tiêu và làm việc với cờ trình biên dịch). Tôi có "Apple LLVM compiler 2.0 - Preprocessing" -> "Preprocessor Macros". Theo đó tôi có Debug, Release, MyProject. Vì vậy, để làm theo ví dụ của bạn tôi sẽ chỉ cần đặt "macroIsFreeVersion" trong ba lĩnh vực này? – milesmeow

+0

Có, mặc dù gần đây tôi đã học được rằng bạn cũng có thể làm điều đó thông qua từ điển thông tin - phương pháp là [[NSBundle mainBundle] infoDictionary]. Tùy thuộc vào thiết lập của bạn, điều này có thể hoặc không thể là một giải pháp vượt trội. –

Các vấn đề liên quan