Das Debuggen ist ein wichtiger Schritt in der Softwareentwicklung. Mit Such- und Fehlerkorrekturen können Sie Qualitätsprodukte entwickeln.
In diesem Artikel möchte ich über das Debuggen genau von Android-Anwendungen sprechen. Android Studio bietet uns verschiedene Profiling-Tools, wie zum Beispiel:
- logcat ist ein Tool zum Anzeigen von Anwendungsprotokollen, einschließlich Absturzausnahmen. Es kann sowohl in Android Studio als auch im Terminal über adb verwendet werden.
- Android Profiler ist ein leistungsstarkes Tool, mit dem Sie alle Netzwerkanforderungen, CPU-, Speicher- und Batterieverbrauch anzeigen können.
Es gibt auch viele Lösungen von Drittanbietern, mit denen Sie den Netzwerkverkehr, Datenbanken, gemeinsame Einstellungen usw. anzeigen können.
Alle diese Tools haben Vor- und Nachteile. Ihre Minuspunkte umfassen Folgendes:
- viele Abhängigkeiten verschiedener Werkzeuge;
- Komplexität der Verwendung - In der Regel sind alle Tools auf Entwickler ausgerichtet und für andere Teammitglieder, z. B. Tester, Analysten oder Back-End-Entwickler, unpraktisch. In der Regel müssen letztere die Android-Entwickler ziehen, um alle Protokolle anzuzeigen.
- Obligatorische Verbindung des Telefons mit dem Computer, z. B. über ein USB-Kabel.
, . .
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:
- ;
- Enthält mehrere Debugging-Tools gleichzeitig.
- konzentrierte sich nicht nur auf Entwickler;
- Für den Betrieb muss kein Android-Gerät an einen Computer angeschlossen werden.
- Einfach zu verwenden.
Github
Detaillierte Anweisungen zum Arbeiten und Verbinden der Bibliothek finden Sie auf GitHub