Xcode6の1つのプロジェクトから、開発版とリリース版の2つのアプリを作りたい、と思います。
開発版とリリース版で変えたいポイント
開発上必要
- APIのURL
開発の時にフィードバックをもらいやすくする
- アプリのアイコン
- アプリの名前
- アプリで常に開発版なのか?を表示する
Xcode プロジェクトのターゲット管理
開発版とリリース版でプロジェクトを分ける
APIのURL
サーバーサイドが必要なアプリだとURLを開発用途で別に作っているハズ。
定数として色々と環境によって変更したい、というのもあります。
定数のclass
定数を設定するclassを用意します。
定数を設定するいい方法があるかもしれないんですが、今回はとりあえず。
Constants.swift
import Foundation
class Constants:NSObject {
#if DEBUG
let MESSEAGE = "こんにちは(開発中です)"
#else
let MESSEAGE = "こんにちは"
#endif
}
ViewController
設定した定数を呼び出します。
ViewController
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var LabelMessage: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
LabelMessage.text = Constants().MESSEAGE
println(Constants().MESSEAGE)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
if debug の設定
「#if DEBUG」と書いて分岐したので、DEBUGであることを指定します。
複製したターゲット毎に設定します
TARGETS > Build Settings > Swift Compiler - Custom Flags > Other Swift Flags
-D DEBUG
アプリのアイコン
App Icons Source を指定します。
アプリの名前
ターゲット毎のInfo.plistにある「Bundle display name」が表示されるアプリの名前になります。
アプリで常に開発版なのか?を表示する
画面の下部に「開発版」であることを表示するようにしてみます。
アプリによっては、書き換えが必要になると思います。そこは、よしなに。
AppDelegate.swift
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
let splitViewController = self.window!.rootViewController as ViewController
let size = CGSize(width: splitViewController.view.frame.size.width, height: 50)
let postion:CGPoint = CGPoint(x: 0, y: splitViewController.view.frame.size.height-50.0)
let view:UIView = UIView(frame: CGRect(origin: postion, size: size))
# if DEBUG
view.backgroundColor = UIColor(red: 255, green: 0.0, blue: 0.0, alpha: 0.5)
# else
view.backgroundColor = UIColor(red: 138, green: 138, blue:0, alpha: 1)
# endif
let devInfoLabel = UILabel()
devInfoLabel.text = "開発版:" + Constants().MESSEAGE
devInfoLabel.font = UIFont.systemFontOfSize(14)
devInfoLabel.frame = CGRect(origin: CGPoint(x: 10, y: splitViewController.view.frame.size.height-50.0), size: size)
splitViewController.view.addSubview(view)
splitViewController.view.addSubview(devInfoLabel)
return true
}