Blog

Làm thế nào để thiết lập môi trường develop và product trong Xcode?

Làm thế nào để thiết lập môi trường develop và product trong Xcode ?

Trong khi bạn phát triển 1 dự án iOS cần thiết lập môi trường kiểm thử, phát triển và môi trường thật khi release sản phẩm (product), mà các môi trường này cần cài đặt các thông số khác nhau, thì các bạn sẽ phải thiết lập các môi trường riêng biệt, để tránh sự nhầm lẫn giữa môi trường phát triển mà môi trường thật. Dưới đây mình sẽ hướng dẫn các bạn làm việc này 1 cách dễ dàng nhé!

Trước tiên, mình sẽ giới thiệu đến cách bạn 1 tips về cách đặt tiền tố cho 1 class (Prefix) .

  • Sau khi các bạn create project, chọn vào tab như trong hình vẽ, mặc định trong ô text filed Class Prefix sẽ là rỗng
  • Các bạn có thể viết tiền tố cho class của mình muốn đặt vào đó (trong ví dụ này mình đặt tiền tố là SF: viết tắt của Steadfast)

Prefix_01

Vậy là ok rồi, khi cách bạn create 1 class mới thì nó sẽ tự động thêm Prefix cho bạn

Prefix_02

Bây giờ chúng ta sẽ đi vào chủ đề chính, mình sẽ show step by step kèm theo hình ảnh mình hoạ cho các bạn dễ hiểu.

Bước 1: Vào project’s settings trong Project Navigator panel, các bạn chọn Targets, click chuột phải và chọn Duplicate để copy target hiện tại sang 1 target mới.

AddTarget_01

Bước 2: Xcode sẽ hỏi các bạn là có muốn tạo target mới này cho môi trường phát triển của iPad không? Bởi vì lcs đầu mình tạo project chỉ phát triển trên Device là iPhone, không chọn là Universal, cho nên nó sẽ show ra dialog này. Trong trường hợp các bạn chọn Devices là Universal thì sẽ không show dialog này nữa, đối với bài tutorial này mình chỉ làm cho iPhone, nên mình sẽ chọn là Duplicate Only thôi.

AddTarget_02

Bước 3: Và bây giờ bạn đã có 1 target mới tên là SFBuildSettingTutorial  copy, và  bây giờ bạn sẽ làm các bước như sau:

  • Chọn vào danh sách Targets, Ấn Enter để các bạn đổi tên target vừa tạo thành tên bạn muốn đặt (mình đổi tên thành SFBuildSettingTutorialDevelopment)
  • Tiếp theo, các bạn vào Manage Schemes, chọn vào New scheme, và bạn lại ấn Enter để đổi tên scheme hiển thị trên thanh Project Navigator.

AddTarget_03

AddTarget_04

AddTarget_05

AddTarget_06

AddTarget_07

Bước 4: Đây là bước optional, không yêu cầu phải làm bước này, nhưng nếu làm được thì càng tốt và nhìn sẽ rõ ràng phân biệt 2 môi trường.

  • Vào thư mục Asset.xcassets và thêm icon app.
  • Click chuột phải > App Icons & Lanch Images > New iOS App Icon. Thay tên new icon thành AppIcon-Dev và thêm ảnh icon app vào nhé.

AddTarget_08

AddTarget_09

Bước 5: Và bây giờ bạn quay trở lại project settings, chọn môi trường development và thay đổi bundle identifier.

  • Khi bạn tạo thêm môi trường phát triển mới, Xcode sẽ tự động tạo cho bạn file plist tương ứng

AddTarget_10

  • Sau đó bạn mở phần “Build Settings” trong môi trường phát triển, bạn tìm hoặc gõ từ khoá “Packaging” lên công cụ tìm kiếm, và thay đổi cài đặt file plist đó.

AddTarget_11

Bước 6: Tiếp theo bạn cài đặt môi trường phát triển và môi trường thật trong “Build Settings”.

  • Chọn Target Development
  • Bạn gõ từ khoá “Preprocessor Macros” lên thanh tìm kiếm.
  • Thêm từ khoá DEVELOPMENT=1 vào Debug và Release

AddTarget_12

AddTarget_13

  • Tiếp theo bạn thiết lập tương tự và ngược lại đối với môi trường thật, bạn thêm flag DEVELOPMENT=0 là được.

AddTarget_14

  • Đối với dự án code bằng ngôn ngữ Swift bạn phải thêm Flag -DDEVELOPMENT vào nữa nhé ^^

swift-compiler-flag

Chú ý: Khi bạn muốn thêm class mới, thì bạn phải copy class đó cho cả 2 target nhé!

AddTarget_15

AddTarget_16

Bước 7: Vậy là bạn đã hoàn thiện việc tạo và cài đặt môi trường phát triển và môi trường thật cho ứng dụng của bạn rồi. Cuối cùng bạn muốn sử dụng nó thì bạn tạo 1 class tên là Utilities hoặc Marco để configure những cái cần configure giữa các môi trường. Dưới đây là 1 đoạn code example các bạn có thể tham khảo và biết được mục địch và cách sử dụng của bài tutorial này:

#if DEVELOPMENT //Key mình vừa configure ở bước 6 trong Build Settings nhé^^
#define SERVER_URL @"http://dev.steadfast-inc.com/api/"
#define API_TOKEN @"Chj3uBu0nT0kyo"
#else
#define SERVER_URL @"http://prod.steadfast-inc.com/api/"
#define API_TOKEN @"Chj3uBu0nT0kyoB0yDepZaj"
#endif

Ngoài ra, 1 cái cần chú ý nữa trong bài hướng dẫn này, trong trường hợp bạn sử dụng Pods thì bạn cũng phải link đến đủ các target cho môi trường phát triển và môi trường product nhé. Dưới đây là 1 ví dụ cụ thể:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '7.0'
workspace 'SFBuildSettingTutorial'
link_with 'SFBuildSettingTutorial', 'SFBuildSettingTutorialDevelopment'
pod 'AFNetworking'
OK! Cám ơn các bạn đã đọc bài hướng dẫn của mình, rất mong nhận được phản hồi của các bạn!
Thanks & BR,
Tái bút: Chiều buồn Tokyo 10-04-2017
2018-05-15T08:08:56+00:00