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

まぁ動きを見てもらうと早いかもしれません。↓
<img src="https://qiita-image-store.s3.amazonaws.com/0/995/4c19010f-997c-0a84-e816-4d20c04113db.gif" width="400px">

サイドからデバッグメニューが出現し、デバッグなどを行うことが出来ます。
ちなみにこのスクリーン動画は、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が出来ない、みたいなエラーでしょうか :sweat: 

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

## 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},
```
こちらもだいぶよくわからない系のエラーですね :sweat: 

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


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

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

## デバッグメニューを開く
デバッグメニューの開き方ですが、アプリを起動していると通知領域に
デバッグメニュー起動用の通知が出てくるので、それをタップすると開けます。
![名称未設定2.jpg](https://qiita-image-store.s3.amazonaws.com/0/995/8f4c53f7-1502-7087-812b-a31cc93b1c04.jpeg)


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

あとはプログラムからも

```kotlin
Hyperion.open(Activity activity)
```



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

# Measurement Inspector (hyperion-measurement)
Viewの間隔などを見ることが出来る機能です。
デザインとかの調整に便利そう！
![device-2018-04-09-204825.jpg](https://qiita-image-store.s3.amazonaws.com/0/995/b98242e5-0c75-0d60-b6e6-1596f008bc81.jpeg)

# Attributes Inspector (hyperion-attr)
Viewの要素を確認することが出来る機能です。
TextViewだと文字を変えられたりするみたいです。
![device-2018-04-09-210052.jpg](https://qiita-image-store.s3.amazonaws.com/0/995/5b939423-5835-3f47-3d94-b468de228207.jpeg)

# File Explorer (hyperion-disk)
アプリの内部ストレージを確認出来る機能です。
シェアと削除も出来る模様。
![device-2018-04-09-210341.jpg](https://qiita-image-store.s3.amazonaws.com/0/995/86fd4f65-dbab-0f4a-5b81-75146e7db69d.jpeg)

# Shared Preferences (hyperion-shared-preferences)
アプリのShared Preferencesが一覧で閲覧と編集も出来る機能です。
これも便利。

# Recorder (hyperion-recorder)
アプリの録画が出来る機能です。
本記事のgif動画もこの機能で撮影しました。

<img src="https://qiita-image-store.s3.amazonaws.com/0/995/4c19010f-997c-0a84-e816-4d20c04113db.gif" width="400px">

# Phoenix (hyperion-phoenix)
Jake神のProcessPhoenixをHyperionで使えるようにしたものです。
https://github.com/JakeWharton/ProcessPhoenix

# hyperion-crash
デバッグメニューには表示されませんが、アプリがクラッシュした場合にエラー画面を表示し、
エラーの内容表示と共有が出来る機能です。
![device-2018-04-09-211937.jpg](https://qiita-image-store.s3.amazonaws.com/0/995/fdb8a4d0-fabd-68cb-d8cc-9a9dd1cb96c4.jpeg)

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

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