Build iOS12.2 application with Xcode 10.2.1 on High Sierra mac

投稿者: | 2019年4月22日

Build an iOS12.2 application with Xcode 10.2 on High Sierra

I am using NVIDIA GPU for Machine Learning on old Mac Pro 2010. However if I update my mac to Mojave, no NVIDIA driver is available for the present.

But I want use the Mac for the latest iOS development, and Xcode 10.2+ on my High Sierra mac. I found a way to use Xcode 10.2.1 on High Sierra. I’d like to share the way.

You need a developper account for download Xcode 10.2.1. You can find it at the link More Downloads for Apple Developers.

After download it, change the directory name for Xcode 10.1 to Xcode10.1 etc.

You need to modify three info.plist wtih Xcode 10.1. They are in the following folders.

  1. /Volumes/your system drive/Applications/Xcode.app/Contents
  2. /Volumes/your system drive/Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/Contents/
  3. /Volumes/RAIDZero/Applications/Xcode.app/Contents/Applications/FileMerge.app/Contents

They all have ‘Minimum system version,’ each value is 10.14.3 or 10.4(for Simulator). Modify them to 10.13.6 or 10.3(for simulator).

Then boot the Xcode 10.2.1. You will be asked to download other tools. Of course, do that.

You have some iOS projects can be used for a test. Check if the project target version can be up to 12.2. Build the project and run it on a simulator.

When finished checking if the project work on the simulator, check the version of the simulator’s verision is 12.2.

Then connect your iOS device to your High Sierra mac, choose the device as the target for build. And check the project works properly.

In my environment, iPhone 5s with iOS 12.2 works well.

I don’t know whether Apple will accept the app built with High Sierra mac. If not, you need a Mojeva mac to pass.

I wrote this way on the Stack Overflow as Tripod.

コメントを残す

High SierraでXcode 10.3を動かしiOS12.4のアプリを実行する

投稿者: | 2019年4月22日

Xcode 10.3をHigh Sierraで動かす

これまでに10.2を動かしてきた方法と全く同じ方法で10.3も動くことを確認したので更新しておく。

古いMac Proを使っていてNVIDIAのグラボを載せている場合、MojaveにアップデートするとドライバーがなくてCUDAなどのGPU機能は使えなくなる。そこでHigh Sierraの利用を続けているのだが、同じマシンでiOSの開発もしたい場合にXcode 10.1ではiOS 12.1までしかビルドできず、最新の12系である12.4.1をターゲットにしてビルドすることはできない。

そこでXcode 10.3をHigh Sierraで動かしたいと言う需要が生まれる。

Xcode 10.3をHigh Sierraで動かすにはXcode 10.3をApp Storeによらずダウンロードしなくてはいけないので開発者登録が必要となる。

準備

Xcode 10.3はMore Downloads for Apple Developersからダウンロードできるが、開発者登録が必要。

デベロッパーアカウントとパスワードを聞かれるので回答すると、一覧が現れるのでそこからXcode 10.3を選んでダウンロードする。ダウンロード後は解凍しておく。フォルダ名はXcodeになっている。

これまで動いていた10.xの名前をXcode10.xなどと改名しておく。(xは1や2)

Xcodeのinfo.plistを改変

Xcode 10.3の方をアプリケーションに移動する。右クリックでコンテクストメニューを出し、「パッケージの内容を表示」で中身を表示させる。info.plistというファイルがあるのでそれを古いバージョンのXcode 10.xで開く。

下の方にMinimum system versionがあり、10.14.3とあるので10.13.6に置き換える。

FileMergeのinfo.plistを改変

同じくContentsの中にApplicationsというフォルダがあるのでその中にFilMargeというフォルダがある。これもXcodeと同様にして開くとまたinfo.plistがあるのでここでも同様にしてMinimum system versionの10.14.3を10.13.6に置き換える。

Developer-Applications-Simulatorのinfo.plistを改変

またContentsに戻ってDeveloperというフォルダ内にあるApplicationsというフォルダがあり、その中のSimulatorフォルダをXcodeと同様に右クリックで中身を表示させる。

やはりContentsフォルダがあり、そこにあるinfo.plistというファイルをこれまでと同様に編集する。今度は10.4を10.3に変更する。

改変後の初回起動

3つのファイルを変更したらXcodeを起動する。追加ファイルのダウンロードを問われるのでその通りにして、起動を続行する。

あとはこれまで用いていたプロジェクトを開いてターゲットが12.4に変更できることを確認する。

プロジェクトをSimulatorで走らせそのバージョンが12.4になっていることを確認する。

できればiOS12.4の実機でも動作を確認する。当方ではiPhone 5s、iPhone 6s plusで動作確認を行ったが問題はなかった。

ただし、すべてのアプリで有効かを確認したわけではないので、実際にAppleへアプリを提出するまでにはMojaveマシンを用意した方が良いかもしれない。

2020年4月からはiOS13へ対応しなくてはいけなくなる(Submit Your iOS Apps to the App Store)らしいので、それまでのつなぎだろう。

High SierraでXcode 10.3を動かしiOS12.4のアプリを実行する」への5件のフィードバック

  1. TOM

    参考にさせて頂きXcode 10.2.1で試したところ、下記のメッセージが表示され
    起動しません。何かしら追加で変更が必要でしたらアドバイスをお願い致します。

    このバージョンのアプリケーション“Xcode”は、このバージョンのmacOSでは使用できません。macOS 10.13.6を使用しています。このアプリケーションを使用するにはmacOS 10.14.6以降が必要です。

    返信
    1. 知新庵亭主 投稿作成者

      コメントありがとうございます。

      Xcodeの起動ですが、Terminal(コンソール)からやるとそのエラーが出るのではと思います。Finderからアイコンをダブルクリックで実行すると問題なく起動するはずですが。お試し頂けるでしょうか?

      gitなどのツールもXcodeのGUI内では動作させられますが、やはりTerminalで実行しようとすると同じエラーが出ます。

      今回のやり方はあくまでもMojaveを使いたくないがiOS12.2プロジェクトのビルドはしたいiOSデベロッパー向けのものですね。特にNVIDIAのグラボを搭載しているとMojaveではDriverがないんですよ・・・。

      返信
      1. 知新庵亭主 投稿作成者

        追加情報

        上記でダメならStack Overflowの方で私の投稿に対するコメントにあった
        sudo xcode-select -s /Applications/Xcode旧バージョン.app/Contents/Developer
        をTerminalで実行してみてはどうでしょう?これではgitなどのコンソールアプリケーションも動作させられ、必要に応じてxcodebuildなどのバージョンを可逆的に変更できます。

        このcommandで新しいXcode 10.2.1かXcode旧バージョン、どちらに設定してもうちではFinder起動したXcodeアプリケーション上でビルドターゲットをiOS12.2にしてご指摘のエラーなしに実機iPhoneで対象プロジェクトをビルド実行できるようです。

        あと、特定のプロジェクト(設定)で出ると言うことが考えられなくはないので、新規プロジェクト作成してビルドするとOKと言う場合もあります。

        いずれにせよTOMさんの設定が分からない段階で考えられるのは上の解決法くらいでしょうか。

        返信
  2. Ash

    xcodebuildもバージョン制限に引っかかるようで最初の使用承諾でひっかかります。これは古いバージョンを先に入れておくとかすると回避できるんでしょうか?あるいはxcodebuildのバージョン制限変更方法があるとか?

    返信
    1. 知新庵亭主 投稿作成者

      コメントありがとうございます。

      基本的にターミナルで行う操作はアウトだと思っていた方がいいでしょう。
      このレシピはあくまでもXcodeのmacOSのウインドウが開くタイプのアプリケーションを「騙す」ためのものです。
      Stack Overflowの方の私(tripod)のコメントに対する応答にあるようにgitなどもターミナルでは動作させられません。(GitHub関連、ウインドウが開くタイプのアプリケーションでは問題ありません。)
      同じ人がコメントしているように
      sudo xcode-select -s /Applications/Xcode-10-1.app/Contents/Developer (インストールディレクトリに依存します。)
      を実行すればターミナル上では旧バージョンのコマンドラインツール類が動作させられます。新しい方へもどすのはディレクトリ、ファイル名を新しい方にしてやればいいです。
      ただiOS12.2向けのプロジェクトを作成、デバイスへインストールする必要がありましたらコマンドラインではなく、ウインドウの開くタイプのアプリケーションでやる必要があるのではと思います。

      以上、よろしくお願いします。

      返信

コメントを残す