Debugging adalah langkah penting dalam pengembangan perangkat lunak. Pencarian dan perbaikan bug memungkinkan Anda untuk mengembangkan produk berkualitas.
Pada artikel ini saya ingin berbicara tentang debugging persis aplikasi Android. Android Studio memberi kita berbagai alat profil, seperti:
- logcat adalah alat untuk melihat log aplikasi, termasuk pengecualian macet. Ini dapat digunakan baik di Android Studio dan di terminal, melalui adb;
- Android profiler adalah alat yang ampuh yang memungkinkan Anda untuk melihat semua permintaan jaringan, CPU, memori dan penggunaan baterai.
Ada juga banyak solusi pihak ketiga yang memungkinkan Anda untuk melihat lalu lintas jaringan, database, preferensi bersama, dll.
Semua alat ini memiliki kelebihan dan kekurangan. Minus mereka meliputi:
- banyak ketergantungan dari berbagai alat;
- kompleksitas penggunaan - sebagai aturan, semua alat difokuskan pada pengembang dan tidak nyaman untuk anggota tim lainnya, misalnya, penguji, analis, atau pengembang back-end. Biasanya, yang terakhir harus menarik pengembang android untuk melihat log apa pun;
- Koneksi telepon wajib ke komputer, misalnya, melalui kabel usb.
, . .
Android Remote Debugger
, , Android . :
- Logging — , ;
- Database — ;
- Network — ;
- SharedPreferences – SharedPreferences.
:
- ;
- ;
- ,
http://xxx.xxx.x.xxx:8080
. , (Wi-Fi LAN) Android ; - . .
:
Logging

Database

Network

AndroidRemoteDebugger.init(applicationContext)
. AndroidRemoteDebugger.Builder
:
AndroidRemoteDebugger.init(
new AndroidRemoteDebugger.Builder(applicationContext)
.enabled(boolean)
.disableInternalLogging()
.disableJsonPrettyPrint()
.disableNotifications()
.excludeUncaughtException()
.port(int)
.enableDuplicateLogging()
.enableDuplicateLogging(new Logger() {
@Override
public void log(int priority, String tag, String msg, Throwable th) {
}
})
.build()
);
. - NanoHTTPD. . , , , 8080. . AndroidRemoteDebugger.Builder
.
Logging
. , . , . .
AndroidRemoteDebugger.Log
. . . , Logging . .
: AndroidRemoteDebugger.Log.d("tag", "message")
.
Timber ( Jake Wharton), :
class AndroidRemoteDebuggerTree extends Timber.Tree {
@Override
protected void log(int priority, @Nullable String tag, @NotNull String message, @Nullable Throwable t) {
AndroidRemoteDebugger.Log.log(priority, tag, message, t);
}
}
...
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
Timber.plant(new Timber.DebugTree(), new AndroidRemoteDebuggerTree());
}
}
Network
Network . . . Logging. HTTP . , . Logging, .
OkHttp3 NetLoggingInterceptor. , .
:
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(new NetLoggingInterceptor())
.build();
Database
. . . 15 . , , . sql-.
SharedPreferences
SharedPreferences. , , . SharedPreferences . , .
Android Remote Debugger
build.gradle :
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
build.gradle :
dependencies {
implementation 'com.github.zerobranch:android-remote-debugger:1.0.0'
}
Android Remote Debugger:
- ;
- Termasuk beberapa alat debugging sekaligus;
- berfokus tidak hanya pada pengembang;
- tidak perlu menghubungkan perangkat Android ke komputer untuk operasi;
- mudah digunakan.
Github
Instruksi terperinci untuk bekerja dan menghubungkan perpustakaan dapat ditemukan di GitHub