Hyperion-Androidの導入で詰まった点 & 機能の紹介


Hyperion-Androidというライブラリを最近知りまして、かなり便利そうだったので
試してみようと思ったものの、すこし詰まった点があったのでそれの共有と機能の軽い紹介です。

Hyperion-Androidとは

【公式】
Github
https://github.com/willowtreeapps/Hyperion-Android
Blog Post
https://willowtreeapps.com/ideas/introducing-hyperion-for-android

【紹介記事】
Hyperion-AndroidでViewのデバッグとその他いろいろ
https://medium.com/@star_zero/hyperion-androidでviewのデバッグとその他いろいろ-26dd4291261a

「App Debugging & Inspection Tool for Android」と謳っているとおり、アプリのデバッグとか要素の検証とかが出来るようになるライブラリです。
ちなみにiOS版もあるようです。(iOS版のほうが先発?)
https://github.com/willowtreeapps/Hyperion-iOS

まぁ動きを見てもらうと早いかもしれません。↓

サイドからデバッグメニューが出現し、デバッグなどを行うことが出来ます。
ちなみにこのスクリーン動画は、Hyperion-Androidの「Recorder」を使用して撮りました。

これは使いようによってはかなり便利じゃないでしょうか!
若干裏で何やっているのか分からない感はあるものの、デバッグとかの際には相当役に立つはず。

導入方法

導入方法ですが、下記をdependenciesに追加するだけでOKでした。

debugImplementation 'com.willowtreeapps.hyperion:hyperion-core:0.9.21'
debugImplementation 'com.willowtreeapps.hyperion:hyperion-attr:0.9.21'
debugImplementation 'com.willowtreeapps.hyperion:hyperion-measurement:0.9.21'
debugImplementation 'com.willowtreeapps.hyperion:hyperion-disk:0.9.21'
debugImplementation 'com.willowtreeapps.hyperion:hyperion-recorder:0.9.21'
debugImplementation 'com.willowtreeapps.hyperion:hyperion-phoenix:0.9.21'
debugImplementation 'com.willowtreeapps.hyperion:hyperion-crash:0.9.21'
debugImplementation 'com.willowtreeapps.hyperion:hyperion-shared-preferences:0.9.21'

hyperion-core がライブラリのメイン機能で、他のはプラグインという形になっています。
不要なプラグインは含めないとかも出来る感じですね。

詰まった点

基本的には上記の追加をするだけなのですが、若干詰まった点がありました。

Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDevelopDebug'.

Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDevelopDebug'. 
> java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex

何やらmergeが出来ない、みたいなエラーでしょうか

こちらですが、 Cleanしてからビルド すれば出なくなりました
何というか初歩的なことですが、時間をちょっと無駄にしました。

Error:Execution failed for task ':app:transformClassesWithInstantRunForDevelopDebug'.

> Unexpected inputs: ImmutableJarInput{name=com.android.support:support-core-ui:27.0.2, file=/Development/sample-android/app/build/intermediates/transforms/desugar/develop/debug/72.jar, contentTypes=CLASSES, scopes=EXTERNAL_LIBRARIES, status=REMOVED}, 
ImmutableJarInput{name=com.android.support:support-core-utils:27.0.2, file=/Development/sample-android/app/build/intermediates/transforms/desugar/develop/debug/71.jar, contentTypes=CLASSES, scopes=EXTERNAL_LIBRARIES, status=REMOVED},

こちらもだいぶよくわからない系のエラーですね

こちらもですが、 Cleanしてからビルド すれば出なくなりました
Clean大事ですね。

各プロジェクトの状況などによっては、もっと他のエラーが出る可能性もありそうですが、
上記2つのエラーだけで、あとは問題なく導入することが出来ました。

機能紹介

軽く機能(プラグイン)の紹介をしたいと思います。

デバッグメニューを開く

デバッグメニューの開き方ですが、アプリを起動していると通知領域に
デバッグメニュー起動用の通知が出てくるので、それをタップすると開けます。

また、端末を振ってもデバッグメニューを開くことが出来ます。
こちらのほうが楽ですかね。

あとはプログラムからも

Hyperion.open(Activity activity)

のメソッドから開くことが出来るようです。

Measurement Inspector (hyperion-measurement)

Viewの間隔などを見ることが出来る機能です。
デザインとかの調整に便利そう!

Attributes Inspector (hyperion-attr)

Viewの要素を確認することが出来る機能です。
TextViewだと文字を変えられたりするみたいです。

File Explorer (hyperion-disk)

アプリの内部ストレージを確認出来る機能です。
シェアと削除も出来る模様。

Shared Preferences (hyperion-shared-preferences)

アプリのShared Preferencesが一覧で閲覧と編集も出来る機能です。
これも便利。

Recorder (hyperion-recorder)

アプリの録画が出来る機能です。
本記事のgif動画もこの機能で撮影しました。

Phoenix (hyperion-phoenix)

Jake神のProcessPhoenixをHyperionで使えるようにしたものです。
https://github.com/JakeWharton/ProcessPhoenix

hyperion-crash

デバッグメニューには表示されませんが、アプリがクラッシュした場合にエラー画面を表示し、
エラーの内容表示と共有が出来る機能です。

まとめ

ざっくりとですが、詰まった点、機能の紹介を行いました。
うまく使いこなせれば、デバッグなどに相当役に立つのでは、と思いました。

プラグインも自作できるようですので、便利なプラグインがどんどん追加されていくともっと便利になっていきそうですね。