Wie ich die Computersteuerung vom Telefon aus durchf├╝hrte

Bild

Zuf├Ąllig war ich frei von der Arbeit. Andererseits bin ich es nicht gewohnt, im Leerlauf zu sitzen, aber ich wollte schon lange etwas Neues ausprobieren.
Ich musste nicht lange nachdenken, da ich die Entwicklung von Flutter schon lange verfolge. Ich war vorher ├╝berhaupt nicht in die mobile Entwicklung involviert, daher war es doppelt interessant, mich selbst zu ├╝berpr├╝fen - war ich als Entwickler nicht v├Âllig taub? Nun, es ist klar, dass der Artikel f├╝r die gleichen "Dummies" wie ich entworfen wurde. Es werden keine Beispiele und Analysen zu spezifischem Code, sondern allgemeine Impressionen beschrieben.

Da f├╝r mich der beste Weg zum Erlernen einer Sprache oder einer neuen Technologie darin besteht, eine kleine, aber vollst├Ąndige Anwendung zu erstellen, begann ich mit der Festlegung der Aufgabe.

Erkl├Ąrung des Problems


Ich wollte schon lange eine Anwendung auf meinem Telefon haben, die etwas auf meinem Computer ausf├╝hrt. Eine Art Bedienfeld, wenn Sie nicht zwischen Programmen wechseln m├╝ssen, bewegen Sie die Maus auf der Suche nach dem Men├╝ und f├╝hren Sie andere Aktionen aus. Ein zus├Ątzlicher Bildschirm mit Kn├Âpfen w├╝rde mir auf keinen Fall schaden.

Es ist sofort klar, dass Sie nicht mit einem Telefon arbeiten k├Ânnen, sondern eine Serveranwendung f├╝r den Computer erstellen m├╝ssen. Da ich es selbst mache, k├Ânnen Sie eine Testdatei mit einer Liste der ausgef├╝hrten Befehle verwenden, die auf dem Telefon in Form von Schaltfl├Ąchen angezeigt werden. Bei der Entwicklungssprache gab es kein Z├Âgern, da ich k├╝rzlich ├╝ber Go geschrieben habe und sie f├╝r diese Aufgabe sehr gut geeignet ist.

Am Telefon haben wir also zwei Seiten - eine Anmeldung und eine Liste von Schaltfl├Ąchen. Auf dem Computer - der einfachste Webserver, der beim Start Schaltfl├Ąchen l├Ądt, nacheinander eine Liste zur├╝ckgibt und ansonsten den gew├╝nschten Befehl ausf├╝hrt. Der Einfachheit halber k├Ânnen Sie eine Annahme treffen: Das Telefon muss ├╝ber WLAN mit demselben Netzwerk wie der Computer verbunden sein.

Und nat├╝rlich sollte alles Open Source sein (Links am Ende), damit Interessierte etwas zu kritisieren haben.

Flattern


Da die Serverseite nicht schwierig war, habe ich mich f├╝r Flutter entschieden. Wenn es Schwierigkeiten gibt, m├╝ssen Sie auch nichts auf Go schreiben. Die Installation von Flutter verlief ohne ├ťberraschungen, obwohl ich immer noch Android Studio installieren musste. Da ich Visual Code verwende, habe ich dort auch zus├Ątzliche Erweiterungen installiert. Beim Erstellen eines Projekts erstellt Flutter kein leeres Projekt, sondern ein Programm der Hello-Welt-Ebene, das auf Wunsch sofort gestartet werden kann. Die Frage ist, wie man es sieht. Ich habe drei M├Âglichkeiten ausprobiert

  1. Erstellen Sie einen Emulator in Android Studio . Wenn der Computer nicht leistungsstark ist, gibt es nur ein Plus - Sie k├Ânnen das gew├╝nschte Telefonmodell ausw├Ąhlen. Auf meinem i5 mit 8 GB Speicher und SSD brachte mir die Arbeit mit dem Emulator einige mentale Qualen. Also suchte ich nach Alternativen.
  2. Chrome Da Flutter das Programm in js und html kompilieren kann, habe ich mich f├╝r diese Option entschieden. Dazu musste ich wirklich von einem stabilen Zweig zu einem Master wechseln (im stabilen gibt es keine Webunterst├╝tzung), aber der Start ging viel schneller. Der Nachteil ist, dass einige Funktionen f├╝r Mobilger├Ąte nicht funktionieren und das Erscheinungsbild selbst, z. B. bei Schriftarten, geringf├╝gig anders ist, es sich jedoch gut f├╝r grobe Arbeiten an der Anwendung eignet.
  3. Eigenes Telefon . Eine ausgezeichnete Methode ist, den Entwicklermodus am Telefon einzuschalten und das Mobiltelefon an den Computer anzuschlie├čen. Vorteile - das Fehlen von Bremsen und die "physische" Arbeit mit der Anwendung, Nachteile - ein konstanter Lademodus des Telefons.

Wie Sie wissen, verwendet Flutter die Programmiersprache Dart. Ich werde nicht sagen, dass dies eine herausragende Sprache ist, aber Google hat anscheinend entschieden, dass das Gute nicht verschwinden w├╝rde, und es eine zweite Chance gegeben. Es war keine Zeit, ihn zu unterrichten, also unterrichtete ich ihn nicht. Ich habe mich einfach an das folgende Prinzip gehalten: Wenn in dem Beispiel, dessen Fragment ich verwenden m├Âchte, etwas nicht klar ist, muss dies verstanden werden. Es scheint, dass Sie die Sprache nicht speziell lernen, aber das allgemeine Bild nimmt Gestalt an. Zumindest, was ist der Unterschied zwischen final und const , und was ist ein ?? b , ich wei├č es jetzt.

Flutter hat ein sogenanntes Hot-Reload, bei laufender Anwendung wird durch Dr├╝cken von r - der aktuelle Zustand aktualisiert, R - die Anwendung neu gestartet. Die Sache ist gro├čartig, aber mit ihr hatte ich die einzige ernsthafte Dummheit. Beim Aktualisieren des aktuellen Status
Die Daten werden nicht aktualisiert, dies wird m├Âglicherweise nicht richtig gesagt, aber die Schlussfolgerung lautet: Wenn etwas schief geht, ist es besser, die Anwendung neu zu starten, als ├╝ber die Ursache zu r├Ątseln. Diese Entdeckung hat mich viele Minuten gekostet.

Wenn sowohl Debug- als auch Release-Versionen auf dem Telefon gestartet werden, installiert Flutter apk-Dateien darauf. Das hei├čt, Sie k├Ânnen ein Beispiel einmal ausf├╝hren und es dann bei Bedarf auf dem Telefon ausf├╝hren, ohne das entsprechende Projekt zu ├Âffnen.

Ich habe mich nicht mit dem Interface-Teil besch├Ąftigt. Es gab eine Idee, die M├Âglichkeit zu geben, Schaltfl├Ąchen zu gruppieren und das Wechseln zwischen Gruppen hinzuzuf├╝gen, entschied jedoch, dass f├╝r die erste Version eine einfachere Funktionalit├Ąt ausreicht ... Im Allgemeinen passierte Folgendes.

Bild

Die Freigabe wurde gem├Ą├č der offiziellen Dokumentation gesammelt. Das einzige, wor├╝ber sie sofort warnen k├Ânnten, ist die ├änderung des Paketnamens com.example. *, Da der Play Store die Annahme von Paketen mit solchen Namen ablehnt.

Gehe Server


├ťber den Desktop-Teil gibt es sogar nichts zu erz├Ąhlen. Ich habe ein Paket f├╝r die Arbeit mit dem YAML-Format, ein Paket f├╝r die Protokollierung, angeschlossen und mich nicht einmal mit einem Webserver befasst, sondern ein fertiges Webframework verwendet. Da das Projekt mehr f├╝r den pers├Ânlichen Gebrauch erstellt wurde und die Dinge mit GUI-Schnittstellen nicht sehr gut laufen, habe ich mich darauf beschr├Ąnkt, alle Schaltfl├Ąchen in der Konfigurationsdatei zu definieren. Das einzige erforderliche Feld f├╝r eine Schaltfl├Ąche ist der Name der zu startenden Anwendung. Dar├╝ber hinaus k├Ânnen Sie nat├╝rlich auch Befehlszeilenparameter, Symbole, Titel usw. definieren.

Als ich diesen Artikel schrieb, stellte ich fest, dass das Sicherheitsproblem nicht vollst├Ąndig gel├Âst wurde, aber es gibt zumindest eine Bindung, die auf einem Passwort und / oder einer eindeutigen Kennung f├╝r das Ger├Ąt basiert. F├╝r das lokale Netzwerk ist es meiner Meinung nach ausreichend, aber um den Remote-Server mit dem Hack in der aktuellen Form zu verwalten, w├╝rde ich es nicht riskieren.

Bereitstellung


Wenn die Entwicklung abgeschlossen ist und alles so funktioniert, besteht der n├Ąchste Schritt darin, im PlayStore zu ver├Âffentlichen.



Es gab Bef├╝rchtungen, dass der Antrag abgelehnt werden k├Ânnte, aber es hat sich dennoch gelohnt, eine L├Âsung zu finden. Der einfachste Schritt war, sich anzumelden und das Startgeld zu bezahlen. Alles andere bedurfte eines gewissen Denkprozesses, aber es gab nichts besonders Kompliziertes. Hinweise und Tipps reichten in der Regel aus. Am Anfang machte ich eine Testversion, einen Tag sp├Ąter ├╝bersetzte ich sie ├Âffentlich und einen Tag sp├Ąter wurde sie genehmigt.

Fazit


F├╝r die Erstellung einer einfachen Anwendung ist keine eingehende Untersuchung erforderlich. Die Dokumentation ist sehr umfangreich und im Internet finden Sie immer fertige Beispiele und Artikel. Der Wunsch, mit Flutter zu arbeiten, bleibt bestehen, wenn eine neue Idee entsteht, werde ich sie weiter untersuchen.

Das Erstellen von Dokumentation, das Freigeben einer Version und das Ver├Âffentlichen im Play Store sowie das Schreiben dieses Artikels erforderten eine mit der Entwicklung vergleichbare Zeit.

Quellen: GitHub

Source: https://habr.com/ru/post/de476668/


All Articles