appetize.io という、Web上でネイティブアプリを動かせるサービスがある。一時期ReactNativeの公式ドキュメントからもリンクされていたのでご存知の方も多いはず。100分/月・最大同時接続数2までの範囲であれば無料で使うことができる。実際に使ってみるまでの手順を紹介する。
前準備: トークンの取得
https://appetize.io/signup からアカウントを作ったあと、 https://appetize.io/docs#request-api-token にメールアドレスを入力してAPIトークンを申請する。
apkのアップロード
curl https://APITOKEN@api.appetize.io/v1/apps \
-F "file=@file_to_upload.apk" -F "platform=android"
これだけ。注意点としてはapkは署名されている必要がある。
コード例
あまりにあっさりと終わってしまったので、もう少し現実っぽい例として、commitごとに走るCIから最新版ビルドをappetize.ioにアップロードするようなサンプルを作ってみた。
const fs = require('fs');
const request = require('request');
request.post({
url: `https://${KEY}@api.appetize.io/v1/apps`,
formData: {
platform: 'android',
file: fs.createReadStream('android/app/build/outputs/apk/app-release.apk'),
}
}, function (err, res, body) {
if (err) {
throw new Error("Failed to upload apk", err);
} else {
console.log(`App is succeesfully uploaded!`);
console.log(JSON.parse(body).publicURL);
}
});
のようにapkをアップロードすればよい。例ではAndroidアプリを対象としたが、iOS版でも同様。
実際にアップロードされたapkは以下のURLから試すことができる。
https://appetize.io/app/99dpadte3vjmcn2z0ngqkrhg4g?device=nexus5&scale=75&orientation=portrait&osVersion=7.1
fastlaneとの連携
Android/iOSアプリ開発まわりの自動化ツールfastlaneはappetize.ioにもバッチリ対応していて、こちらを使うのも良さそう。githubでのPRに対応して作成したビルドをappetize.io上で動かすような例がFabricのブログで紹介されていた。