Aufraeumen vor den eigentlichen Korrekturen — ohne Verhaltensaenderung am Code. Doppelte Plugin-Quelle: Die drei Kotlin-Dateien lagen byte-identisch in native-plugin/ UND in android/app/src/main/java/de/data_it_solution/netdiag/. Gebaut wurde immer nur die Kopie unter android/ — eine Aenderung an der falschen Datei sah deshalb aus wie "der Fix wirkt nicht". native-plugin/ enthaelt jetzt nur noch die Anleitung, die auf den echten Ort verweist. Doku sagte drei Dinge, die nicht stimmen: - stresstest.ts behauptete "laeuft nativ als Foreground-Service". Tut es nicht — im Plugin steht an der Stelle nur ein Kommentar, dass man einen ergaenzen sollte. Bei ausgeschaltetem Display friert Android den Lauf ein. - iperf.ts/scanner.ts/README nannten den Durchsatztest "iperf-kompatibel". Er spricht kein iperf3-Protokoll (kein Cookie, kein Parameterblock) und scheitert gegen einen echten iperf3-Server. - ipscan.ts beschrieb sich als "ARP + Ping + Namen". Gefunden wird nur, wer auf Ping antwortet oder sich per mDNS meldet; die ARP-Tabelle wird lediglich nachgeschlagen und ist ab Android 10 meist gar nicht lesbar. Statt der falschen Zusagen stehen dort jetzt die tatsaechlichen Grenzen plus Verweis auf die Phase, die sie behebt. README: DHCP-Check und WLAN-Scan als Werkzeuge entfernt (sind nicht mehr in tools/index.ts registriert, tauchen aber in alten Protokollen noch auf). Geprueft: vite build ok, svelte-check 0 Fehler (2 vorbestehende Warnungen). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| README.md | ||
Natives Scan-Plugin NetDiagScanner
Der WebView kann keine Raw-Sockets/ICMP/ARP — die eigentliche Netzwerk-Messung läuft in einem nativen Android-Plugin (Kotlin).
Wo der Code liegt
Einzige Quelle:
android/app/src/main/java/de/data_it_solution/netdiag/
├── NetDiagScannerPlugin.kt Capacitor-Plugin mit allen Scan-Methoden
├── MonitorService.kt Vordergrund-Dienst des Geräte-Monitors
├── Snmp.kt minimaler SNMP-v2c-GET-Client
└── MainActivity.kt registriert das Plugin
Bis 08/2026 lagen dieselben Dateien zusätzlich hier im Ordner
native-plugin/. Gebaut wurde aber immer nur die Kopie unterandroid/— eine Änderung an der falschen Datei sah deshalb aus wie „der Fix wirkt nicht". Die Doppelablage ist aufgelöst; dieser Ordner enthält nur noch diese Anleitung.
Das Verzeichnis android/ liegt vollständig im Repo (Kotlin, Manifest, Gradle,
Signing-Config sind dort fest eingerichtet). npx cap sync android kopiert nur die
Web-Assets hinein und aktualisiert die Plugin-Liste — es überschreibt keinen
nativen Code.
Ein neues Plugin-Kommando ergänzen
- Methode in
NetDiagScannerPlugin.ktmit@PluginMethodanlegen. - Im TS-Wrapper
src/lib/scanner.tsdie Signatur ergänzen (inkl. Browser-Mock, sonst lässt sich die Seite im Dev-Server nicht mehr bedienen). - Werkzeug unter
src/lib/tools/<kategorie>/anlegen und intools/index.tseintragen.
Erstmalige Einrichtung (nur relevant, wenn android/ neu erzeugt wird)
Normalerweise nicht nötig — android/ ist eingecheckt. Falls doch:
npm install && npx vite build && npx cap add android- Kotlin-Dateien nach
android/app/src/main/java/de/data_it_solution/netdiag/legen - Plugin in
MainActivity.ktregistrieren:class MainActivity : BridgeActivity() { override fun onCreate(savedInstanceState: Bundle?) { registerPlugin(NetDiagScannerPlugin::class.java) super.onCreate(savedInstanceState) } } kotlin-androidim Gradle-Build aktivieren — sonst werden die.kt-Dateien stillschweigend ignoriert, der Build ist grün und das Plugin fehlt im APK („plugin is not implemented on android", siehe KB #660).- Berechtigungen im
AndroidManifest.xml(Stand heute):<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" /> <uses-permission android:name="android.permission.POST_NOTIFICATIONS" /> <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />ACCESS_FINE_LOCATIONist Pflicht, damit Android WLAN-Scan-Ergebnisse liefert.
Bekannte Einschränkungen
- ARP/MAC:
/proc/net/arpist ab Android 10 in der Regel nicht mehr lesbar — dann bleiben MAC und Hersteller leer. Das ist der Grund, warum in den bisherigen Kunden-PDFs die Spalten MAC/Hersteller leer sind. - Hersteller-Lookup: nur kleiner OUI-Auszug eingebaut. Für volle Abdeckung die
IEEE-OUI-Datei als Asset einbinden und in
ouiVendor()nutzen. - Durchsatz-Test: spricht kein iperf3-Protokoll, sondern schreibt/liest roh
auf einen TCP-Socket. Gegen einen echten iperf3-Server schlägt er fehl; er braucht
eine schlichte TCP-Sink/Source-Gegenstelle. Umbau steht in
../../ROADMAP_UMSETZUNG.md(Phase 1). - Stresstest: läuft nicht in einem Foreground-Service — bei ausgeschaltetem Display friert Android den Lauf ein. Umbau in Phase 2.
- IP-Konflikt-Prüfung: hängt an der ARP-Tabelle und ist damit auf aktuellen Android-Versionen praktisch nicht durchführbar.
- PoE-/Strommessung: bewusst nicht enthalten (Hardware-Grenze) — späteres Modul.