Το Network Inspector στο Android Studio είναι ένα ενσωματωμένο εργαλείο προφίλ που προορίζεται για την παρακολούθηση και ανάλυση της κίνησης δικτύου της εφαρμογής κινητού σε πραγματικό χρόνο. Σύμφωνα με την επίσημη τεκμηρίωση του Android Developers (2025), το εργαλείο επιτρέπει την παρακολούθηση του χρόνου εκτέλεσης των αιτημάτων, του όγκου των μεταδιδόμενων δεδομένων και της κατάστασης HTTP κάθε κλήσης. Το εργαλείο δεν απαιτεί αλλαγές στον κώδικα της εφαρμογής και λειτουργεί "έτοιμο" με οποιοδήποτε έργο σε API Level 14 και άνω.
Κύρια σημεία
Network Inspector είναι ένα εργαλείο προφίλ δραστηριότητας δικτύου ενσωματωμένο στο Android Studio. Επιτρέπει στους προγραμματιστές να βλέπουν σε πραγματικό χρόνο όλα τα αιτήματα HTTP και HTTPS που στέλνει η εφαρμογή, συμπεριλαμβανομένων κεφαλίδων, σώματος αιτήματος και απόκρισης, κωδικών κατάστασης και διάρκειας εκτέλεσης. Διαθέσιμο μέσω του πίνακα Android Profiler από το Android Studio 3.0.
Η κύρια εργασία του Network Inspector είναι ο εντοπισμός σφαλμάτων αλληλεπίδρασης δικτύου της εφαρμογής κινητού με τον διακομιστή. Το εργαλείο χρησιμοποιείται για τον έλεγχο της ορθότητας των μεταδιδόμενων δεδομένων, την ανάλυση χρόνου απόκρισης, την αναζήτηση σφαλμάτων API, καθώς και για τον εντοπισμό μη βέλτιστων μοτίβων δικτύου — για παράδειγμα, πολλαπλών αιτημάτων κατά τη φόρτωση μιας οθόνης. Το Network Inspector λειτουργεί σε οποιαδήποτε συσκευή με API Level 14.
Το εργαλείο υποστηρίζει όλους τους κύριους πελάτες HTTP Android: OkHttp (από την έκδοση 2.x), Retrofit, Ktor (KMM), UrlConnection, Apache HttpClient (παρωχημένο) και WebView. Για OkHttp και Retrofit απαιτείται η βιβλιοθήκη OkHttp Profiler — προστίθεται αυτόματα όταν χρησιμοποιείτε Android Studio 4.1+. Για Ktor απαιτείται ξεχωριστή ρύθμιση παραμέτρων ενδιάμεσου λογισμικού.
Το Network Inspector υποκλέπτει κλήσεις δικτύου σε επίπεδο συστήματος χρησιμοποιώντας τον μηχανισμό Profiler Agent, ο οποίος εισάγεται μαζί με το Android Profiler. Για σωστή λειτουργία απαιτείται έκδοση debug της εφαρμογής. Το εργαλείο δεν τροποποιεί τον κώδικα της εφαρμογής και δεν απαιτεί προσθήκη εξαρτήσεων για βασική λειτουργικότητα.
Κατά την έναρξη της προφίλ, το Network Inspector συνδέεται με τη διαδικασία Debug της εφαρμογής και ακούει όλες τις κλήσεις HTTP που περνούν μέσω OkHttp Client, UrlConnection ή άλλων υποστηριζόμενων βιβλιοθηκών. Κάθε αίτημα καταγράφεται με χρονική σήμανση, επιτρέποντας τη δημιουργία χρονογραμμής δραστηριότητας δικτύου. Για HTTPS χρησιμοποιείται ένα ενδιάμεσο επίπεδο συστήματος που διατηρεί την κρυπτογράφηση κατά τη μετάδοση, αλλά επιτρέπει την προβολή αποκωδικοποιημένου περιεχομένου εντός του Studio.
Η συλλογή δεδομένων γίνεται μέσω της Υπηρεσίας Profiler του Android Studio, η οποία εκτελείται σε ξεχωριστή διεργασία υποδοχής. Στη συσκευή εκτελείται ένας ελαφρύς πράκτορας που μεταδίδει μεταδεδομένα αιτημάτων μέσω του καναλιού ADB. Αυτό ελαχιστοποιεί την επίδραση στην απόδοση της εφαρμογής — η επιβάρυνση είναι μικρότερη από 3% σύμφωνα με δεδομένα της Google. Τα ίδια τα δεδομένα αιτημάτων (σώμα, κεφαλίδες) μεταδίδονται μόνο κατά την ενεργή προβολή λεπτομερειών.
// Σύνδεση OkHttp για ενσωμάτωση με το Network Inspector
val client = OkHttpClient.Builder()
.addInterceptor(HttpLoggingInterceptor().apply {
level = HttpLoggingInterceptor.Level.BASIC
})
.build()
// Το Network Inspector υποκλέπτει αυτόματα όλες τις κλήσεις μέσω του client
client.newCall(Request.Builder()
.url("https://api.example.com/data")
.build()).execute()
Το Network Inspector παρέχει ένα σύνολο εργαλείων για ολοκληρωμένη ανάλυση κίνησης δικτύου. Κάθε λειτουργία στοχεύει στην επίλυση μιας συγκεκριμένης εργασίας εντοπισμού σφαλμάτων — από τον έλεγχο κεφαλίδων έως την ανάλυση απόδοσης API.
Η κύρια οθόνη του Network Inspector εμφανίζει τη χρονολογία όλων των αιτημάτων με τη μορφή χρονογραμμής. Κάθε αίτημα αναπαρίσταται με μια χρωματιστή γραμμή: πράσινο — επιτυχής απόκριση (2xx), μπλε — ανακατεύθυνση (3xx), κίτρινο — σφάλμα πελάτη (4xx), κόκκινο — σφάλμα διακομιστή (5xx). Το μήκος της γραμμής αντιστοιχεί στον χρόνο εκτέλεσης του αιτήματος από τη σύνδεση έως τη λήψη πλήρους απόκρισης. Αυτό επιτρέπει τον άμεσο εντοπισμό αργών ή αποτυχημένων αιτημάτων.
| Παράμετρος | Περιγραφή | Παράδειγμα τιμής |
|---|---|---|
| URL | Πλήρης διεύθυνση αιτήματος | https://api.example.com/v2/users |
| Method | Μέθοδος HTTP αιτήματος | POST |
| Status | Κωδικός απόκρισης HTTP | 200 OK |
| Size | Μέγεθος αιτήματος + απόκρισης σε bytes | 12.4 KB |
| Time | Συνολικός χρόνος εκτέλεσης | 342 ms |
Κατά την επιλογή ενός συγκεκριμένου αιτήματος, ανοίγει ένα πάνελ με λεπτομέρειες: Headers (όλες οι κεφαλίδες αιτήματος και απόκρισης), Request Body (σώμα αιτήματος σε μορφή κειμένου ή δυαδική), Response Body (σώμα απόκρισης με δυνατότητα μορφοποίησης JSON), Cookies (αποσταλμένα και ληφθέντα), Timing (διαίρεση χρόνου ανά φάση: DNS, Connection, TLS Handshake, Request, Response).
Το Network Inspector υποστηρίζει φιλτράρισμα αιτημάτων κατά URL, μέθοδο HTTP, κωδικό κατάστασης και τύπο περιεχομένου. Μπορούν να εξαιρεθούν αιτήματα προς συγκεκριμένα domains για εστίαση μόνο στο απαραίτητο API. Η αναζήτηση λειτουργεί σε όλα τα πεδία του αιτήματος, συμπεριλαμβανομένων σώματος και κεφαλίδων, κάτι που είναι βολικό κατά τον εντοπισμό σφαλμάτων μιας συγκεκριμένης λειτουργίας της εφαρμογής. Τα συνδυασμένα φίλτρα επιτρέπουν τη δημιουργία ενός συνόλου κανόνων που εφαρμόζονται αυτόματα σε κάθε έναρξη προφίλ.
Η χρονογραμμή υποστηρίζει ομαδοποίηση αιτημάτων κατά μοτίβα URL. Για παράδειγμα, όλα τα αιτήματα της μορφής /api/v2/users/* μπορούν να συμπτυχθούν σε μία ομάδα. Αυτό απλοποιεί την ανάλυση όταν η εφαρμογή πραγματοποιεί εκατοντάδες αιτήματα σε σύντομο χρονικό διάστημα. Η λειτουργία σύγκρισης γειτονικών αιτημάτων βοηθά στον εντοπισμό αλλαγών στις αποκρίσεις του διακομιστή σε επαναλαμβανόμενες κλήσεις.
Η πρακτική χρήση του Network Inspector καλύπτει τυπικά σενάρια εντοπισμού σφαλμάτων: έλεγχο μορφής δεδομένων, εντοπισμό αργών τελικών σημείων, εύρεση διαρροών μνήμης λόγω μη κλειστών συνδέσεων και ανάλυση προσωρινής αποθήκευσης.
Μια συχνή εργασία — βεβαιωθείτε ότι ο διακομιστής επιστρέφει δεδομένα στην αναμενόμενη μορφή. Το Network Inspector εμφανίζει το σώμα απόκρισης με μορφοποίηση JSON, συμπεριλαμβανομένης της επισήμανσης σύνταξης. Εάν η απόκριση δεν αναλύεται στον πελάτη, στον επιθεωρητή φαίνεται αμέσως η αιτία: έλλειψη πεδίου, λανθασμένος τύπος δεδομένων (συμβολοσειρά αντί για αριθμό) ή υπερβολική ένθεση. Εάν ο διακομιστής επιστρέφει σφάλμα, ο επιθεωρητής εμφανίζει τη δομή σφάλματος με κωδικό και μήνυμα. Για δυαδικές μορφές (Protocol Buffers, εικόνες) εμφανίζεται το μέγεθος και ο τύπος περιεχομένου.
Η καρτέλα Timing διαιρεί την εκτέλεση του αιτήματος σε φάσεις: DNS Resolution, TCP Connection, TLS Handshake, Request Send, Response Receive. Εάν ο συνολικός χρόνος υπερβαίνει το 1-2 δευτερόλεπτα, βάσει της διαίρεσης φάσεων μπορεί να προσδιοριστεί η αιτία. Για παράδειγμα, το μεγάλο DNS υποδεικνύει προβλήματα με τον επιλυτή, το μεγάλο TLS Handshake — παλαιότερη έκδοση πρωτοκόλλου στον διακομιστή, το μεγάλο Response — αργό κώδικα διακομιστή ή μη αποδοτικό αίτημα με περιττά δεδομένα. Η ανάλυση Timing βοηθά στον εντοπισμό σημείων συμφόρησης ακόμη και πριν από την έναρξη βελτιστοποίησης του τμήματος διακομιστή.
Το Network Inspector βοηθά στον εντοπισμό περιττών αιτημάτων — για παράδειγμα, όταν σε κάθε περιστροφή οθόνης το Activity επαναφορτώνει δεδομένα. Στη χρονογραμμή, μια σειρά πανομοιότυπων αιτημάτων το ένα μετά το άλλο υποδεικνύει ξεκάθαρα το πρόβλημα. Η λύση μπορεί να είναι η προσωρινή αποθήκευση, η χρήση ViewModel με διατήρηση κατάστασης ή SingleLiveEvent για μία μόνο φόρτωση.
// Προσωρινή αποθήκευση αιτημάτων με OkHttp για εξάλειψη διπλοτύπων
val cache = Cache(
File(context.cacheDir, "http_cache"),
cacheSize = 10L * 1024 * 1024 // 10 MB
)
val cachedClient = OkHttpClient.Builder()
.cache(cache)
.addNetworkInterceptor(CacheInterceptor())
.build()
Παρά τις εκτεταμένες δυνατότητες, το Network Inspector έχει ορισμένους περιορισμούς που πρέπει να ληφθούν υπόψη. Για ορισμένα σενάρια — όπως η υποκλοπή HTTPS με αυτο-υπογεγραμμένα πιστοποιητικά ή η ανάλυση κίνησης βιβλιοθηκών τρίτων — ενδέχεται να απαιτούνται εναλλακτικά εργαλεία.
Το Network Inspector λειτουργεί μόνο με εφαρμογές Android και δεν υποστηρίζει iOS. Για Kotlin Multiplatform (KMM) ορισμένα αιτήματα ενδέχεται να μην εμφανίζονται εάν εκτελούνται στο εγγενές τμήμα. Ορισμένες βιβλιοθήκες — για παράδειγμα, gRPC, WebSocket (όχι HTTP), GraphQL μέσω Apollo (έως την έκδοση 3.x) — ενδέχεται να υποκλέπτονται μερικώς ή καθόλου χωρίς ρύθμιση πρόσθετων ενδιάμεσων.
Για βαθύτερη ανάλυση κίνησης δικτύου υπάρχουν λύσεις τρίτων: Charles Proxy (πλήρης διακομιστής μεσολάβησης με υποκλοπή HTTPS), Proxyman (αντίστοιχο για macOS), Wireshark (ανάλυση σε επίπεδο πακέτων), Stetho by Facebook (ενσωμάτωση με Chrome DevTools), Chucker (βιβλιοθήκη για επιθεώρηση αιτημάτων εντός εφαρμογής). Κάθε εργαλείο έχει τη θέση του: το Charles και το Proxyman είναι απαραίτητα για τον εντοπισμό σφαλμάτων αλληλεπίδρασης με τον διακομιστή στα αρχικά στάδια ανάπτυξης, ενώ το Chucker — για τη συλλογή πληροφοριών σε δοκιμαστικές εκδόσεις.
| Εργαλείο | Τύπος | Πλατφόρμα | HTTPS | HAR |
|---|---|---|---|---|
| Network Inspector | Ενσωματωμένο στο Android Studio | Android | Ναι | Ναι |
| Charles Proxy | Διακομιστής μεσολάβησης | Cross-platform | Ναι | Ναι |
| Proxyman | Διακομιστής μεσολάβησης | macOS, iOS | Ναι | Ναι |
| Chucker | Επιθεωρητής εντός εφαρμογής | Android | Ναι | Όχι |
| Wireshark | Αναλυτής πακέτων | Cross-platform | Όχι | Όχι |
Συχνές ερωτήσεις
Βεβαιωθείτε ότι η εφαρμογή είναι μεταγλωττισμένη σε διαμόρφωση Debug και εκτελείται με συνδεδεμένο το Android Profiler. Εάν χρησιμοποιείται OkHttp 4.x, ίσως χρειαστεί να ενημερώσετε τη βιβλιοθήκη στην τελευταία έκδοση. Για Ktor, τα αιτήματα εμφανίζονται μόνο όταν χρησιμοποιείτε πελάτη Ktor με Engine που υποστηρίζει υποκλοπή.
Ναι, το Network Inspector υποστηρίζει κίνηση HTTPS χωρίς πρόσθετη ρύθμιση. Σε αντίθεση με το Charles Proxy, δεν απαιτείται εγκατάσταση ριζικού πιστοποιητικού. Το εργαλείο χρησιμοποιεί τον μηχανισμό συστήματος του Android Profiler για αποκωδικοποίηση της κίνησης εντός της συνεδρίας εντοπισμού σφαλμάτων.
Το Network Inspector επιτρέπει την εξαγωγή δεδομένων σε μορφή HAR (HTTP Archive). Πατήστε το κουμπί Export στην επάνω δεξιά γωνία του πίνακα. Το αρχείο HAR μπορεί να ανοίξει σε οποιοδήποτε πρόγραμμα προβολής HAR ή να εισαχθεί στο Charles Proxy και Proxyman για περαιτέρω ανάλυση.
Σύμφωνα με δεδομένα της Google, η επιβάρυνση δεν υπερβαίνει το 3% κατά την ενεργή προφίλ. Όταν το Network Inspector είναι απενεργοποιημένο, δεν υπάρχει επιβάρυνση. Το εργαλείο δεν συνιστάται για χρήση σε εκδόσεις release, αλλά σε συνεδρίες Debug η επίδραση είναι ανεπαίσθητη σε σύγχρονες συσκευές.
Εάν το σώμα απόκρισης εμφανίζεται ως μη αναγνώσιμα ακατέργαστα δεδομένα, αυτό μπορεί να σχετίζεται με συμπίεση gzip ή δυαδική μορφή (Protocol Buffers, MessagePack). Το Network Inspector αποκωδικοποιεί αυτόματα το gzip. Για προσαρμοσμένες μορφές, χρησιμοποιήστε την υπόδειξη Content-Type στις κεφαλίδες απόκρισης.
Σύνοψη
Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση
Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.
Διαβάστε επίσης