Android/iOS向けテストアプリ配信ツール 「EMLauncher」を公開しました
先日、TestFlightのAndroidサポート終了、Appleによる買収といったニュースが世間を騒がせましたが、皆さんテストアプリの配信はどうしていますか?
KLabでは自社製のテストアプリ配信ツール「EMLauncher」を使用しているのですが、せっかくなのでOSSとして公開することにしました。
今すぐ試す
今すぐ試したい方のために、セットアップ済みのAWS EC2イメージを用意しました。
インスタンスを起動後、設定ファイルのAWSアカウント情報を編集し、S3のバケットを作成してください。
(設定の詳細はconfigディレクトリのサンプルをご覧ください)
/home/ohoflight/emlauncher/config/emlauncher_config.php ---- (略) /** AWSの設定 */ 'aws' => array( /** * APIアクセスのためのKeyとSecret. */ 'key' => 'xxxxxxxx', 'secret' => 'xxxxxxxx', /** S3のRegion. */ 'region' => Aws\Common\Enum\Region::TOKYO, /** S3のbucket名. 予め作成しておく. */ 'bucket_name' => 'emlauncher', ), ), (略)
設定を終えたらそのインスタンスにwebブラウザでアクセスしてください。ログインページが表示されます。
初期状態ではメールアドレス"test@example.com", パスワード"test"でログインできます。
特徴
どこからでもアクセス可能なwebアプリケーション
専用アプリをインストールすることなく、ブラウザでアクセスするだけでどんな端末からもすぐに使えます。
iOSアプリのOTA(Over The Air)配信にも対応していますし、PCからアクセスすれば apk/ipa ファイルをダウンロードできます。
ただ、TestFlightやDeployGateと違い、端末の詳細な情報やクラッシュレポートは取得できません。
EC2+S3のシンプルな構成
EC2のインスタンス1台とS3のバケット1つで動作します。
KLabではマイクロインスタンス1台で運用していますが、比較的安定して動いています。
Google OAuthによるログイン
KLabではGoogle Appsを利用しており、全社員が独自ドメインのgoogleアカウントをもっています。
このアカウントをログインに利用することで、面倒なユーザ管理をなくしました。
なおKLabでは無効にしていますが、メールアドレスとパスワードによる認証も実装してあります。
TestFlightライクなアップロードAPI
apk/ipaファイルのアップロードはブラウザからだけでなく、TestFlightライクなAPIも用意してあります。
さらにJenkinsプラグインも用意したので、ビルドプロセスに簡単に組み込めます。
それではよりよいアプリ開発ライフを!
(3/11追記) iOS 7.1へのOTAインストールについて
iOS 7.1へのipaのOTAインストールにはSSL通信が必須となりました。
サンプルAMIを利用する場合は、信頼できるSSLサーバ証明書を設置した上で次の設定をしてください。
- セキュリティグループでHTTPSの接続を許可
emlauncher_config.php
でenable_https
の設定を変更$emlauncher_config['ec2']['enable_https'] = true;
なお、自己署名証明書は利用できません。ご注意ください。
トラックバックURL
この記事へのコメント
とても有用なツール公開感謝しています。
iOSアプリのダウンロードですが、ipaをiPhoneかせダウンロードしようとするとダウンロード失敗となってしまい、何が原因か探すのに困っています。
・Direct Install URLがhttpから始まっているのが気になります。私がOTAでインストールする方法はitms-services://ではじまるものと思っていました。今はhttp経由でもインストールできるのでしょうか?
(同じipaを、自分でitms-services://を使ったインストールは成功しました。)
・iPhoneからアクセスするURLはトップページ以外の違う場所からログインするのでしょうか?
・AndroidのAPKは正常にダウンロードできました。
・環境はテスト公開されているAMIをそのまま使用しました。
・iPhoneのバージョンは iOS 7.0.6です
先日の書き込みの件、理由がわかりました。
実際にはiPod Touch5genを使っていて、このときiOS7.0.6のユーザエージェントは 〜「iPod Touch;」 〜 と「iPod;」から変化していたため、この環境だとiOS機種として認識していないのが原因でした。
該当の箇所のソースコードにこのユーザエージェントを追加して無事、インストールができることを確認できました。
こちらで再現できず頭を抱えてたところでした。
ユーザエージェントの判定を早速修正させていただきます。
ありがとうございました。
New applicationの登録時に、「AccessDenied」エラーが発生し、登録ができません。
S3用のAPIキー、シークレットキーは正しいものを設定ファイルに書いてあることは確認済みです。
※AWS CLIからはS3へのアップロードは成功しているのでキーが間違っているのは考えにくいです。
ご助言いただけないでしょうか?
AWSのキー情報のほか、S3のbucket名は確認されましたでしょうか?
もし新たなbucketを作成してconfigにも設定しているのにエラーとなるようでしたら、
エラーログ(/var/log/httpd/error_log)を提供いただけないでしょうか。
よろしくお願いします。
AWS周りについて不慣れな面が否めないのですが、私もコメントNo.4のpanzyさんと同様の状況に陥っておりまして、対処法をご教示頂けますと幸いです。
httpdのログを確認したところ、「initializing action failed: top/index」との記録がございました。
何卒宜しくお願い申し上げます。
emlauncher_config.php の AWSのキー情報とbucket名を確認してみてください。
特にbucket名は、お使いのアカウントで予めbucketを作成しておく必要があります。
また、エラーログの「initializing action failed: top/index」は、ログインしていないユーザがアクセスしてきた時に出ているものだと思われます。
・AWSキー情報
・Bucket作成
・Bucket名設定
上記各点再確認致しましたが、環境通りに設定済みで問題ございませんでした。
他にもお心当たりがございましたらご教示頂けますと幸いです。
宜しくお願い致します。
そのユーザのS3へのアクセス権限は確認されましたか?
手元で試したところ、S3へのアクセス権限を無くしたらAccessDeniedエラーとなりました。
最終的に、公開頂いているAMIで無事に動作確認をすることができました。度々フォロー頂きありがとうございました。