AndroidデバイスでのEmacsのインストールは、ソースコードやパッケージマネージャーを経由しません。別のオペレーティングシステム上でAndroid用にEmacsをコンパイル、そのバイナリーをアーカイブにパッケージングしてからシステムに転送してインストールします。
インストール後にシステムがアプリケーションアイコンをデスクトップ(“ホームスクリーン”とも呼ばれる)に配置します。そのアプリケーションアイコンをクリックすると、Emacsが起動します。
Emacsはスタートアップ中のメッセージをシステムログバッファーに表示します。スタートアップ中にこのバッファーを読み取るためには、別のコンピューターにadb
ユーティリティー(Android
Debug Bridge)が必要になります。
Androidシステムで“USB
Debugging(USBデバッグ)”の機能を有効にした後に、adb
ユーティリティーがインストールされている別のシステムで以下のコマンドをUSB経由で実行すれば、ログを閲覧できます:
$ adb logcat | grep -E "(android_run_debug_thread|[Ee]macs)"
adb
ユーティリティーがGNU/LinuxあるいはUnixシステムにインストールされていると仮定すると、以下の手順にしたがってデバイスに接続できます。
adb
shell
を実行する。接続済みデバイスへのアクセス権限をコンピューターにまだ付与していないので失敗、あるいはハングするだろう。
Androidおよびインストールしたadb
のバージョンに応じて接続を確立する方法は異なるかもしれない。詳細については公式ドキュメントhttps://developer.android.com/studio/command-line/adbを参照してください。
Emacsが起動したら、非同期シェルコマンド(Emacsからのシェルコマンドの実行を参照)としてコマンドlogcat
を実行するだけでログバッファーが表示されるでしょう。
別のAndroidプログラムからemacsclient
プログラム(サーバーとしてのEmacsの使用を参照)を開始する方法が存在しないので、すべてのファイルをオープン可能なアプリケーションとして、Emacsがemacsclient
のラッパープログラムを提供してシステムに登録します。
ファイルをオープンするプログラムとしてこのラッパーが選択されると、ラッパーがオプション--reuse-frame
、--timeout=10
、--no-wait
、およびオープンするファイルの名前とともにemacsclient
を呼び出します。それが成功するとオープンされているEmacsフレームにフォーカスが移ります。
ラッパーのオープン時にEmacsが実行中でなければ、オープンするファイルを引数としてEmacsを開始します。起動されたEmacsがその後にEmacsサーバーを開始しなければ、その後のラッパーによるファイルのオープンは失敗することに注意してください。
一部のファイルは“content identifiers”(システムにより提供される通常のファイルシステムAPIの範囲外へのアクセス)としてEmacsに与えられます。一部のファイルは“content identifiers”(システムによって提供される通常のファイルシステムAPI外部へのアクセス)としてEmacsに与えられます。これらのファイルにアクセスするために、Emacsは/content/by-authorityおよび/content/by-authority-namedという名前の疑似ディレクトリーを使用します。これらのディレクトリーの内容について何か仮定したり、ディレクトリーのファイルを自分でオープンしないでください。
この機能はAndroid 4.3以前では提供されていないので、それらのファイルはオープン前に一時ディレクトリーにコピーされます。
普通のテキストファイルに加えて、Emacsはemacsclient
ラッパーを“org-protocol”リンク(Protocols in The Org Manualを参照)をオープン可能なプログラムとしても登録します。
さらにこのラッパーはmailto
のURIにメールを送信可能なプログラムとしても登録されます。そのようなURLをオープンするために呼び出されると、そのURIを1つ目の引数として関数message-mailto
を呼び出します。この機能はEmacsサーバーがまだ実行されていなければ機能しません。