[AIR16.0] AIR for iOS でハマったこと (1)

AIR for iOS アプリ を iPad Air 2 (iOS 8.3) にインストールしようとして、ハマったことをメモしておくね。 :bouzu:

AIR SDK 16.0.0.292 [ASC2.0] を使ったよ。 :boy:

loader_iOS_case1

:caution: 要 Flash Player 11.8 以上

次のような構造にして、app.swf を loader.swf に読み込む。

loader_iOS_case1_error

Main.as (loader.swf)
package {

  import flash.display.Sprite;
  import flash.display.Loader;
  import flash.display.LoaderInfo;
  import flash.net.URLRequest;
  import flash.events.Event;

  import controls.Btn;

  [SWF(backgroundColor="#FFFFFF", width="600", height="800", frameRate="30")]

  public class Main extends Sprite {
    // プロパティ
    private var container:Sprite;
    private var controller:Sprite;
    private var button:Btn;
    private var loader:Loader;
    private static var filePath:String = "contents/app.swf";

    // コンストラクタ
    public function Main() {
      init();
    }

    // メソッド
    private function init():void {
      container = new Sprite();
      addChild(container);
      controller = new Sprite();
      addChild(controller);
      controller.y = 720;
      button = new Btn();
      controller.addChild(button);
      button.addEventListener(MouseEvent.CLICK, click, false, 0, true);
      loader = new Loader();
    }
    private function click(evt:MouseEvent):void {
      loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded, false, 0, true);
      try {
        loader.load(new URLRequest(filePath));
      } catch (err:Error) {
        trace(err.message);
      }
    }
    private function loaded(evt:Event):void {
      loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, loaded);
      container.addChild(Sprite(evt.target.content));
    }

  }

}

これで、ちゃんと app.swf が読み込めている。

そこで、loader.swf を loader.ipa にビルドして、インストールしてみようと思う。

Terminal を起動して、
$ cd /Users/****/development
$ ./bin/adt -package -target ipa-ad-hoc -useLegacyAOT no -storetype pkcs12 -keystore ios_distribution.p12 -storepass **** -provisioning-profile Distribution.mobileprovision loader.ipa loader-app.xml loader.swf contents icons
$ ./bin/adt -installApp -platform ios -package loader.ipa
と入力する。

楽勝♪と油断していたら、見たことのないエラーが! 😮
Installation Error: MissingBundleIdentifier.


いろいろ試してみた結果、どうやら「contents」というフォルダ名が良くないみたいなので、「assets」に変えて試してみる。

loader_iOS_case1_success

Terminal を起動して、
$ cd /Users/****/development
$ ./bin/adt -package -target ipa-ad-hoc -useLegacyAOT no -storetype pkcs12 -keystore ios_distribution.p12 -storepass **** -provisioning-profile Distribution.mobileprovision loader.ipa loader-app.xml loader.swf assets icons
$ ./bin/adt -installApp -platform ios -package loader.ipa
と入力する。

やったー!インストールでけた! :sun:

こんな情報、どこにあるねん。(╯°□°)╯