目次
ログ印刷ログ
android.util
すべての開発者は、パッケージLog
印刷ログの使用Android
を認識する必要があります。ログは、、、、、などのメソッドをLog
呼び出すことによってコンソールに出力できます。コンソールに出力されるログの数が制限を超えています。今後、これ以上ログは出力されず、欠落しているログはコンソールに表示されません。v
d
i
w
e
Logcat
Log
Logcat
String.length
4061
length
4062
Logcat
この問題を解決するには、ロガーコンポーネントを使用することをお勧めします。
1. プロジェクトのインポート
implementation 'com.orhanobut:logger:2.2.0'
2. 初期化
Logger.addLogAdapter(AndroidLogAdapter())
3. 使用する
Logger.d("hello")
logger
印刷されるログがlength
size より大きい場合4061
、自動的に新しい行に折り返されて4062
印刷が続行されます。
Junit 単体テスト
単体テストは、アプリケーション テスト戦略における基本的なテストです。コードを単体テストすることで、単一ユニットのロジックが正しいかどうかを簡単に検証できます。各ビルド後に単体テストを実行すると、コード変更による変更を迅速に把握して修正するのに役立ちます。 (再構築、最適化などによって引き起こされる回帰問題)。
一連の記事:
Android 単体テストについてはこの記事を読んでください
Android 単体テスト (1): 概要
Android 単体テスト (2): 単体テストとは
Android 単体テスト (3): テストの難しさと解決策の選択
Android 単体テスト (4) ) : JUnit による
Android 単体テストの紹介 (5): JUnit の高度なAndroid 単体テスト (6): Mockito によるAndroid 単体テストの
学習(7): Robolectric によるAndroid 単体テストの紹介 (8): 非同期コードのテスト方法
デバッグブレークポイントのデバッグ
Debug
ブレークポイント デバッグの場合は、コードをテストする必要がある行の左側にブレークポイントを配置します。デバイスを接続した後、Android Studio の右上隅にあるメニュー バーをクリックするか、アプリケーションの起動後に をクリックしてオンにしDebug app
ますAttach Debugger to Android Process
。ブレークポイントのデバッグ。
Debug
ブレークポイントのテストを行うだけでなく、for
ループ内でブレークポイントの変数値を指定したり、if
指定した判定値を変更したりすることもできます。
具体的な使用方法の詳細については、次の記事を参照してください。
1.アプリをデバッグする
2. Android デバッグの実践と原則の詳細な説明
その他の参考記事
1. Web アプリのデバッグ
2. WorkManager のデバッグ
サルのストレステスト
Monkey
エミュレータまたはデバイス上で実行され、擬似ランダムなユーザー イベント (クリック、タップ、ジェスチャなど) および多くのシステム レベルのイベントのストリームを生成するプログラムです。Monkey
開発中のアプリケーションは、ランダムかつ反復可能な方法でストレス テストを行うことができます。
Monkey
使用方法は、スクリプトADB
を介したAndroid システム コマンドの実行に基づいています。コンピュータのコマンド ラインまたはスクリプトを使用して起動できます。エミュレータ/デバイス環境で動作するため、その環境内から起動する必要があります。これを行うには、各コマンドに接頭辞を付けるか、単にコマンドを入力します。ADB
shell
Monkey
Monkey
shell
adb shell
shell
Monkey
Monkey
イベントは実行時に生成され、システムに送信されます。また、テスト対象のシステムを監視し、次の 3 つの特別な条件を探します。
- 1 つ以上の特定のパッケージでの実行を制限している場合は
Monkey
、他のパッケージへのアクセスを監視し、ブロックします。 - アプリがクラッシュするか、未処理の例外を受け取ると、
Monkey
アプリは停止してエラーを報告します。 - アプリが「アプリケーションが応答していません」エラーを生成した場合、アプリ
Monkey
は停止してエラーを報告します。
基本的な使い方:
adb shell monkey -p your.package.name -v number.of.events
Monkey
疑似ランダムなユーザー イベントを生成できるだけでなく、ユーザー イベントのトリガー場所を指定することもできます。詳細については、以下を参照してください。
1. UI/Application Exerciser Monkey
2. Android 自動テスト入門 (1) Monkey と MonkeyRunner
3. 【Geek Academy】Android テスト
4. Android View apk パッケージ名、現在のアクティビティ名など
プロファイラー パフォーマンス アナライザー
Android Studio 3.0 以降の Android Profiler は、Android Monitor ツールを置き換えます。Android Profiler ツールは、アプリケーションの CPU、メモリ、バッテリー リソースの使用状況を理解するのに役立つリアルタイム データを提供します。
Profiler
チュートリアル: Android Profiler
Android Studio 3.0 は Android Profiler を使用してアプリケーションのパフォーマンスを測定します
ADB無線接続装置
なぜ紹介するのかADB
?ADB
ただの無線接続機器ではないでしょうか?データケーブルでデバイスを接続した方が安定しないでしょうか? なぜそれを使うのですかADB
?
ADB
正式名はAndroid Debug Bridge
、デバッグブリッジの役割を果たすことができるということです。
ADB
LAN内のIPアドレスを介してデバイスに接続し、Android Studioからデバイスのアプリケーションのインストールやデバッグ、デバイスの一連の操作を行うことができますが、ネットワークが不安定な場合、時間によっては接続が中断される場合があります。時間に。
携帯電話では、データ ケーブルを使用してデバイスを接続する方が比較的便利ですADB
。Android 11 以降のデバイスでは、QR コードをスキャンしてワイヤレスで接続することもできます。ただし、この状況は小型デバイスと、コードをスキャンするためのカメラを備えたデバイスおよびシステム バージョン Android 11 以降に関連したものです。メーカーによって改造された一部の Android デバイスには Type-c インターフェイスがありません。一部のデバイスにはカメラが搭載されていますが、Android バージョン 10 を超えるデバイスはほとんどありません。TV デバイスについては、Type-c インターフェイスもカメラもありません。機器をインストールしてデバッグしたい場合は、これが唯一の方法ですADB
。
ADB
デバイスのデバッグ接続については、私の記事を参照してください: ADB は Android デバイスをワイヤレスで接続します
さらに、Huawei の製品HDB
も使用してADB
接続できます。
Appium 自動テスト
Appium
は、ネイティブ、ハイブリッド、およびモバイル Web アプリケーションの自動テストのためのオープンソースのテスト自動化フレームワークです。
Appium
接続されたデバイスのデバッグについては、私の記事「 App Automation Testing - Use of Appium」を参照してください。
私個人としては、のAppium
限界です。Monkey
Appium
上記に加えてAppium
、Monkey
誰もが選択できる多くの自動テスト ツールがあります。最もGoogle
推奨されるものは、Espresso
優れた自動テスト フレームワークでもあります。欠点は、コードを記述する必要があることです。興味がある場合は、次のことを行うことができます。詳しくはこちら: Android 自動テスト入門 (3) Espresso
BlockCanary インターフェイスのスタック検出
BlockCanary
これは、Android プラットフォームの非侵入的なパフォーマンス監視コンポーネントです。アプリケーションは、抽象クラスを実装し、コンポーネントに必要なコンテキストを提供するだけで済みます。アプリケーションの使用時にメインスレッド上のさまざまな速度低下の問題を検出し、さまざまなコンポーネントによって提供される情報を使用して、ジャムの原因を分析できます。
BlockCanary
使い方は非常に簡単で、build.gradle
依存関係をインポートして初期化するだけです。
dependencies {
implementation 'com.github.markzhai:blockcanary-android:1.5.0'
// 仅在debug包启用BlockCanary进行卡顿监控和提示的话,可以这么用
// debugImplementation 'com.github.markzhai:blockcanary-android:1.5.0'
// releaseImplementation 'com.github.markzhai:blockcanary-no-op:1.5.0'
}
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
BlockCanary.install(this, BlockCanaryContext()).start()
}
}
ラグ ログのアップロード、ラグしきい値の調整などの一連の要件がある場合は、継承クラスを通じてBlockCanaryContext
関連するmethod
実装を書き直すことができます。
デバイス上でコードを実行すると、メイン スレッドがブロックされると、上部の通知バーにブロック通知が表示されます。クリックすると、ブロックの詳細が表示されます。次の図に示すように、MainActivity のメイン スレッドの 16 行のコードには、1008 ミリ秒間ブロックされるという問題があります。
注: Android のバージョンによっては、
BlockCanary.install(this, BlockCanaryContext()).start()
インストール プログラムのインストール時にエラーが発生する場合があります。エラーが発生した場合は、別のデバイスでテストすることをお勧めします。
詳細については、AndroidPerformanceMonitorを参照してください。
アプリ検査 アプリ検査
App Inspection
Android API 26 以降のデバイスは、Android Studio の下部にあるメニュー バーを介して、および関連データをApp Inspection
実行時に観察できます。Database
Network
Background Task
データベースインスペクター
Database Inspector
ローカル データベース データを観察するために使用されます。
具体的な詳細については、「データベース インスペクターを使用したデータベースのデバッグ」を参照してください。
ネットワークインスペクター
Network Inspector
この機能は、ネットワーク リクエスト関連のデータを観察するために使用され、パケット キャプチャに似ています。現在、およびネットワーク接続ライブラリNetwork Inspector
のみがサポートされています。アプリが別のネットワーク ライブラリを使用している場合、でネットワーク アクティビティを表示できない可能性があります。HttpsURLConnection
OkHttp
Network Inspector
具体的な詳細については、「Network Inspector を使用してネットワーク トラフィックを検査する」を参照してください。
バックグラウンド タスク インスペクター
Background Task Inspector
アプリケーションのバックエンドを視覚化、監視、デバッグできますworker
。
具体的な詳細については、「WorkManager ワーカーをデバッグするためのバックグラウンド タスク インスペクターを使用した
WorkManager コード サンプル」を参照してください。
Leakcanary メモリ リーク (ML)、メモリ オーバーフロー (OOM) の検出
メモリ リーク (略して ML) とは、プログラムがメモリを適用した後、適用されたメモリ空間を解放できず、システムが時間内にメモリを再利用できず、他のプロセスが使用するメモリを割り当てることができないことを意味します。通常、メモリの再利用が間に合わない回数が少ない場合はプログラムに影響はありませんが、メモリ自体が比較的小さく、メモリを何度も正常に再利用できない場合は、メモリの割り当て不足が発生し、最終的にはメモリオーバーフローを引き起こします。
メモリ不足 (略して OOM) とは、プログラムがメモリを申請したときに、申請者が使用できる十分なメモリがなく、その結果、データをメモリに正常に保存できなくなることを意味します。
Leakcanary
Android システム用のメモリ リーク検出ライブラリです。
Leakcanary
依存関係を追加することで使用できます。アプリケーションがデバイスにインストールされると、同時にアプリもインストールされます。Leaks
アプリケーションの実行中にメモリ リークが検出された場合、Leaks
通知バーでメモリ リークの通知が表示されます。
dependencies {
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.10'
}
具体的な詳細については、以下を参照してください。
- Android の一般的なメモリ リークと解決策
Leakcanary
ソースコード: LeakcanaryLeakcanary
仕組み: LeakCanary の仕組みLeakcanary
メモリ リークの修正:メモリ リークの修正