Comment j'ai contrÎlé l'ordinateur à partir du téléphone

image

Il se trouve que j'étais libre de travailler. D'un autre cÎté, je n'ai pas l'habitude de rester inactif, mais je veux depuis longtemps essayer quelque chose de nouveau.
Je n'ai pas eu Ă  rĂ©flĂ©chir longtemps, car je suis Flutter depuis longtemps. Je n'Ă©tais pas du tout impliquĂ© dans le dĂ©veloppement mobile avant cela, donc c'Ă©tait doublement intĂ©ressant de me vĂ©rifier - n'Ă©tait-ce pas complĂštement engourdi en tant que dĂ©veloppeur. Eh bien, il est clair que l'article est conçu pour les mĂȘmes "nuls" que moi. Il n'y aura pas d'exemples et d'analyse de code spĂ©cifique, mais plutĂŽt une description des impressions gĂ©nĂ©rales.

Étant donnĂ© que pour moi la meilleure façon d'apprendre une langue ou une nouvelle technologie est de crĂ©er une application petite mais complĂšte, j'ai commencĂ© par dĂ©finir la tĂąche.

ÉnoncĂ© du problĂšme


Je souhaite depuis longtemps avoir une application sur mon téléphone qui exécute quelque chose sur mon ordinateur. Une sorte de panneau de contrÎle, lorsque vous n'avez pas besoin de basculer entre les programmes, déplacez la souris à la recherche du menu et effectuez d'autres actions. Un écran supplémentaire avec des boutons ne me ferait certainement pas de mal.

Il est immĂ©diatement clair que vous ne pouvez pas le faire avec un seul tĂ©lĂ©phone, vous devez crĂ©er une application serveur pour l'ordinateur. Comme je le fais moi-mĂȘme, vous pouvez utiliser un fichier de test avec une liste de commandes en cours d'exĂ©cution qui seront affichĂ©es sur le tĂ©lĂ©phone sous forme de boutons. Il n'y a pas eu d'hĂ©sitation avec le langage de dĂ©veloppement, car j'ai rĂ©cemment Ă©crit sur Go et il est trĂšs bien adaptĂ© Ă  cette tĂąche.

Ainsi, sur le tĂ©lĂ©phone, nous avons deux pages - une connexion et une liste de boutons. Sur l'ordinateur - le serveur Web le plus simple qui charge les boutons au dĂ©marrage, retourne une liste une Ă  la fois et exĂ©cute autrement la commande souhaitĂ©e. Pour simplifier, vous pouvez faire une hypothĂšse - le tĂ©lĂ©phone via Wi-Fi doit ĂȘtre connectĂ© au mĂȘme rĂ©seau que l'ordinateur.

Et bien sĂ»r, tout doit ĂȘtre open source (liens Ă  la fin), afin que les personnes intĂ©ressĂ©es aient quelque chose Ă  critiquer.

Flutter


Comme le cĂŽtĂ© serveur n'Ă©tait pas difficile, j'ai dĂ©cidĂ© de commencer avec Flutter. S'il y a des difficultĂ©s, vous n'aurez rien Ă  Ă©crire non plus sur Go. L'installation de Flutter s'est dĂ©roulĂ©e sans surprise, mĂȘme si je devais encore installer Android Studio. Depuis que j'utilise Visual Code, j'y ai Ă©galement installĂ© des extensions supplĂ©mentaires. Lors de la crĂ©ation d'un projet, Flutter ne crĂ©e pas un projet vide, mais un programme de niveau Hello mondial, qui, si vous le souhaitez, peut ĂȘtre lancĂ© immĂ©diatement. La question est de savoir comment le regarder. J'ai essayĂ© trois façons

  1. Créez un émulateur dans Android Studio . Si l'ordinateur n'est pas puissant, il n'y a qu'un seul plus - vous pouvez sélectionner le modÚle de téléphone souhaité. Sur mon i5 avec 8 Go de mémoire et SSD, travailler avec l'émulateur m'a apporté une angoisse mentale. J'ai donc commencé à chercher des alternatives.
  2. Chrome Puisque Flutter peut compiler le programme en js et html, j'ai dĂ©cidĂ© d'utiliser cette option. Pour ce faire, j'ai vraiment dĂ» passer d'une branche stable Ă  master (dans stable il n'y a pas de support web), mais le dĂ©marrage a commencĂ© Ă  aller beaucoup plus vite. L'inconvĂ©nient est que certaines fonctionnalitĂ©s mobiles ne fonctionnent pas et que l'apparence elle-mĂȘme est lĂ©gĂšrement diffĂ©rente, par exemple, dans les polices, mais elle est tout Ă  fait appropriĂ©e pour un travail approximatif sur l'application.
  3. Téléphone propre . Une excellente méthode consiste à activer le mode développeur sur le téléphone et à connecter le téléphone mobile à l'ordinateur. Pour - le manque de freins et le travail "physique" avec l'application, contre - un mode constant de charge du téléphone.

Comme vous le savez, Flutter utilise le langage de programmation Dart. Je ne dirai pas que c'est une langue exceptionnelle, mais Google a apparemment dĂ©cidĂ© que le bien ne disparaĂźtrait pas et lui a donnĂ© une seconde chance. Je n'avais pas le temps de lui apprendre, alors je ne lui ai pas enseignĂ©. J'ai simplement adhĂ©rĂ© au principe suivant, si quelque chose n'est pas clair dans l'exemple dont je veux utiliser le fragment, alors cela doit ĂȘtre compris. Il semble que vous n’ayez pas spĂ©cialement appris la langue, mais l’image gĂ©nĂ©rale prend forme. Au moins, quelle est la diffĂ©rence entre final et const , et qu'est-ce qu'un ?? b , je sais maintenant.

Flutter a un soi-disant rechargement à chaud, lorsque l'application est en cours d'exécution, en appuyant sur r - met à jour l'état actuel, R - redémarre l'application. La chose est géniale, mais avec elle j'ai eu la seule stupeur sérieuse. Lors de la mise à jour de l'état actuel,
les donnĂ©es ne sont pas mises Ă  jour, cela peut ne pas ĂȘtre dit correctement, mais la conclusion est la suivante, si quelque chose ne va pas, il est prĂ©fĂ©rable de redĂ©marrer l'application plutĂŽt que de chercher la cause. Cette dĂ©couverte m'a coĂ»tĂ© plusieurs minutes.

Lorsque les versions de débogage et de sortie sont lancées sur le téléphone, flutter installe des fichiers apk dessus. Autrement dit, vous pouvez exécuter un exemple une fois, puis, si nécessaire, l'exécuter sur le téléphone sans ouvrir le projet correspondant.

Je n'ai pas pris la peine de la partie interface. Il y avait une idée de donner la possibilité de grouper les boutons et d'ajouter la commutation entre les groupes, mais a décidé que pour la premiÚre version une fonctionnalité plus simple était suffisante ... En général, ce qui suit s'est produit.

image

La libération a été recueillie conformément à la documentation officielle. La seule chose qu'ils pourraient immédiatement avertir est le changement du nom du package com.example. *, Car le Play Store refuse d'accepter les packages portant ces noms.

Serveur Go


À propos de la partie bureau, il n'y a mĂȘme rien Ă  dire. J'ai connectĂ© un package pour travailler avec le format YAML, un package pour la journalisation, et je n'ai mĂȘme pas pris la peine d'un serveur web, mais j'ai pris un framework web prĂȘt Ă  l'emploi. Puisque le projet a Ă©tĂ© créé davantage pour un usage personnel, et avec les interfaces GUI, les choses ne sont pas trĂšs bonnes, j'ai dĂ©cidĂ© de me limiter Ă  dĂ©finir tous les boutons dans le fichier de configuration. Le seul champ obligatoire pour un bouton est le nom de l'application Ă  lancer. De plus, bien sĂ»r, vous pouvez Ă©galement dĂ©finir les paramĂštres de ligne de commande, l'icĂŽne, le titre, etc.

En écrivant cet article, j'ai réalisé que le problÚme de sécurité n'avait pas été résolu jusqu'au bout, mais au moins il existe une liaison basée sur un mot de passe et / ou un identifiant unique pour l'appareil. Pour le réseau local, à mon avis, c'est suffisant, mais pour gérer le serveur distant en utilisant le hack sous la forme actuelle, je ne le risquerais pas.

Déploiement


Lorsque le développement est terminé et que tout fonctionne comme ceci, l'étape suivante consiste à publier sur le PlayStore.



On craignait que la demande ne soit rejetĂ©e, mais cela valait quand mĂȘme la peine d'ĂȘtre traitĂ©. L'Ă©tape la plus simple a Ă©tĂ© de s'inscrire et de payer les frais d'inscription. Tout le reste nĂ©cessitait un certain processus de rĂ©flexion, mais il n'y avait rien de super compliquĂ©. En rĂšgle gĂ©nĂ©rale, les instructions et les conseils Ă©taient suffisants. Au dĂ©but, j'ai fait une version test, un jour plus tard je l'ai traduite publiquement et un jour plus tard elle a Ă©tĂ© approuvĂ©e.

Conclusion


Flutter ne nĂ©cessite pas d'Ă©tude approfondie pour crĂ©er une application simple. La documentation est assez complĂšte et vous pouvez toujours trouver des exemples et des articles prĂȘts Ă  l'emploi sur Internet. Le dĂ©sir de travailler avec Flutter demeure, si une nouvelle idĂ©e surgit, je l'Ă©tudierai plus avant.

La création de documentation, la publication d'une version et sa publication sur le Play Store, ainsi que la rédaction de cet article, ont nécessité un temps comparable au développement.

Sources: GitHub

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


All Articles