Upload
kimukou26-kimukou
View
1.436
Download
0
Embed Size (px)
Citation preview
JRebel for Android 1.0 を試食してみた
@kimukou2628
つい最近のandroid関係で調べてたこと(1)
android grade plugin のversionが上がった
2.0-prev4 => 2.0-prev6 (2割ぐらい遅くなった)
InstantRun前提のBuildになったから?
どうも以下の挙動が頻繁だからのよう
ライブラリプロジェクトのビルド/リソースチェックが頻繁(aar運用前提?)
grade Deamonから発行されるjavaタスクがよくロックされて戻ってこない(要Kill)
ロック時にIDE側でdeamon再起動、cleanタスク発行 (gradle Deamonの再起動コストがかなり重い)
つい最近のandroid関係で調べてたこと(2)
android grade plugin のversionが上がった
InstantRunはちょっとだけ状況改善
Macでは,ADT形式&Library Project有なプロジェクトでも なんとかビルドは通るようにはなったよ(Winでは変わらずNG)
Win上開発前提でInstantRun使えない前提だとすると
コマンドライン(Terminal窓)でビルド
adbでapkインストールが一番早いみたいな話になってしまう。。。
./gradlew assembleDebug -x :libP:assembleDebug -x test —offline
つい最近のandroid関係で調べてたこと(3)
gradle-2.11-rc-1 GradleDeamon がJPSの対象になった タスクのJavaプロセスはJPS対象になってない ロックかかったタスクの終了させたい面では微妙
Windows特有の問題なのだろうか? でもAndroid開発者でWin端末開発が多いよね?
grade-wrapper.properties を下記に変更で試せます
distributionUrl=https\://services.gradle.org/distributions/gradle-2.11-rc-1-bin.zip
つい最近のandroid関係で調べてたこと(4)
Genymotion 2.6.0 に上がった QT4=>QT5に変更されてPlayerの起動が速くなった
ライセンス購入促すダイアログ毎回出るようになった
Jenkins関係でフリーでは使わせないよ! な糸
6.0 Previewのimageが追加されたよ
files.genymotion.com からのDLで、Proxy環境によってはソフトやova が落とせない(StackOverFlowで対応記事があるくらい)
Gappsは5.1の奴で動かせる。最新化はダメ
MIC等の対応はVBOX側頼み(Win無理、Macは可能?)
指紋認証/権限リクエストの挙動も動かない
ここからJRebel for Android 1.0 のお話今年1月に正式版 1.0 が出たらしい
デモビデオhttps://vimeo.com/124512575だからまだ サムライズム様でも取り扱いしてない?
Beta触った人の記事http://androhi.hatenablog.com/entry/2015/06/18/083000
JJUG CCCのイケメンさんの話だとWindowsでも問題なく動く話を聞いていたので興味が湧いた
試食するのは、プラグインレポジトリからPluginインストールして、Formにメアド登録のみで手軽
試食設定(1)プラグインレポジトリで JRebelで検索
再起動すると、入力フォームが出てくるのでメアド登録
登録が成功すると以下のフォルダにトライアル用のライセンスファイルが作成される
$HOME/.jrebel-android jrebel-android.lic rebel-android.prefs logs(フォルダ)
試食設定(2)トライアルライセンスはメアドユニークなので
$HOME/.jrebel-android を持っていけば他の端末で試食でそう(端末ロック有だと個人購入だとキツイな~><)
ライセンスには「開発者/年単位」で1ライセンス
トライアルモードで試せるのは Business 機能まで使える認識
通常実行
デバックモード実行
デバック通常実行
反映転送
ライセンス形態価格
(年/人)機能
Individual $49InstantRunみたいな状態(日本代理店で39800円?
Business $349デバック実行モード Multidex サポート
Ultimate(2016リリース予定) $599
複数端末同時転送 Instrumentation tests対応
複数端末同時転送は レイアウトちょこちょこ修正複数端末表示確認テスト(小さい/普通/タブレット) とかしてるので企業的には確かに便利かも
試食状況(1)ツールバーのJRebel用の実行ボタンを押すのみ
通常実行
反映転送ボタンで変更を転送破壊的変更でない限り、基本Activity再起動のみで反映
デバックモード実行(Betaの記事にはなかった)
デバック実行を抜けないままActivityリロード(公式サイトの説明だと、ステップデバック中に動的変更、転送できる?ように読めたがそれは出来なかった)
デバック
通常実行
反映転送
試食状況(2)実行ウインドウはモード別
初回実行時にbuild.gradleに記述が追加
反映転送
buildscript { repositories { jcenter() maven { url 'https://repos.zeroturnaround.com/nexus/content/repositories/zt-public-releases' } } dependencies { classpath 'com.android.tools.build:gradle:2.0.+' classpath 'com.zeroturnaround.jrebel.android:jr-android-gradle:1.0.+' }}apply plugin: 'com.android.application'apply plugin: 'com.zeroturnaround.jrebel.android'
試食状況(3)JRebelで通信する専用apkが専用タスクで生成
Android端末に転送される
このapkは端末から直接実行すると「IDEから実行してください」とスプラッシュがでて停止してしまう
開発PCの方にJRebel通信用のローカルサーバが立ち上がって Android端末と通信を始める
jps -v で確認可能
Gradleコンソールで見ると :jrebelPrepereDebug で専用apk生成な形に見えるが 上記タスクをコマンドラインで実行 生成したapkはadb installできない
InstantRunもそうですがIDE側で何設定して動かしてるんでしょうね。。(汗
試食状況(4)JRebel通信用のローカルサーバの話
一定期間周期で接続確認ポーリングしてる
USBを抜き差ししても短時間なら継続可能
ちょっとした画面確認程度なら出歩けるこれが何気に便利だった
4系以上の端末が対象
まあ2系サポートとか今更でしょうけど(汗レガシープロジェクトは不滅ですorz
体感的な話(1):良かった点反映転送が速い 専用apkが立ち上がったあと(専用apkの起動自体は勿論重)
変更したら「反映転送」ボタン押下
:jrebelPrepereDebug タスクが速い
cleanとか libraryProjectの再ビルドとか余計なタスクを勿論遣ってない
Win環境でも1~5秒程度で転送確認可能
AS通常実行で ビルドのみで 30秒~1分 かかる環境変更ファイルのみの差分転送、適応だから?
JDIとかの技術なのだろうか・・・apkが再起動せず、基本現在表示中のActiviy Reloadな感じ
Stackに積まれているActivty反映とかはやはり無理?
体感的な話(2):微妙な面端末内のアプリがパツンと終了することがある
多分ローカルJRebel鯖との通信エラーで
特にデバックモードでゆっくりステップ実行とかすると再現率高 (JRebelのでも同じ)
IDE経由じゃないと起動できないapk
:jrebelPrepareDebug はassembleDebug は呼んでいるのでpatchが当たったapkだと想定(通常のapkファイルしか無い)
gradlew assembleDebugで作りなおしたapkで容易に上書き可能 :generateDebugJrebelLayout
:assembleDebug :jrebelCompileDebug :jrebelPrepareDebug
検証な話(1)Q)リアルにつかうとしたら Individual ライセンスだと思うので下記が実行可能か試した
JRebel実行プロセスアタッチ
A) 一応可能。ただしActivty Reloadタイミングでプロセスが切れるMultiDexなプロジェクトは試してない
bussinessじゃないと ビルド できない疑惑が。。。使えるプロジェクトが限定される?
検証な話(2)Q)どんなプロジェクトだと使ってて嬉しいか?
A) テストデータをコード/assets内にもってる奴テストコード使ってる案件のほうが少ない?
ASだとステップ実行で下記が頻繁 (ADTは可)値書き換えが上手くいかないローカル変数参照自体ができない??
書き換えてReload =>目視確認した方がすぐ確認できるレイアウトを黙視で微調整が必要な奴
HTMLレイアウトに近いので必須(iOSでもAutoLayoutプロジェクトは阿鼻叫喚気味)
検証な話(3)Q)どんなプロジェクトだと使ってて嬉しいか?
A) ちょっとしたクラスやレイアウトの追加/削除がReloadですぐ確認できる
開発がサクサクできる
人によってはJRebelデバックモードで内部値確認しながら開発する人もいるかも?
https://zeroturnaround.com/software/jrebel-for-android/features/
interface/super classの差替以外はReloadできるらしい
疑問点などIndividual ライセンスなら個人開発者レベルでもありかもなーと
ライセンス形態で不安なところIntelliJ みたいに複数端末インスト可だといいな~同時起動は1個で構わないので
ライセンス切れたら起動できなくなる?だとすると辛い
個人ベースだと IntelliJ みたいにアカウントログインで認証できると実は嬉しい
日本人が購入する場合、領収書辺りがネック?
JRebelとかって実際日本でどのくらい売れてるんだろう凄く気になる。。。
参考URL公式サイト
https://zeroturnaround.com/software/jrebel-for-android/
サムライズムのJRebelの説明ページ
http://samuraism.com/products/zeroturnaround/jrebel
JRebel for Android betaを試してみました
http://androhi.hatenablog.com/entry/2015/06/18/083000