プラスプラス開発者ブログ

岩手県盛岡市のシステム開発会社「株式会社プラスプラス」の開発者ブログです。

Androidでmetamask不要のウォレットアプリをビルドする

乗るなら飲むな。飲むなら牛乳。牛乳は嫌いな「軽く熊」です。
あっ、でもチーズは大丈夫ですよ。

今回はイーサリアム専用だけどmetamaskを必要としない
ウォレットアプリを見つけたのでAndroid Studio 3.1でビルドしてみます。

仮想通貨でいろいろ調べていた時にEtherPayなるアプリのgithubを発見。
せっかくなのでビルドして動かして解析してみたいなと思ったわけです。


EtherPayは普通にPlayストアに登録されているので、
動作を見たいだけならビルドする必要はまったくありません。

metamaskを簡素化してアプリ化した感じで機能は多くありません。
アカウントはQRコード秘密鍵からインポートします。

では早速、プロジェクトをクローンしてソースをゲットします。
現時点での最新は「2017/03/18 Branch master」のようです。

dbenrosen/EtherPay: Ether Wallet app for Android
https://github.com/dbenrosen/EtherPay

プロジェクトは3モジュールで構成されていて、本体のappモジュール
面倒な事を処理しているrthereumj-coreモジュール
QRコード認識のzBarBuildモジュール(NDK)の3構成。

こちらの開発環境は Android Studio 3.1 + NDK R17 なのですが、
EtherPayはAndroid Studio 2.x系なのでインポート後に一苦労ありました。


まずはAndroid Studio から「Open an existing Android Studio project」で
EtherPayをクローンしたフォルダを開きます。

f:id:plusplus-calc_kuma:20180709112609p:plain
そうするとGradle settingsのダイアログが出ます。
「OK」だとGradleWrapperを使用、「Cancel」だとローカルにある
Gradleのパスを手動で指定します。
よくわからないので「OK」にします。

f:id:plusplus-calc_kuma:20180709112633p:plain
Build tools 25.0.0 が無いのでエラーになりました。
「Install Build Tools 25.0.0 and sync project」をクリックするとダウンロードを開始します。
それにしてもプロジェクトの読み込みでエラーになると
Android SDK Manegerがメニューから消えるのなんとかならないのかなー。


インストールせずにダウンロード済みのバージョンに書き換える場合は
appとzBarBuildのモジュールのbuild.gradleを希望のバージョンに修正します。

そうするとこんどはSDK platformでもエラーが…
zBarBuildのcompileSdkVersionが15になっているので
SDK platform 15 (Android 4.0.3)も入れてください。

ビルド完了ー!と思いきや、今度はNDKでビルドエラーが…

Android NDK: INTERNAL ERROR: The armeabi ABI should have exactly one architecture definitions. Found: ''
process_begin: CreateProcess(NULL, "", ...) failed.


最新のNDKはMIPSとかのサポートが終了しているので
多分それが原因と当たりを付けてAndroid.mkのABI指定を修正。
エラーが消えない…「なん…だと…」

いろいろ試行錯誤したらbuild.gradleでABI指定すると解決する事が判明。

    defaultConfig {
        minSdkVersion 10
        targetSdkVersion 21
        ndk {
            moduleName "libiconv"
            abiFilters "armeabi-v7a"  // この行を追記する。
        }
    }

なんか警告が出てるけどビルドが通った。
警告の修正はやーめた。面倒だし(笑)


ソースを解析してどうやってイーサリアムを操作しているか調べたら
外部のサービスのapi.etherscan.ioetherchain.orgを使って
動いているようでした。ですよねー。

修正して遊ぼうかなーなんて思っていたのですが やる気が無くなったので…
時間が無くなってきたのでここまでにしまーす。

シリーズ記事
WindowsでEthereum環境構築はじめました。その1
WindowsでEthereum環境構築はじめました。その2
WindowsでEthereum環境構築はじめました。その3
WindowsでEthereum環境構築にAndroidくわえました。
WindowsでEthereum環境構築でスマートコントラクトはじめました。
イーサリアムのスマートコントラクトで何ができる?
Androidでmetamask不要のウォレットアプリをビルドする← この記事だよ!
WindowsでEthereum環境構築でスマートコントラクト、JavaScript実行編