C#やモバイルアプリ関係のログ

C#やXamarin、スマートフォンアプリのことを書いておきたいと思います

ADBの使い方

AndroidLinuxです。Linuxとしてコマンドラインで接続できます。

Android ADB コマンドプロンプト

実機をPCに接続するかAndroidVMを起動してください。

VMの起動方法は
VIsual Studio 2017 → ツール →AndroidAndroidバイスマネージャ
となります。適当なものを開始押下で開始してください。

Androidの用意ができましたら、実際にADBを利用するためにコマンドプロンプトを起動します。
VIsual Studio 2017 → ツール →AndroidAndroid ADB コマンドプロンプト

コマンドプロンプトに下記を入力しましょう。

adb shell

すると下記のように白枠のところがデバイス名に代わると思います。それで接続成功です。

f:id:Jirobe_Katori:20190330115214p:plain

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のプロジェクトを例にとります。

一度、デバッグビルドで実行しておきます。
f:id:Jirobe_Katori:20190330120232p:plain

これでアプリがAndroidにデプロイされました。次にアプリのパッケージ名を確認します。

Androidのプロジェクトのプロパティを開きましょう。
f:id:Jirobe_Katori:20190330120426p:plain

そうしたらAndroidマニュフェストにカーソルを合わせてください。
f:id:Jirobe_Katori:20190330120506p:plain

パッケージ名が表示されます。このパッケージ名をADB接続後の状態で利用します。

run-as パッケージ名

すると左側がパッケージ名になると成功です。 f:id:Jirobe_Katori:20190330120752p:plain

ここのfilesがC#の特殊ディレクトリに当たります。※DependencyService不要でライブラリに書ける内容です。

string myDocuments = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

共有エリアにファイルを置いたり読んだりはユーザーの許可が必要だったり大変です。共有エリアに置く必要がなければ上記の場所を利用しましょう。