ADBの使い方
AndroidはLinuxです。Linuxとしてコマンドラインで接続できます。
Android ADB コマンドプロンプト
実機をPCに接続するかAndroidのVMを起動してください。
VMの起動方法は
VIsual Studio 2017 → ツール →Android → Androidデバイスマネージャ
となります。適当なものを開始押下で開始してください。
Androidの用意ができましたら、実際にADBを利用するためにコマンドプロンプトを起動します。
VIsual Studio 2017 → ツール →Android → Android ADB コマンドプロンプト
コマンドプロンプトに下記を入力しましょう。
adb shell
すると下記のように白枠のところがデバイス名に代わると思います。それで接続成功です。
ls、cdなどLinuxのコマンドを売ってみましょう。
ADBはどういうときに使うのか logcat
接続した状態でlogcatと打ってみましょう。
logcat
たくさん文字が出てきたと思います。これはOSのシステムのログのようなもので、アプリはここにメッセージを吐いたりできます。OSの機能などはここにログを書くことが多いのでデバッグの際にはよく使います。
ADBはどういうときに使うのか run-as
AndroidのアプリはLinuxでいうパッケージです。パッケージにはローカルエリアがあり、そこにキャッシュやファイルを持っておきます。そのエリアは保護されており、アプリ以外のプロセスはアクセスできません。その保護領域にファイルなどを配置しておくと安全ですが、他プロセスがアクセスできないので確認もできません。そういう時にこのADBを利用すればアクセスできます。
対象のアプリがdebugビルドの場合はADBで保護されたアプリのローカルエリアにアクセスできます。
releaseビルドではAndroidManifest.xmlのapplicationタグに「android:debuggable="true"」 を指定する必要があります。
実際にやってみましょう。Xamarin.Formsのプロジェクトを例にとります。
一度、デバッグビルドで実行しておきます。
これでアプリがAndroidにデプロイされました。次にアプリのパッケージ名を確認します。
Androidのプロジェクトのプロパティを開きましょう。
そうしたらAndroidマニュフェストにカーソルを合わせてください。
パッケージ名が表示されます。このパッケージ名をADB接続後の状態で利用します。
run-as パッケージ名
すると左側がパッケージ名になると成功です。
ここのfilesがC#の特殊ディレクトリに当たります。※DependencyService不要でライブラリに書ける内容です。
string myDocuments = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
共有エリアにファイルを置いたり読んだりはユーザーの許可が必要だったり大変です。共有エリアに置く必要がなければ上記の場所を利用しましょう。