iOS

トップに戻る

iOSでビルドしてAppleへ提出するための手順

このページはiOSでビルドしてAppleへ提出するための手順をまとめています。



iOS Developer登録を行う

まずは開発者申請を行います。これはHaxeFlixelを使わなくても同じなので省略します。

証明書を登録し、プロビジョニング・プロファイルを取得する

実機に転送するためには、プロビジョニング・プロファイルの設定が必要となります。 これもHaxeFlixelを使わなくても同じなので省略します。

  1. APP IDの作成
  2. Provisioning Profilesの作成

Project.xmlを設定する

Project.xmlを設定して、iOSの実機に転送するための適切な設定を行います。 特に重要なのは、metaタグのpackage属性です。ここにプロビジョニング・プロファイルに設定したApp IDを指定します。これが正しくないと転送できません

    <!-- packageにはプロビジョニング・プロファイルに設定したApp IDを指定します。これが正しくないと転送できません -->
    <meta title="MyProject" package="jp.2dgames.test" version="1.0.0" company="2dgames.jp" />

    <!-- deploymentには対応するiOSのバージョン -->
    <!-- binariesにはバイナリバージョン。"arm6" / "arm7" / "fat" iPad対応する場合は"arm7"のみ -->
    <!-- devicesには"iphone"または"ipad"または"universal"を指定します -->
    <ios deployment="6" binaries="armv7" devices="iphone" />

    <!-- リンクフラグはなし。アイコン画像に光沢を入れない -->
    <ios linker-flags="" prerendered-icon="false" />

    <!-- 過去のデバイスを高速化するためのおまじない -->
    <window hardware="true" allow-shaders="true" require-shaders="true" if="cpp"/>
    <window vsync="true" antialiasing="4" if="cpp" />

ios deployment (iOSのバージョン) は、64bitでのみ動作する "6" 以降を指定します

スプラッシュ画像とアイコン画像の設定

スプラッシュ画像とアイコン画像は以下のように設定します。 アイコンはSVGを登録すると自動でリサイズして生成してくれます。

    <!--Place custom nodes like icons here (higher priority to override the HaxeFlixel icon)-->
    <launchImage path="icon/Default-568h@2x.png" width="640" height="1136" />
    <launchImage path="icon/Default-Landscape.png" width="1024" height="768" />
    <launchImage path="icon/Default-Landscape@2x.png" width="2048" height="1536" />
    <launchImage path="icon/Default-Portrait.png" width="768" height="1024" />
    <launchImage path="icon/Default-Portrait@2x.png" width="1536" height="2048" />
    <launchImage path="icon/Default.png" width="320" height="480" />
    <launchImage path="icon/Default@2x.png" width="640" height="960" />
    <icon path="icon/Icon-29.png" size="29" />
    <icon path="icon/Icon-29@2x.png" size="58" />
    <icon path="icon/Icon-40.png" size="40" />
    <icon path="icon/Icon-40@2x.png" size="80" />
    <icon path="icon/Icon-50.png" size="50" />
    <icon path="icon/Icon-50@2x.png" size="100" />
    <icon path="icon/Icon-60.png" size="60" />
    <icon path="icon/Icon-60@2x.png" size="120" />
    <icon path="icon/Icon-72.png" size="72" />
    <icon path="icon/Icon-72@2x.png" size="144" />
    <icon path="icon/Icon-76.png" size="76" />
    <icon path="icon/Icon-76@2x.png" size="152" />
    <icon path="icon/Icon.png" size="57" />
    <icon path="icon/Icon@2x.png" size="114" />

ただ、アイコン画像のいくつかが正しく生成されないようで、手動でコピーしてXcodeから手動で修正する必要があります。ひょっとしたらOpenFL / Limeの不具合かもしれません。

アイコン一括生成ツール

ツールを使うと、アイコンを一括生成できます

自作アイコン生成スクリプト

Pythonで書いたアイコン生成スクリプト。ImageMagick?をあらかじめインストールしておく必要があります

必要なスプラッシュ画像の一覧

ディスプレイサイズ(px)画像名(例)
3.5 inch320 x 480Defaults
3.5 inch Retina640 x 960Defaults@2x
4.0 inch Retina640 x 1136Defaults-568h@2x
4.7 inch Retina750 x 1334Defaults-667h@2x
5.5 inch Retina Portrait1242 x 2208Defaults-736h@3x
5.5 inch Retina Landscape2208 x 1242Defaults-Landscape-736h@3x

ビルド

Xcodeがインストールされていれば、以下のコマンドでビルドから実機への転送までをしてくれます。

  $ lime test ios

なおシミュレーターで動作確認したい場合は、「-simulator」オプションをつけた以下のコマンドとなります。

  $ lime test ios -simulator

ビルドがうまくいかない場合

各環境に共通することは以下のページにまとめてあります。

「Signing for "XXX" requires a development team. Select a development team in the project editor.」 というエラーが表示される

ビルド時に以下のエラーメッセージが表示されることがあります。

=== BUILD TARGET Test OF PROJECT Test WITH CONFIGURATION Release ===

Check dependencies
Signing for "Test" requires a development team. Select a development team in the project editor.
Code signing is required for product type 'Application' in SDK 'iOS 10.0'

** BUILD FAILED **

証明書ファイルがうまく認識されていないようなので、Xcodeでプロジェクトファイルを開いて、「Build Settings > Signing > Development Team」から登録した開発者名を選んで、Xcodeからビルドします

実機確認時のよくある問題

BGM再生開始時に画面が停止する

推測ですが、HaxeFlixelはBGMをストリーム再生せず、ファイル全体をメモリに同期ロードするようです。 そのため画面が停止しているような気がします。 これを回避するには事前にキャッシュへ読み込み、再生時にキャッシュから読み込むようにします。

/// Reg.hx

    // BGMをキャッシュする
    public static function cacheMusic():Void {
        FlxG.sound.volume = 1;

        FlxG.sound.cache("001");
        FlxG.sound.cache("002");
        FlxG.sound.cache("003");
    }

    // キャッシュを使ってBGMを再生する
    public static function playMusic(name:String, bLoop:Bool=true):Void {

        // キャッシュからBGM取り出し
        var sound = FlxG.sound.cache(name);
        if(sound != null) {
            // キャッシュがあればキャッシュから再生
            FlxG.sound.playMusic(sound, 1, bLoop);
        }
        else {
            // なければディスクからロードして再生
            FlxG.sound.playMusic(name, 1, bLoop);
        }
    }

アセットデータの読み込みに失敗する。または古いデータを参照してしまう

Xcodeはデータのキャッシュが強力で、ビルドし直してもデータの更新が行われないことがよくあります。ですので、画像データやレベルデータを更新した際には、exportフォルダ以下を一度全削除してからビルドすると、正しく更新されるようになります。 また、下記コマンドでも消去することができます。

lime clean ios

その他何か問題が起きたら

まずは「-simulator」オプションで起動し、iOSシミュレーター上で確認した方がいいです。実機確認と比べてプロジェクトの転送速度が速いですし、標準のログ出力が可能などデバッグする上で有利な点が多いからです。 実機でしか起きない問題は、FlixelDebuggerを使用して変数をウォッチしたりデバッカへのログ出力をします。 それでもわからない場合はXcodeからデバッグします。

申請に必要な情報

必要なスクリーンショット

  • 3.5インチ(iPhone4s) : 640x960
  • 4インチ(iPhone5) : 640x1136
  • 4.7インチ(iPhone6) : 750x1334
  • 5.5インチ(iPhone6 Plus) : 1242x2208
  • iPad : 768x1024など

必要なアイコン

1024x1024 透過なしのPNG画像

電話番号

携帯電話なら、+81 90-XXXX-XXXX

Appleへの提出

Xcodeでのビルド・提出

Appleへの提出はXcodeを起動して行います。プロジェクトファイルは「export > ios > XXXX.xcodeproj」にあります。

ビルドの前にArchive名を修正します。「Product > Scheme > Edit Scheme」を選択します。

submit001.png

Archiveを選択して、Archive Nameを変更します。(プロジェクト名と一致しているのであれば修正は不要です)

submit002.png

そうしたら、「Product > Archive」でビルドを開始します。

submit003.png

ビルドが正常に完了すればOrganizerが起動します。

submit004.png

表示されている情報に問題がなければ「Validate」を選択します。

プロビジョニングファイルの名前の確認が出ますので、問題なければ「Choose」を選択します。

submit005.png

Summaryが表示されるので問題なければ「validate」を押します。

submit006.png

しばらくして問題がなければ「Validation Successful」と表示されるので、「Done」を選びます。 すると再びOrganizerが表示されるので、「Submit」を選択します。

submit007.png

Submitに成功すると以下の画面が表示されます。そうしたら「Done」を押して終了します。

submit008.png

再び iTunes Connect

提出はこれで完了ではなく、まだ iTunes Connect での作業が必要となります。 アプリケーションのページのレーティングの下あたりにある「ビルド」の隣にある+をクリックします。

submit009.png

「ビルドの追加」が表示されるので、Submitしたアプリを選択して、「終了」ボタンを押します。すると登録が完了します。

submit010.png

これでようやく「レビュー審査のために送信」を選ぶことができます。

submit011.png

「レビュー審査のために送信」では以下の項目が表示されるので、適切に選択をします。

項目説明
輸出コンプライアンスSSL通信を使うかどうか
コンテンツ配信権第三者が有する版権コンテンツを使用するかどうか
Advertising Identifier広告の識別子を使うかどうか

基本的にすべて「いいえ」となることが多いですが、念のため以下のページを読んでおくといいと思います。

アプリページに以下のように「レビュー待ち」と表示されれば提出完了です。レビューが通れば無事配信となります。

submit012.png

リジェクト対応

3.3: Apps with names, descriptions, screenshots, or previews not relevant to the content and functionality of the App will be rejected (アプリの内容や機能に関係ない説明を含むアプリはリジェクト)

ゲーム画面のスクリーンショットに説明を何も入れなかったらリジェクトされました。スクリーンショットがゲームの内容を全く説明していないものだと、この理由でリジェクトされるみたいです。

リジェクト理由まとめ

このページが良くまとまっています

その他

アプリへのリンクバナー生成ツール