2012年8月27日月曜日

AIRアプリケーションのAPK変換と実機へのインストール

FlashDevelop+AIRSDK+FlexSDKなどのフリーウェア環境の場合、AIRアプリケーションのAPK変換と実機へのインストールなどは、FlashStudioなどの製品を使うより少しわかりにくいです。
しかしだからといってものすごく不便だ、というものではないと思います。

PackageAssistantなどのパッケージソフトを使うとGUI操作なので簡単なわけなのですが、AIR2.5でしか使えないので、今となっては最新のAIRSDKを使うためにはコマンドラインでやらねばなりません。
AIR2.5では画面の回転などでまだ未整備なところがあるとのことで、もちろん現在のAIR3.4ともなればその辺は整備されているようです、ってだいぶ古い話ですが・・・。

ちなみにコマンドラインは解説がわかりにくかったけど、一度通せばあとは毎回やること同じなので、とくに便利ではないが不便でもないです。
ひとまず生成物は、同じディレクトリに集まっているほうが文が短くてやりやすいと思います。


それではひとまず、基本のツールを確認します。
AIR-SDKに含まれているADL、ADT、ADB、そしてJava関係のJREまたはJDK(1.5 以降)です。
名前が似ていたりしてわかりにくく、ほかにも似た名前のツールがいろいろあってイライラします。
  • ADL(AIR Debug Launcher) AIRアプリケーションを実行します。
  • ADT(AIR Development Tool) AIR アプリケーションをパッケージ化、インストールなどする。 
  • ADB(Android Debug Bridge) AIR2.6以降ではAIRSDKに含まれている。 
  • JRE(Java Runtime Edition) Javaを動かすのに必要。エンドユーザー向け版。 
  • JDK(Java Development Kit) 同じくJavaを動かすのに必要、Java開発者向け版。 

さて、これらのツールで本体を作成しましたら(これが一番圧倒的に長いけど)、Android向けに仕立てましょう。


【カレント・ディレクトリ】
ではひとまず、swfのあるディレクトリをカレント・ディレクトリとして移動しましょう。
cd currentDirPath

【証明書の作成】
そして証明書を作成しますが、カレント・ディレクトリにp12証明書ファイルができます。
adt -certificate -cn SelfSigned 1024-RSA selfcert.p12 password
さらっと書いてありますが1024-RSAより2048-RSAのほうが強力な暗号なんだそうです。
とりあえず自分でテストするにはこれでいいと思いますが、弱い証明書を使っていると、アプリを改ざんされたりすることがあります。(つまり、成りすましたアプリを作成される恐れがある。)

【swfをapkに変換】
swfをapkに変換します、アイコンは規定の名前(icons\icon_72.png)にしておくと勝手に付きますので、それがいいと思います。
adt -package -target apk -storetype pkcs12 -keystore selfcert.p12 myApp.apk application.xml myApp.swf icons
実行すると"password:"と表示されますので、証明書のパスワードを打ち込みます、けれど文字は表示されませんので、それは気にしないでEnterします。ここはちょっと面倒ですね。

【apkを端末にインストール】
apkを端末にインストールします。
adb install myApp.apk
ちなみに、既に同じアプリケーションがインストールされている場合は、上書きでインストールしないとインストールに失敗します。上書きする場合は-rオプションをつけて
adb install -r myApp.apk
です。
あるいはINSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES エラーが出ることがあります。
これはAIR-SDKのADTを使ってAndroid端末にアプリをインストールしたときに出るエラーです。 このエラーは同じ(名前の?)アプリなのに、違う証明書を使っている場合に、不正なアプリがインストールされるのを防ぎます。この場合は既にインストールされているアプリを実機でアンインストールした後、あらためてインストールすれば大丈夫のはずです。


--- それはそうと、GooglePlayにおけるAIRの評価を見ると、直近のレビューにおいても、Flashとは違って開発者以外にはAIRの認知度がとても低いのがわかります。 それはおそらくAIRを使用したAIRアプリケーションがまだとても少ないためだと思います。

制作・©:のぼる/N.Lab