Swift 2.2で構築されたiOSアプリがあり、最近問題が発生しました。 Xcodeを使ってアプリケーションを停止した後、電話機(実際のデバイスとシミュレータの両方)から直接開こうとすると、最初のView Controllerをロードする前にクラッシュします。AppDelegateのNSProcessInfo.processInfo()。環境にアクセスすると、Xcode以外のiOSアプリを開くときにクラッシュする
私はクラッシュログをsymbolicateすることができたとThread 0 Crashed
内の最初の行が含まれています。私はAppDelegate内側の線で
0x001aa754 specialized AppDelegate.application(UIApplication, didFinishLaunchingWithOptions : [NSObject : AnyObject]?) -> Bool (AppDelegate.swift:417)
を:
let buildFor = NSProcessInfo.processInfo().environment["BUILD_FOR"]! as String
私はそれが原因であることが確認されましたその行をコメントアウトしてそれをlet buildFor = "DEV"
に置き換えた後で、Xcodeで閉じても問題なくホーム画面からアプリを開くことができたのでクラッシュします。
私は2つのスキームを持っていますが、1つはであり、もう1つはPROD
です。 Xcode経由で実行されているが、デバイス/シミュレータからは実行されていない場合、その値は何になるのですか。どのように変更できますか?この環境変数は、複数の場所(主にAppDelegate)で使用され、運用サーバーまたは開発サーバー用に、またサードパーティサービスに適切なAPIキーを使用して、使用するURLを決定します。 TestFlightビルドの場合はDEV
、App Storeの場合はPROD
に設定します。
Xcode以外の実行の環境変数はどのように設定していますか? (スキーム内のものは、Xcodeで動作している間のみ有効です;彼らは決してアプリケーションに焼かれません) –
私は非Xcodeの実行のためにそれらを設定していません。これは問題の可能性があります。どのように私はそれらを設定するはずですか? –
ここで4つまたは5つの方法の議論があります:http://stackoverflow.com/questions/603785/environment-variables-in-mac-os-x/4567308#4567308 –