サーバーサイドでasファイルをコンパイルしてswfに(その3自動化編)

adlコマンドを使用する際、パスワードが聞かれるのでこれを自動化します。
expectコマンドが大変便利です。
インストールされてない場合はこちら

yum install expect

下記シェルは ps.sh にて作成保存

#!/usr/bin/expect
set timeout 10
spawn /root/flex/bin/adt -package -target apk -storetype pkcs12 -keystore newcert.p12 -keypass yourpassword ./airTest.apk ./airTest-app.xml ./airTest.swf
expect "password: "
send "yourpassword\n"
interact

シェルに実行権限を与える

chomd +x ps.sh

実行する

$ ./ps.sh

何秒か待つとapkファイルが出来上がります。
あとはPHPプログラムと連携をして画像を差し替えるなどの作業をすれば、動的にapkファイルが作成可能となります。

サーバーサイドでasファイルをコンパイルしてswfに(その2アプリファイル作成編)

mxmlcなどを使ってサーバーにあるmxmlファイルをAndroidアプリに変換します。
個人的には一旦FlashBuilderなどでアプリを作っておくのが簡単かなっと思います。
FlexSDKのダウンロードとインストール

$ mkdir flexsdk
$ cd flexsdk
$ wget http://download.macromedia.com/pub/flex/sdk/flex_sdk_4.6.zip
$ unzip flex_sdk_4.6.zip

AIR SDK 2.6 のダウンローとインストール

$ mkdir airsdk
$ cd airsdk
$ wget http://airdownload.adobe.com/air/lin/download/2.6/AdobeAIRSDK.tbz2
$ tar -xvf AdobeAIRSDK.tbz2
$ cp -r temp/bin/adl flex_sdk_4.5.1_with_air/bin/

javaのインストール

$ yum install java

まずは簡単にswfファイルの作成
AIR SDKの都合上、swfのバージョンを12にしておきます。

$ mxmlc +configname=airmobile MyMobileApp.mxml -swf-version=12

こちらもAIR SDKの都合上、MyMobileApp-app.mxmlのnamespaceのバージョンを2.6にして書き換えておきます。

<application xmlns="http://ns.adobe.com/air/application/3.3">
↓
<application xmlns="http://ns.adobe.com/air/application/2.7">

アプリの証明書の作成

$ adt -certificate -cn SelfSign -ou QE -o "Example" -c US 2048-RSA newcert.p12 password

次にAndroidアプリ用にパッケージ化

$ adt -package -target apk -storetype pkcs12 -keystore newcert.p12 -keypass password MyMobileApp.apk MyMobileApp-app.xml MyMobileApp.swf

ここでapkパッケージ作成のエラーが出る場合は下記処理を行います(これが結構めんどい)
Android SDK のダウンロードとアップデート
Android SDK | Android Developers より Linux用のAndroidSDKをダウンロードし、解凍をする。

$ wget http://dl.google.com/android/android-sdk_r20.0.3-linux.tgz
$ tar zxvf android-sdk_r20.0.3-linux.tgz
$ cd android-sdk-linux/tools
$ ./android update sdk -u

ダウンロードされるplatform-toolsの中身を flex_sdk_4.6/lib/android/binにコピーする

$ cp android-sdk/platform-tools/* flex_sdk_4.6/lib/android/bin/

再度、adt コマンドを打てばOK

$ adt -package -target apk -storetype pkcs12 -keystore newcert.p12 -keypass password MyMobileApp.apk MyMobileApp-app.xml MyMobileApp.swf