Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

JRebel for Android 1.0 を試食してみた

1,470 views

Published on

日本Androidの会 埼玉支部(#antama) 2016年1月 定例会 LT

Published in: Engineering
  • Be the first to comment

JRebel for Android 1.0 を試食してみた

  1. 1. JRebel for Android 1.0 を試食してみた @kimukou2628
  2. 2. つい最近の
 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の再起動コストがかなり重い)
  3. 3. つい最近の
 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
  4. 4. つい最近の
 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
  5. 5. つい最近の
 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は可能?) 指紋認証/権限リクエストの挙動も動かない
  6. 6. ここから
 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にメアド登録のみで手軽
  7. 7. 試食設定(1) プラグインレポジトリで
 JRebelで検索 再起動すると、入力フォームが出てくるのでメアド登録 登録が成功すると以下のフォルダにトライアル用のライセ ンスファイルが作成される
 
 
 
 
 $HOME/.jrebel-android jrebel-android.lic rebel-android.prefs logs(フォルダ)
  8. 8. 試食設定(2) トライアルライセンスはメアドユニークなので $HOME/.jrebel-android 
 を持っていけば他の端末で試食でそう
 (端末ロック有だと個人購入だとキツイな∼><)
 ライセンスには「開発者/年単位」で1ライセンス トライアルモードで試せるのは
 Business 機能まで使える認識 通常実行 デバックモード実行 デバック 通常実行 反映転送
  9. 9. ライセンス形態 価格
 (年/人) 機能 Individual $49 InstantRunみたいな状態
 (日本代理店で39800円? Business $349 デバック実行モード Multidex サポート Ultimate
 (2016リリース予定) $599 複数端末同時転送 Instrumentation tests対応 複数端末同時転送は レイアウトちょこちょこ修正
 複数端末表示確認テスト(小さい/普通/タブレット) とかしてるので企業的には確かに便利かも
  10. 10. 試食状況(1) ツールバーのJRebel用の実行ボタンを押すのみ 通常実行 反映転送ボタンで変更を転送
 破壊的変更でない限り、
 基本Activity再起動のみで反映
 デバックモード実行(Betaの記事にはなかった) デバック実行を抜けないままActivityリロード
 (公式サイトの説明だと、
 ステップデバック中に動的変更、転送できる?
 ように読めたがそれは出来なかった) デバック 通常実行 反映転送
  11. 11. 試食状況(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'
  12. 12. 試食状況(3) JRebelで通信する専用apkが専用タスクで生成
 
 

 

 

 Android端末に転送される このapkは端末から直接実行すると
 「IDEから実行してください」とスプラッシュがでて停止して しまう 開発PCの方にJRebel通信用のローカルサーバが立ち上がって
 Android端末と通信を始める jps -v で確認可能 Gradleコンソールで見ると  :jrebelPrepereDebug 
 で専用apk生成な形に見えるが 上記タスクをコマンドラインで実行 生成したapkはadb installできない InstantRunもそうですが
 IDE側で何設定して動かして るんでしょうね。。(汗
  13. 13. 試食状況(4) JRebel通信用のローカルサーバの話 一定期間周期で接続確認ポーリングしてる USBを抜き差ししても短時間なら継続可能 ちょっとした画面確認程度なら出歩ける これが何気に便利だった 4系以上の端末が対象 まあ2系サポートとか今更でしょうけど(汗 レガシープロジェクトは不滅ですorz
  14. 14. 体感的な話(1):良かった点 反映転送が速い 専用apkが立ち上がったあと(専用apkの起動自体は勿論重) 変更したら「反映転送」ボタン押下 :jrebelPrepereDebug タスクが速い cleanとか libraryProjectの再ビルドとか
 余計なタスクを勿論遣ってない
 Win環境でも1∼5秒程度で転送確認可能 AS通常実行で ビルドのみで 30秒∼1分 かかる環境 変更ファイルのみの差分転送、適応だから? JDIとかの技術なのだろうか・・・ apkが再起動せず、基本現在表示中のActiviy Reloadな感じ Stackに積まれているActivty反映とかはやはり無理?
  15. 15. 体感的な話(2):微妙な面 端末内のアプリがパツンと終了することがある 多分ローカルJRebel との通信エラーで 特にデバックモードでゆっくりステップ実行
 とかすると再現率高 (JRebelのでも同じ) IDE経由じゃないと起動できないapk :jrebelPrepareDebug はassembleDebug は呼んでいるので patchが当たったapkだと想定
 (通常のapkファイルしか無い) gradlew assembleDebugで作りなおした
 apkで容易に上書き可能 :generateDebugJrebelLayout :assembleDebug :jrebelCompileDebug :jrebelPrepareDebug
  16. 16. 検証な話(1) Q)リアルにつかうとしたら Individual ライセンスだと思 うので下記が実行可能か試した JRebel実行 プロセスアタッチ A) 一応可能。 ただしActivty Reloadタイミングでプロセスが切れる MultiDexなプロジェクトは試してない bussinessじゃないと ビルド できない疑惑が。。。 使えるプロジェクトが限定される?
  17. 17. 検証な話(2) Q)どんなプロジェクトだと使ってて嬉しいか? A) テストデータをコード/assets内にもってる奴 テストコード使ってる案件のほうが少ない? ASだとステップ実行で下記が頻繁 (ADTは可) 値書き換えが上手くいかない ローカル変数参照自体ができない?? 書き換えてReload =>目視確認した方がすぐ確認できる レイアウトを黙視で微調整が必要な奴 HTMLレイアウトに近いので必須
 (iOSでもAutoLayoutプロジェクトは阿鼻叫喚気味)
  18. 18. 検証な話(3) Q)どんなプロジェクトだと使ってて嬉しいか? A) ちょっとしたクラスやレイアウトの追加/削除が
 Reloadですぐ確認できる 開発がサクサクできる 人によってはJRebelデバックモードで内部値確認し ながら開発する人もいるかも?
 https://zeroturnaround.com/software/jrebel-for-android/features/ interface/super classの差替以外はReloadできるらしい
  19. 19. 疑問点など Individual ライセンスなら
 個人開発者レベルでもありかもなーと ライセンス形態で不安なところ IntelliJ みたいに複数端末インスト可だといいな∼ 同時起動は1個で構わないので ライセンス切れたら起動できなくなる?
 だとすると辛い 個人ベースだと IntelliJ みたいに
 アカウントログインで認証できると実は嬉しい 日本人が購入する場合、領収書辺りがネック? JRebelとかって実際日本でどのくらい売れてるんだろう 凄く気になる。。。
  20. 20. 参考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

×