BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース ZeroTurnaroundがJRebel for Android 1.0を発表

ZeroTurnaroundがJRebel for Android 1.0を発表

原文(投稿日:2016/01/13)へのリンク

ZeroTurnaroundがJRebel for Androidの最初の安定版を発表した。実行中のアプリケーションを再デプロイや再スタートせずに修正可能なことで人気の,同社のプラグインのAndroidバージョンである。JRebel for AndroidはJetBrainのプラグインリポジトリから,Android Studio用として提供される。Android 4.0以降の動作する,すべてのスマートフォンとタブレットがサポート対象だ。ZeroTurnaroundでは,21日間の無償トライアルを提供している。価格は年49ドルからとなっている。

Android開発者に共通する不満として,ベースとなるテクノロジのフィードバックループが極めて遅い点がある。コード修正の結果を確認しようとするたびに,再コンパイル,パッケージ,Androidデバイスへのインストールと再起動という作業が必要なのだ。このプロセスに要する時間に加えて,修正した機能が一定のワークフローに沿ったものである場合には,変更をデプロイする毎に,そのワークフローも一通り実施しなくてはならない。このような理由で,少なくとも2年前から,ホットスワップ機能が開発者コミュニティによって求められていた

このニーズを満たすためZeroTurnaroundは,2014年にJRebel for Androidの開発に着手,2015年4月にはベータ版を発表した。その後,ベータ版へのフィードバックを経て,2015年9月には早期アクセスリリースが公開されている。JRebel for Androidプラグインは,Android StudioのRunメニューに新しい項目を追加し,実行中のアプリケーションコードのホットスワップを可能にするツールを含むように,Gradleビルドファイルを修正する。動作方法に関するデモを,次のビデオで見ることができる。


JRebel for Android in Action from Official ZeroTurnaround Account on Vimeo.

技術的詳細

提供する機能は似ているが,基礎となっている技術の違いから,従来のJRebelとJRebel for Androidの動作にはかなりの違いがある。JRebelの場合,変更されたJavaコードはコンパイルされ,生成されたバイトコードがクラスの再ロードを通じてWebアプリケーションに挿入される。一方Androidでは,Java仮想マシンも使用していない – Android 4.0以前では,JavaコードはDEXファイルにコンパイルされて,これをDalvik仮想マシンが解釈する方法を取る。Android 5.0以降については,そのDEXファイルがデバイス自身によってネイティブなマシンコードに再コンパイルされる。従って,従来とは異なるアプローチが必要であった。

ZeroTurnaroundが説明しているように,JRebel for AndroidはプロジェクトのGradleビルドを修正して,JRebel for Androidエージェントのみを含むshell APKを生成する。開発に使用するAndroidデバイスにインストールする必要があるのはAPKのみだ。その後,実際のアプリケーション(DEXファイルとリソース)がADB経由でエージェントに送信され,エージェントがそれを実行中のアプリとしてロードする。修正を行なうと,関連するDEXファイルは再構築され,修正されたリソースと合わせてエージェントに送信される。新たにAPKを生成したりインストールする必要はない。

変更をオンザフライで再ロードするために,エージェントは,スタックの最上位アクティビティのActivity.recreateをコールする。これにより,onCreate, onStart, onResumeが呼び出される。従ってアプリ開発者は,アプリケーションが元の場所に適切に再ロードされるように,onSaveInstanceStateを適切に処理する必要がある。

JRebel for Androidエージェントは開発中にのみ存在する。正式リリース時には,関連するDEXファイルとリソースのみを含むAPKが用意されることになる。

代替

このようなアプリケーションに対するコミュニティのニーズの高さを反映して,JRebel for Androidと同種のツールはこれまでも数多く存在していた。InfoQがこれまで調査したツールの中で,JRebelのような完成度を持ったものは他にないものの,一定のニーズを満たすものは紹介する価値があるだろう。

Buck (Exopackage): Facebookが開発したもので,使用にはアプリケーションの変更が必要になる。自由な使用が可能。

Mirror: レイアウトの迅速な変更のみが可能で,デバイスにコードをプッシュすることはできない。ライセンスは1回払いで79ドルから。30日間の無償トライアル。

Intel XDKのLive Development Tasks: Intel XDKはCordovaをベースとした,ハイブリッド HTML5アプリケーション開発のためのIDEで,ネイティブなAndroidアプリケーションはサポートしていない。自由な使用が可能。

Android Design Preview: デスクトップの一部をAndroidデバイスに,単純にミラーリングするツール。デバイス内のインタラクションはサポートしないが,レイアウトの簡単なテストが可能である。無償。

LayoutCast: 開発初期段階のため,機能制限や安定性に問題がある。Android 5以降での使用可能。無償。

この記事に星をつける

おすすめ度
スタイル

BT