iPhoneアプリとAndroidアプリ両方同時に更新して、アプリインストールもなく即テストする方法
VAIO Zにしたら、なぜかFlashからUSB接続経由でiPhoneにアプリのipaを転送できなくなってしまったので、swfローダーアプリ作りました。これでswfさえサーバーにアップすれば、誰でもすぐ最新版のテストができます。使い方はサーバー側のswfが更新されたらアプリを再起動するだけ。最初の1回しかインストールの手間がかからないので、毎回つないでインストールや、TestFlight周知して頑張るより圧倒的に手軽ですw iPhone版とAndroid版が両方同時にワンタッチで更新できます。さらにaneさえ同じなら、別アプリのテストもできます。特にAndroidはaneがあるとパブリッシュ&転送に、開発者本人ですらなぜか毎回数分かかったりするので、それが10秒くらいになるのはデカいと思います。
ポイントは母体となるアプリに必要なaneを入れておく点と、iOSの場合はインタープリターモードでipaを書き出す点と、下記の1行です。これで外部SWFのASも動くようになります。
loaderContext.applicationDomain = ApplicationDomain.currentDomain
aneのクラスをダミークラスにして記述しておけば、PCブラウザからもアプリの確認ができて、さらに心強くなる予感。
テストラッシュが済んだら、本番用のアプリに書き出して、最終テストしてリリース。
サンプルソース(sample source)
var _TARGET_SWF_PATH:String = "http://hoge.hoge/hoge.swf";//plz change your swf var _so:SharedObject = SharedObject.getLocal("LoadTest", "/"); startLoad(); function startLoad():void{ /* if(_so.data.swfBin){ loadSwfBin(_so.data.swfBin);//optional(avoid reload) }else{*/ loadFile(_TARGET_SWF_PATH); // } } function loadFile(url:String):void { var urlLoader:URLLoader = new URLLoader(); urlLoader.dataFormat = URLLoaderDataFormat.BINARY; urlLoader.addEventListener(Event.COMPLETE, onCompleteURLLoad); var urlReq:URLRequest = new URLRequest(url); urlLoader.load(urlReq); } function onCompleteURLLoad(evt:Event):void { var bytes:ByteArray = _so.data.swfBin = URLLoader( evt.target ).data; _so.flush(); loadSwfBin(bytes); } function loadSwfBin(bytes:ByteArray):void{ var loaderContext:LoaderContext = new LoaderContext(); loaderContext.allowCodeImport = true; loaderContext.applicationDomain = ApplicationDomain.currentDomain;// new ApplicationDomain(); loaderContext.allowLoadBytesCodeExecution = true; var loader:Loader = new Loader(); loader.loadBytes( bytes, loaderContext ); addChild(loader);