Le débogage est une étape importante du développement logiciel. La recherche et les corrections de bugs vous permettent de développer des produits de qualité.
Dans cet article, je veux parler du débogage exactement des applications Android. Android Studio nous fournit divers outils de profilage, tels que:
- logcat est un outil pour afficher les journaux des applications, y compris les exceptions de plantage. Il peut être utilisé à la fois dans Android Studio et dans le terminal, via adb;
- Le profileur Android est un outil puissant qui vous permet de visualiser toutes les demandes réseau, le processeur, la mémoire et l'utilisation de la batterie.
Il existe également de nombreuses solutions tierces qui vous permettent d'afficher le trafic réseau, les bases de données, les préférences partagées, etc.
Tous ces outils présentent des avantages et des inconvénients. Leurs inconvénients sont les suivants:
- nombreuses dépendances de divers outils;
- complexité d'utilisation - en règle générale, tous les outils sont axés sur les développeurs et peu pratiques pour les autres membres de l'équipe, par exemple les testeurs, les analystes ou les développeurs principaux. En règle générale, ces derniers doivent extraire les développeurs Android pour afficher les journaux;
- Connexion obligatoire du téléphone à l'ordinateur, par exemple via un câble 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:
- ;
- Comprend plusieurs outils de débogage à la fois;
- concentré non seulement sur les développeurs;
- ne nécessite pas de connecter un appareil Android à un ordinateur pour fonctionner;
- facile à utiliser.
Github
Des instructions détaillées pour travailler et connecter la bibliothèque peuvent être trouvées sur GitHub