Débogueur à distance Android - Débogage à distance des applications Android

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


logging.png

Database


database.png

Network


network.png


AndroidRemoteDebugger.init(applicationContext) . AndroidRemoteDebugger.Builder:


AndroidRemoteDebugger.init(
    new AndroidRemoteDebugger.Builder(applicationContext)        
        .enabled(boolean)    //  
        .disableInternalLogging()    //    Android Remote Debugger
        .disableJsonPrettyPrint()    //   json   `Logging`  `Network`
        .disableNotifications()    //      Android Remote Debugger
        .excludeUncaughtException()    //      
        .port(int)    //   ,   8080
        .enableDuplicateLogging()    //     `Logging`     logcat
        .enableDuplicateLogging(new Logger() {  // callback       `Logging`
            @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()
    // other interceptors
    .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


All Articles