[Android] Logcatを端末に保存するためProcessBuilderを使う

USB 接続で Android の操作は adb command を使いますが、Android アプリ自身からコマンドを送ることができます。
Runtime.getRuntime().exec あるいは ProcessBuilder を使います.
 
下はProcessBuilderを使ってアプリパッケージのリストを表示させた例です。
 
1x1.trans - [Android] Logcatを端末に保存するためProcessBuilderを使う


 
Android Studio
2021.2.1




ProcessBuilder の設定

 

以前は様々なコマンドが使えたのですが、セキュリティが厳しくなり使えるものは少なくなりました。それでも使えるものとしてLogcatの取得とパッケージ検索などが可能です

 
Logcatの取得:
エラーが発生したときなどadb shell から

のコマンドでLogcatが取得できます

パッケージ検索:
また、アプリケーション・パッケージを探すコマンドは

PCから接続している場合は、ターミナルで adb shell からシェルに入り、pm list packages を打ち込むとリストが見られます

 
ProcessBuilderに処理させるには以下のようにします
アプリ内なので adb shell はいりません

 

Logcatの取得・保存

 

リアルタイムで監視しながら1秒おきにLogcatを取得して
アプリ専用のストレージ領域に保存します

MainActivity.java

開始させるためのButtonを置いただけです
activity_main.xml

リソース
strings.xml

アプリを実行した後で、Teminalからアプリのストレージ領域を確認してみましょう

adb shell でアプリのパッケージ名で入りますが
セキュリティのためrun-asを使います
 

run-as コマンドは以前は重宝していましたが、Android 10(APIレベル29)あたりからrun-as コマンドの機能が段階的に厳...

 

Logcatが保存されていました

 

package検索

 

端末にあるアプリのpackage名を検索します

MainActivity.java

 
レイアウトです
activity_main.xml

 
1x1.trans - [Android] Logcatを端末に保存するためProcessBuilderを使う

また、Runtime.getRuntime().exec を使って
Runtime.getRuntime().exec(new String[] {“pm”,”list”,”com.example.testapp”});
のようにすればできます

シェアする

  • このエントリーをはてなブックマークに追加

フォローする