1

私はXcodeに少し問題があり、誰かがこれを巧妙な方法で解決したかどうか疑問に思っていましたか?

シナリオ:

  • iOSアプリに取り組んでいる2人の開発者。
  • GitHubでホストされている単一のXcodeプロジェクト。
  • Debug、TestFlight、Releaseの3つの構成があります。
  • 少なくともリリースバージョンでは、WebサービスAPIのホスト名をアプリにコンパイルする必要があります。

私はこのようなコードをAPIラッパーに入れています:

#ifdef CONFIGURATION_Debug
   static NSString * const kAPIBaseURLString = @"http://10.10.10.41:8080/api";
#elif CONFIGURATION_TestFlight
   static NSString *const kAPIBaseURLString = @"http://9.9.9.9.eu-west1.compute.amazonaws.com:8080/api";
#elif CONFIGURATION_Release
   static NSString * const kAPIBaseURLString = @"http://some.production.server";
#else
   static NSString * const kAPIBaseURLString = @"http://error-crazy-configuration-must-be-set-in-xcode";
#endif

これはすべてうまく機能しますが、文字列について開発者間でGitの戦いがありDEBUGます。それぞれが独自の開発ラボを指しており、ファイルは常に1つのアドレスまたは次のアドレスとしてチェックインされています。その痛み。

このクラスでは重要なコードが定期的に変更されるため、gitの「assume-nochanges」は必要ありません。

ホスト名を引数として渡すことを考えましたが、それによってgitが認識するプロジェクト構造も変更されます。

Xcodeやgitをひねりを加えずにホスト名を設定できるようにする方法についての頭脳はありますか?

4

2 に答える 2

3

Xcodeでスキームを使用します。実行構成の場合、環境変数を追加します。

APIBASEURLSTRING http://10.10.10.41:8080/api

リリース構成の場合、同じ環境変数を追加します。

APIBASEURLSTRING http://some.production.server

...および残りのビルド構成のetceteraetcetera。

[スキームの管理]で、[共有]チェックボックスがオフになっていることを確認します。

コードで、次を使用して環境変数にアクセスします。

baseUrlString = [[[NSProcessInfo processInfo] environment] objectForKey:@"APIBASEURLSTRING"];

共有スキームを使用していない限り、すべてのユーザーが独自の環境変数/カスタムエンドポイントを設定できます。

于 2012-10-11T10:58:22.973 に答える
1

IPアドレスではなく名前を使用してください。

/etc/hosts開発者#1のファイルには、次のエントリが含まれています。

10.10.10.4     mydevserver

そして、/etc/hosts開発者#2のファイルには次のエントリが含まれています。

192.168.0.66   mydevserver

そして、次のように設定CONFIGURATION_Debugします。

#ifdef CONFIGURATION_Debug
   static NSString * const kAPIBaseURLString = @"http://mydevserver:8080/api";
....
于 2012-10-11T11:02:36.280 に答える