2017-03-20

Android Studio と Fedora (2)

Fedora に Android Studio をインストールして、Android アプリを開発する最低限の環境を整えましたが[1]、ひとつ問題が残っていました。それは、Android 端末の実機を、USB を通して接続し、開発したアプリを実機で直接実行することを確認できなかったことでした。もしかすると Linux 版では実機の接続はサポートされていないか、もしくは、今回購入した型落ちの Android 端末 URBANO V02 では、Linux へ接続するのは無理なのかもしれないという不安がありました。

しかしその不安は杞憂でした。Fedora 側で メディア転送プロトコル (MTP, Media Transfer Protocol) をサポートするライブラリをインストールすれば接続できるはずだということが判ったためです。参考サイト [2] にぴったりの説明がありましたので、それにもとづき自分の環境 (Fedora 25 x86_64) で確認した結果を備忘録としてまとめました。

開発者向けオプションの設定 [Android]

まずは、Android 側で「開発者向けオプション」の設定が出来るようにします。デフォルトでは「設定」でこのオプションが非表示になっているので参考資料 [3] に従って表示させます。

とりあえず、「開発者向けオプション」では以下のように設定しました。

 

jmtpfs のインストール [Fedora]

jmtpfs は MTP 対応デバイスへアクセスするためのファイルシステムで、ユーザー空間でファイルシステムを作成する機能を提供する FUSE, Filesystem in Userspace と、MTP を実装したライブラリ libmtp をベースにしています[4]

root 権限で jmtpfs をインストールします。

$ su
パスワード:
# dnf install jmtpfs
...
...

Android 端末を、Fedora が稼働している PC へ USB 接続します。念の為、dmesg コマンドで OS が Android 端末を認識しているかどうか確認します。マウントに成功すると、ファイルの中身を確認できます。

$ dmesg | tail
[ 2413.637244] usb 1-2: Product: KYOCERA_Android
[ 2413.637254] usb 1-2: Manufacturer: KYOCERA
[ 2413.637262] usb 1-2: SerialNumber: dce34c3086
[ 2430.772947] usb 1-2: usbfs: process 4908 (jmtpfs) did not claim interface 0 before use
[ 2430.929832] usb 1-2: reset high-speed USB device number 18 using xhci_hcd
[ 2431.101339] usb 1-2: usbfs: process 4908 (jmtpfs) did not claim interface 0 before use
[ 2431.101621] usb 1-2: usbfs: process 4883 (events) did not claim interface 0 before use
[ 2530.095480] perf: interrupt took too long (4011 > 4005), lowering kernel.perf_event_max_sample_rate to 49000
[ 3314.230265] usb 1-2: usbfs: process 4875 (gvfsd-mtp) did not claim interface 0 before use
[ 3316.737372] perf: interrupt took too long (5016 > 5013), lowering kernel.perf_event_max_sample_rate to 39000
$ 

Android 端末のマウント [Fedora]

root 権限で、マウントポイント(この例では /mnt/android)を作成し、jmtpfs コマンドで Android 端末のファイルシステムをマウントします。

# mkdir /mnt/android
# jmtpfs /mnt/android
Device 0 (VID=0482 and PID=0a74) is UNKNOWN in libmtp v1.1.11.
Please report this VID/PID and the device model to the libmtp development team
Android device detected, assigning default bug flags
# ls /mnt/android
内部ストレージ
# ls /mnt/android/内部ストレージ
Alarms   Download    Movies         Podcasts             com.facebook.orca
Android  Effectplus  Music          Ringtones            kindle
Books    IrDA        Notifications  amazonmp3            media
DCIM     LISMO       Pictures       com.facebook.katana
# 

Android Studio でアプリの実行 [Fedora/Android]

Android 端末のファイルシステムをマウントした状態で、Android Studio でプロジェクトのアプリをコンパイル・実行すると、接続するデバイス、USB 接続した Android 端末とシミュレーター (AVD, Android Virtual Device) のリストが表示されます。

同時に、Android 端末上では下記のメッセージが表示されますので、OK ボタンをタップします。

すると、Fedora の Android Studio 側では認証されたデバイスとして表示されますので、選択して OK ボタンをクリックします。

プロジェクトのアプリがビルドされると、Android 端末へ転送されて起動されます。なお、転送されたアプリ (My Application) は「その他のアプリ」にありました。

 

Android 端末のアンマウント [Fedora]

Fedora にマウントした Android 端末のファイルシステムをアンマウントするには、以下のように fusermount コマンドを使います。

# fusermount -u /mnt/android
# exit

参考サイト

  1. bitWalk's: Android Studio と Fedora [2017-03-12]
  2. Linux でAndroid スマートフォンをストレージデバイスとしてマウントする - Qiita [2016-08-22]
  3. アプリを実行する | Android Developers
  4. jmtpfs: Exchanging files between Android devices and Linux | Jacquette Engineering

 

私の Java プログラマ歴は 20 年もありませんが、ぴったりな入門書が発売されましたので早速購入して教科書にしています。

ブログランキング・にほんブログ村へ
にほんブログ村

0 件のコメント: