サーバーサイドで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
$ 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
参考リンク
- Android SDK | Android Developers
- Packaging for android on linux using flex sdk 4.6 gives "aapt: cannot execute binary file"
- Linuxサーバ上でAndroidアプリをビルドしてみる | C.A.Mobile Engineers'Blog
- Versioning in Flash Runtime (-swf-version) « AIR-o-Dynamics
- Archived Adobe AIR SDK version
- Adobe Flex 4.6 * コマンドラインを使用した作成、テスト、デプロイ
- How to set up Flex 4.5 SDK with Air 2.6 on Linux using FDT | zoltanb.co.uk