Xcode環境隔離例


Xcode環境隔離例


n/a.結論


ターゲットを2つに分け、各Info.plistを利用して、異なる環境で動作させます.
プロジェクトファイルの場所:https://github.com/kipsong133/TIL/tree/main/2022/04/05

概要


実際の本番チームでは、アプリケーションは1つのターゲットのみで構成されません.名前はいろいろあるかもしれませんが、脈絡は同じはずです.「ローカル/開発/統合/QA(またはRC=Release Candidate)/インストール/生産」に分けられます.△区分の基準は柔軟であるべきだと思います.これにより、プロジェクトを別々に管理できます.これにより、現在商用化されているアプリケーションに影響を与えることなく、アプリケーションを簡単に同時に開発できます.これを「開発環境分離」と呼ぶ.
開発環境分離とは、アプリケーションが実行する「環境」のことです.もしそうなら、なぜ開発環境を分離するのですか?
なぜなら、「ターゲットとなる環境を作成する」からです.各ステップの詳細については、次の文書を参照してください.
  • 開発環境分離記述1:https://jungseob86.tistory.com/112
  • 開発環境分離説明文2:https://bcho.tistory.com/7592
  • iOS Tutorial : https://cocoacasts.com/tips-and-tricks-managing-build-configurations-in-xocde
  • 背景知識


    Target


    文書:https://developer.apple.com/library/archive/featuredarticles/XcodeConcepts/Concept-Targets.html

    Targetは構築する製品を選択します.構築時に、どのように構築するかを選択し、設定に使用するリソースとリソースを持つことができます.(ex.Asset/Xib/Info.plist/swaftファイル)ターゲット:product=1:1関係.また、Project:Target=1:N関係です.まとめてみると、一つのプロジェクトには複数の目標があり、生産の目標数は複数である.
    ターゲットは他のターゲットに依存できます.(1つの従属者を表す)Xcodeは、2つのターゲットの従属関係を決定し、順番に構築します.この関係を「暗黙的従属関係」と呼ぶ.また、カスタマイズされた方法で依存しないことを確認することもできます.
    以下にまとめる.
  • Targetは、構築時にどのように構築された製品です.
  • ターゲットは、別のターゲットと依存関係がある可能性があります.
  • のターゲットは製品です.
  • インプリメンテーション


    まず、プロジェクト
  • を作成し、次に示すようにターゲットをコピーします.
  • だと色々あります
  • で名前が変更されました.(クリックしてタッチします.)

  • ターゲットが
  • バージョンの環境にコピーされていることを確認します.「Manage Schemes」をクリックします.
  • に入るとそうなるはずです.
  • の名前を変更しないで、2つのターゲットを削除して再作成してください.
  • は現在Infoです.plistの名前を変更してください.
  • Info.plistの場所を変更したり、名前を変更したりすると、「構築設定」>「パッケージ」で値の変更が強制されます.あそこへ行きましょう.
  • と開発情報.plistの名前も変えましょう(フォルダパスは、フォルダの熱によって異なる場合があります.以前は、フォルダの熱パスがトップレベルであったため、'/'はありませんでした.)
  • の前処理文でターゲットを確認する場合は、次の設定を行います.
  • SceneDelegateで次のコードを作成し、ログを印刷してみます(上がなければ表示されません)
  • .
        func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
            #if Dev
                print("현재 개발 타겟입니다.")
            #else
                print("현재 제품 타겟입니다.")
            #endif
            
            guard let _ = (scene as? UIWindowScene) else { return }
        }

  • ライブラリをインストールする場合は、必ず新しく作成したターゲットに追加してください.
    (場所:プロジェクト>ターゲット>新規ターゲット>General>Frameworks、Library、Embedded Content)

  • Snapkitを追加しました
    また、名前
  • を変更したい場合は、すぐに名前を変更するか、ここで名前を変更できます.

  • また、SWIFTファイルをプロジェクトに追加すると、cannot findエラーが発生する可能性があります.次の記事を参照してください.
    https://www.zehye.kr/ios/2021/09/03/iOS_target_membership/

    参考資料

  • https://cocoacasts.com/tips-and-tricks-managing-build-configurations-in-xocde
  • https://vapor3965.tistory.com/97
  • https://leechanho.tistory.com/48
  • https://jungseob86.tistory.com/11
  • https://hongdonghyun.github.io/2020/06/iOS-環境変数-分離/
  • https://xtring-dev.tistory.com/entry/iOS-Xcode-Pro-に示すように-環境を構築-設定
  • https://developer.apple.com/library/archive/featuredarticles/XcodeConcepts/Concept-Targets.html