GPlayCli et GPlayWeb : profiter de Google Play Store sans installer les Google Apps

Posté par (page perso) . Édité par Nÿco, tankey, ZeroHeure, Xavier Teyssier, palm123 et Nils Ratusznik. Modéré par ZeroHeure. Licence CC by-sa
54
20
août
2015
Android

Lorsqu'on utilise une distribution Android (« ROM custom «) sur son téléphone Android, le premier dilemme auquel en général nous devons faire face est celui d'installer ou non les Google Apps. Les Google Apps, c'est l'ensemble des applications et des services qui sont installés par défaut lors qu'on achète un téléphone Android. Elles regroupent Gmail, le Play Store, Hangouts, Maps, PlayGames, Youtube et bien d'autres.

Cependant, même si l'on choisit de ne pas installer ces applications (car il faut le savoir, techniquement et légalement c'est tout ou rien, il n'est pas possible d'installer seulement quelques Google Apps) on aimerait quand même pouvoir aller chercher des apps du Play Store. Il existe F-Droid, qui est un market alternatif au Play Store ne proposant que des applications sous licence libre, qui pourtant est bien fourni mais n'offre pas toutes les alternatives (FDroid est complètement légal et n'a pas pour but de proposer des apps piratées).

Il existe des outils en ligne pour télécharger des paquets APK, mais aussi en version graphique tel que GooglePlayDownloader. On peut donc récupérer les apks sans avoir à installer les Google Apps. Mais un problème persiste : quid des mises à jour des applications ? Cela contraint à vérifier manuellement si une MàJ est disponible pour chaque application, ce qui est très vite fastidieux.

Avant toutes choses, il faut avoir en tête le cadre légal du téléchargement des APKs du Play Store via un outil tiers, en lisant ce charabia juridique. D'après mon interprétation, il n'est pas illégal d'utiliser ce genre d'outils, mais cela ne reste pas clair. Bien évidement, je me décharge de toute responsabilité concernant une éventuelle infraction à ce règlement.

GPlayCli

Pour combler certains manques, tels que les mises à jour automatiques, j'ai décidé de forker GooglePlayDownlader de Tuxicoman pour en faire un outil en ligne de commande. Il permet la recherche, le téléchargement et les mises à jour d'applications déjà téléchargées. Il est disponible sous licence GPL3 à cette adresse : https://github.com/matlink/gplaycli

GPlayWeb

J'en ai fait une interface web, afin d'assurer les mêmes fonctions mais via le navigateur. Elle se nomme GPlayWeb et est dispo à cette adresse : https://github.com/matlink/gplayweb

gplayweb

Je rappelle que GPlayCli et GPlayWeb ne sont pas capables de récupérer des applications payantes. Vous serez aptes à les voir dans la recherche, mais le téléchargement causera une erreur (ou ne se fera pas dans le cas de GPlayWeb).

F-Droid

Le comble, c'est que GPlayWeb est compatible avec un serveur F-Droid, ce qui permet de disposer d'un dépôt F-Droid qui contient des applications personnalisées téléchargées depuis le Google Play Store via GPlayWeb. Pour en voir une version de démonstration, c'est ici : https://gpw.matlink.fr et pour le dépôt FDroid, il faut ajouter cette URL dans FDroid : https://gpw.matlink.fr/repo

[NdM] : il s'agit ici de l'utilisation de F-Droid en serveur local et personnel, permettant la gestion des apps, voulues par l'administrateur de ce dépôt privé, par le client F-Droid du téléphone personnel. En aucun cas le dépôt F-Droid ne propose ce service.

Ainsi, une application téléchargée depuis GPlayWeb sera disponible dans votre dépôt local F-Droid, visible sur le client dans la catégorie GPlayWeb (il faut attendre environ 10 secondes avant que la mise à jour du dépôt soit prise en compte).

Veuillez noter qu'il faut tout de même mettre en place votre dépôt F-Droid, qiu ne sera en rien affilié avec le projet F-Droid, en suivant cette doc.

fdroid

Sécurité

Gardez à l'esprit que les dépôts FDroid sont en mesure de modifier les applications qu'ils fournissent. Il faut donc prêter attention à ne pas ajouter n'importe quel dépôt sur son téléphone, en particulier si vous installez une nouvelle application. En effet, dans le cas d'une mise à jour, si la signature de l'apk a changée entre les versions, Android vous préviendra et refusera de faire la mise à jour sans que vous ne désinstalliez l'application.

Appel à contributions

N'hésitez pas à remonter des bugs si vous en trouvez, à forker pour améliorer, faire des Pull request, et surtout à créer votre propre instance de FDroid+GPlayWeb/GPlayCli afin de prendre votre indépendance.

P.S.: La version de démonstration ne met pas à jour automatiquement les applications pour le moment, et n'est pas encore très stable lorsqu'on enchaîne les téléchargements/suppressions d'applications (le dépôt fdroid doit se rafraîchir à chaque manip').

  • # Techniquement ou légalement?

    Posté par . Évalué à 7.

    J'ai tiqué sur un détail:

    techniquement et légalement c'est tout ou rien, il n'est pas possible d'installer seulement quelques Google Apps

    Techniquement, je comprends bien, légalement, j'ai plus de doutes. Je veux dire, Google peut écrire ce qu'il veut dans ses conditions générales de ventes, mais je pense qu'une telle clause serait abusive. Plus précisément, j'imagine que Google peut très bien vous empêcher (ou essayer) d'accéder à ses services si votre installation n'est pas "conforme" ; par contre, je doute qu'il soit possible d'empêcher les utilisateurs de se débarrasser des logiciels dont il n'a pas besoin (si l'utilisateur trouve le moyen de le faire). C'est un peu comme s'il devenait illégal de désinstaller les crapwares qui viennent avec les ordis sous Windows.

    • [^] # Re: Techniquement ou légalement?

      Posté par . Évalué à 3.

      Concernant le point juridique, je pense que la réponse quant à la question de savoir si c'est légal ou pas d'utiliser d'autres moyens que ceux fournis par Google est négative :-(

      En effet les cgv de Google Play, dès l'introduction renvoient aux CGV de Google :

      • Utilisation de nos Services

      Vous devez respecter les règles applicables aux Services que vous utilisez.

      N’utilisez pas nos Services de façon impropre. Ne tentez pas, par exemple, de produire des interférences avec nos Services ou d’y accéder en utilisant une méthode autre que l’interface et les instructions que nous mettons à votre disposition. Vous ne devez utiliser nos Services que dans le respect des lois en vigueur, y compris les lois et réglementations applicables concernant le contrôle des exportations et ré-exportations. Nous pouvons suspendre ou cesser la fourniture de nos Services si vous ne respectez pas les conditions ou règlements applicables, ou si nous examinons une suspicion d’utilisation impropre.-

      • [^] # Re: Techniquement ou légalement?

        Posté par (page perso) . Évalué à 6.

        Je lis dans les commentaires :

        • "il est illégal…"
        • "clause abusive…",
        • "Vous devez respecter les règles applicables aux Services…".

        Sinon…

        "nous pouvons suspendre ou cesser la fourniture de nos Services"

        Bon, la sanction n'est pas terrible, pas de prison, de bagne de torture ou d'amende !
        Je pense que ce n'est ni abusif, ni illégal. C'est juste pas très élégant.

        • [^] # Re: Techniquement ou légalement?

          Posté par . Évalué à 5.

          Je le comprends pareil que toi. Il n'est pas du tout illégal de bricoler l'installation prévue par Google, c'est juste que si Google s'en aperçoit, ils se réservent le droit de te couper l'accès au service.

          C'est pour cette raison que j'avais posté mon commentaire : affirmer l'illégalité d'une installation non-conforme serait probablement une clause abusive. Or, ce n'est pas ce que fait Google. Donc tout va pour le mieux.

    • [^] # Re: Techniquement ou légalement?

      Posté par (page perso) . Évalué à 5.

      En pratique, certaines personnes se permettent de faire des paquets réduits des Google Apps (voir section GAPPS PACKAGE COMPARISON). C’est notamment pratique pour les téléphones dont la partition système est trop petite (la taille des GApps augmentant en permanence à cause de nouvelles fonctionnalités et applications).

      Écrit en Bépo selon l’orthographe de 1990

  • # Petites coquilles

    Posté par (page perso) . Évalué à 3.

    "Cela contraint à vérifier manuellement su un MàJ est disponible"

  • # ahhh bien

    Posté par . Évalué à 4.

    Excellent !
    Et la logique poussée jusqu'au couplage avec un serveur f-droid modifié, chapeau

    Merci pour le fork en CLI =)

  • # Parce qu'il faut bien demander

    Posté par . Évalué à 8.

    Pourquoi un fork plutôt qu'un patch pour rajouter la fonctionnalité CLI à GooglePlayDownloader ?

    • [^] # Re: Parce qu'il faut bien demander

      Posté par (page perso) . Évalué à 5.

      Car je conçois ça comme un projet différent avec une problématique différente. GPlayCli est orienté côté serveur, GooglePlayDownloader est fait pour l'utilisateur final. Et GooglePlayDownloader importe des modules pas forcément utiles en ligne de commande.
      Et comme j'avais dans l'optique d'ajouter une interface web, avoir le fork sous la main rend les choses plus simples.

      -- Matlink --

  • # blankstore

    Posté par (page perso) . Évalué à 5.

    Merci pour ce projet :)
    J'aime assez l'idée d'avoir ça dans f-droid.
    Sinon moi j'utilise blankstore du projet µg (https://github.com/microg) dont j'ai fait un article détaillé récemment (cf. ma page perso). Le dev de blankstore a été un peu abandonné mais cela fonctionne toujours correctement.

  • # Play Games plus pour longtemps

    Posté par . Évalué à 7.

    Apparemment Google va un peu assouplir sa position : http://www.phonandroid.com/google-imposera-moins-applications-natives-dans-smartphones.html

    Mais on est encore très loin de l'idéal d'installer uniquement ce qu'on veut.

  • # Super idée!!! Mais... petite erreur...

    Posté par . Évalué à 3.

    Super idée!
    Très bon travail!!

    Je ne sais pas si je peux me permettre de poster ce problème ici mais je me lance…

    une fois le serveur lancé, quand j'actualise le dépôt F-Droid depuis terminal Android j'ai:

    File "./gplayweb.py", line 168, in updateFdroidRepo
        self.fdroid_update.create_metadata_and_update()
    AttributeError: 'module' object has no attribute 'create_metadata_and_update'
    

    J'ai cherché la méthode create_metadata_and_update dans tout les fichiers du répertoire fdroidserver et je ne la trouve pas. Me suis-je trompé de version?

    Merci d'avance

    Ps: a priori, pas d'erreur au moment de l'import de fdroidserver depuis GPlayWeb

    • [^] # Re: Super idée!!! Mais... petite erreur...

      Posté par (page perso) . Évalué à 3.

      En effet, tu dois utiliser mon fork de F-Droid server, qui contient cette méthode. Regarde le README à la racine du projet. J'ai pas encore eu le temps de push les modifs sur le master du dépôt d'origine.

      -- Matlink --

  • # Grand merci ! :)

    Posté par (page perso) . Évalué à 2.

    Merci pour cette contribution au monde libre, je dois bien avouer que je cherche à me débarrasser des GAPPS et des services Google Play, l'idée de se servir d'un dépôt Fdroid comme mirroir, c'est brillant ! :)

    J'espère que quelqu'un va nous packager tout ça dans un dépôt pour Debian/Ubuntu server. :)

    • [^] # Re: Grand merci ! :)

      Posté par (page perso) . Évalué à 1.

      C'est une bonne idée, j'y ai pensé mais pas encore eu le temps. Je mets ça dans ma todo list ! :)

      -- Matlink --

  • # Contact...

    Posté par . Évalué à 1.

    Re,

    ou puis-je te contacter pour une petite question technique?

    Merci

  • # Applis payantes

    Posté par . Évalué à 4.

    Bonjour, et merci pour cet outil, le couplage avec fdroid est génial.
    Il me correspondrait d'ailleurs parfaitement si je pouvais télécharger les apk des applications payantes que j'ai acheté. Raccoon le permet, est-il possible d'ajouter cette fonctionnalité à gplaycli en s'inspirant du code de raccoon (java) ?

  • # Splendide !

    Posté par . Évalué à 3. Dernière modification le 25/08/15 à 17:51.

    --mylife--
    Lors de la montée de version de mon smartphone de Jelly Bean vers Kit kat, j'ai fait le choix de ne pas installer les gapps dont gogleplay. Reste que la plupart des éditeurs d'application pour mobile ne publient QUE sur l'appstore de gogle ; donc un peu de frustration. Je peux le comprendre, l'écrasante majorité de leur clientèle est là. Et les services aussi, comme la gestion de la mise à jour du parc.
    --/mylife--

    Cet outil tombe à point.
    Quelques péripéties de gestion des dépendances du à ma conf mais au final, ça marche au poil.

    Un grand merci.

    Je suis impatient de tester un repo perso.

  • # applications non accessibles

    Posté par . Évalué à 3.

    J'ai souhaité récupérer des applications que j'avais téléchargé auparavant.
    Google maintient la liste dans le compte utilisateur, il suffit de la consulter et de récupérer l'identifiant dans l'URL de la fiche.

    J'ai au moins deux applications dont je peux consulter la page mais que je ne peux pas télécharger. Pensant à un problème de localisation du compte utilisé par le script, j'ai essayé avec mes credentials mais même résultat: ces applications ne peuvent ni être cherchées ni téléchargées.

    Error while downloading fr.r0ro.android.FreeTelec : this package does not exist, try to search it via --search before

    C'est le cas aussi pour sncfdirect.android.

  • # Compliqué...

    Posté par (page perso) . Évalué à 0.

    J'adore l'idée, le principe, mais je vais attendre un dépôt pour Ubuntu serveur 14.04 LTS, c'est trop complexe à installer, entre les infos disséminées sur différentes pages, la librairie manquante, une erreur avec gplayweb, la grande inconnue sur le pourquoi et comment ça fonctionne et quelle adresse+port entrer sur le navigateur pour y accéder, le bordel avec python et ses dépôts à part… Tout ça est très très loin d'être intuitif à l'usage, un dev s'en sortira sans doute bien, mais un utilisateur lambda qui touche un peu sa bille sur un serveur web… Ça fait deux heures et demi que je me casse la tête et me voilà face à l'impitoyable erreur :

    $ sudo gplayweb -h
    Traceback (most recent call last):
    File "/usr/local/bin/gplayweb", line 6, in <module>
    from gplaycli.gplaycli import GPlaycli

    En plus en prime, je ne sais même pas comment nettoyer proprement tout le bordel que j'ai du installer… :-/

    • [^] # Re: Compliqué...

      Posté par (page perso) . Évalué à 2.

      Je suis d'accord avec toi. C'est assez casse-tête avec Python pour inclure des librairies externes, packager tout ça et déployer en .deb ou avec pip.
      Je suis en train de déployer GPlayWeb avec pip aussi, qui facilitera l'installation de tout le bazar. Logiquement, un "pip install gplaycli" suivi d'un "pip install gplayweb" devrait faire l'affaire. N'hésite pas à utiliser des virtualenv python pour faciliter le cloisonnement et la suppression de tout ce qui a été installé (vu que tout se situe dans le même dossier, tu dégages le dossier et t'as plus rien).

      Cette erreur est dû au fait qu'il ne trouve pas GPlayCli. Et plutôt que de te casser la tête, pourquoi ne viens-tu pas poster une issue sur github ? en général je réponds assez vite (sauf si je dors) et ça t'évitera des galères surtout si tu es un utilisateur lambda comme tu dis.

      Je conçois que mon projet n'est pas "Michu compliant", mais c'est un projet naissant, qui a besoin de grandir, d'avoir des retours comme les tiens, pour me dire qu'on manque d'info pour l'install', que tel ou tel bug fait planter l'appli, …
      Je me suis concentré sur l'aspect installation que récemment, d'où le manque terrible de doc à ce propos et les bugs qui peuvent survenir en fonction des différents distributions…

      Merci de ton retour en tous cas, et n'oublie pas : https://github.com/matlink/gplayweb/issues

      -- Matlink --

      • [^] # Re: Compliqué...

        Posté par (page perso) . Évalué à 0.

        L'idéal, je pense, serait d'inclure tout ça au sein d'une page de Wiki, avec des informations regroupées et détaillées sur la procédure à suivre, notamment en Français.

        Moi même, je ne connaissais même pas PIP, j'ai préjugé aux premiers abords que comme node.js ça permettait de récupérer des programmes, mais apt-get ne trouvait pas ce dernier, et en tombant sur la page des dépôts, j'ai vu que ne nom du programme était différent.
        Virtualenv, je ne savais pas du tout ce que c'était, et je n'ai pas d'idée claire de comment ça fonctionne, d'autant que les pages en parlant sont surtout en anglais. Et ça n'a pas l'air d'être quelque chose d'évident à assimiler.
        Ensuite, je ne sais même pas si gplayweb et ton fork de fdroid doivent être installé en tant qu'administrateur (root) ou non.
        Sous ubuntu 14.04, je me suis également retrouvé avec pyasn1 0.1.7 d'installé, et pyasn1-0.1.8 était réclamé, là aussi, j'ai du mettre à jour le tout, non sans mal, en avançant à tâtons, j'ai également du à moment donné télécharger python-ndg-httpsclient_0.4.0-1_all.deb car comme indiqué, il n'est pas disponible sur des distributions un peu anciennes. (Mais comme Ubuntu 14.04 est stable, que c'est une LTS, et qu'on peut malgré tout upgrader le noyau, issu des dernières version de la distribution, je préfère rester dessus.)

        Il faudrait que je puisse nettoyer tout ce qui a été effectué pour pouvoir reprendre de 0 et t'indiquer les points facheux. :)

        • [^] # Re: Compliqué...

          Posté par (page perso) . Évalué à 1.

          J'ai mis à jour le Readme en fonction de tes remarques, y'a une partie uninstall à la fin pour procéder à la purge de gplayweb : https://github.com/matlink/gplayweb
          Pour gplaycli, ça devrait être moins compliqué sachant que tout est packagé dans son coin, un pip uninstall gplaycli suffit, et un rm -rf /etc/gplaycli /etc/cron.daily/gplaycli pour retirer les fichiers de confs et de cronjob au cas où ils auraient été installés.

          Ton idée d'un wiki est intéressante, pour le moment j'ai 15 mille trucs à faire donc c'est dans ma TODO list.

          J'ai été réticent à déployer un .deb car cela implique plein de conflit au niveau de dpkg+apt alors qu'avec pip (PyPi) tout est bien plus simple et peut se gérer dans un virtualenv pour plus de propreté (mais donc ne bénéficie pas des màj quasi-automatiques).

          -- Matlink --

          • [^] # Re: Compliqué...

            Posté par (page perso) . Évalué à 1.

            Pour ce qui est du wiki, il se trouve que j'en avais ouvert un justement, pour recenser les infos liées aux terminaux sous Android à la base.

            Exemple ici avec un Elephone P7000 => http://wiki.osremix.com/fr/smartphones/elephone/p7000
            Et ici avec un Asus Zenfone 2 ze551ml => http://wiki.osremix.com/fr/smartphones/asus/zenfone_2_ze551ml

            Si j'arrive à bien me débrouiller pour tout installer proprement, je reporterais ça sur le wiki, voilà le genre de tutoriel que j'ai déjà écrit par le passé => http://wiki.osremix.com/fr/ordinateurs/linux/installer_configurer_serveur_polyvalent_mediacenter et voir ici pour les autres => https://doc.ubuntu-fr.org/utilisateurs/billou .

            Pour dpkg, je ne comprends pas très bien ce que tu veux dire ? Si ça implique un souci de dépendances en fonction de la distribution, il suffirait de ne pas inclure ladite dépendance au sein du paquet, et d'inclure un script bash avec ce dernier, automatisant le téléchargement et l'installation de cette dernière, puis l'installation des paquets pour GplayCli, GplayWeb, et Fdroid.

            S'il s'agit d'éviter de mettre le foutoir au sein du système, dans ce cas l'idéal serait de créer un paquet installant tout dans un dossier dans /opt/ton-pseudo/programme , incluant toutes ses dépendances… Ça permettrait d'éviter de toucher au reste, ensuite il suffira juste de créer des liens symboliques entre les binaires de GplayCli, GplayWeb, et ton fork de fdroid, vers /usr/bin, et de packager tout ça. :)

            Enfin, je pourrais faire ça, mais il faudrait pouvoir recompiler (puis packager) python 2.7 et pip et toutes leurs dépendances vers /opt/lebondossier avec l'argument --prefix=/opt/lebondossier lors de la parte ./configure avant le make , et voir comment fonctionne pip pour qu'il case tout ce qu'il faut dans les bons dossiers.

            Comme ça, ça semble assez lourd, mais finalement, pour assurer la pérennité d'un programme dans le temps sans se soucier de la distribution et de la version des logiciels/dépendances qu'elle inclue et les conflits que ça entraine, c'est sans doute le meilleur moyen… Je m'étais bien amusé avec wine à ce sujet à une époque… https://doc.ubuntu-fr.org/integrer-applications-windows-dans-paquets-logiciels

            Merci en tout cas pour les rajouts dans le readme

            • [^] # Re: Compliqué...

              Posté par (page perso) . Évalué à 1.

              C'est en cours, j'ai pas mal avancé cette après midi et logiquement ça devrait pas mettre le foutoir. Je vais pas proposer de .deb pour gplayweb, mais seulement une install via pip. La même pour gplaycli. C'est plus simple à gérer pour les dépendances. Pour la désinstalle, pour le moment dans le readme je liste les dossiers à dégager, à l'avenir il peut être intéressant d'intégrer un cleanup avec le setup.py (pip supporte ça ?) ou au sein du programme lui-même (ce qui m'embête un peu).

              -- Matlink --

              • [^] # Re: Compliqué...

                Posté par (page perso) . Évalué à 0.

                Dans ce cas alternativement si tu tiens tant que ça à pip, il devrait être possible d'intégrer toute la procédure d'installation/désinstallation de GplayCli, GplayWeb, fdroid, au sein d'un paquet deb, ça serait sans doute le plus propre et simple d'accès pour l'user lambda… Normalement on peut intégrer un script exécuté lors de l'installation, et un autre lors de la désinstallation du paquet. (postinst et postrm de mémoire). :)

                D'ailleurs ces mêmes scripts pourraient être fournis "nus" également à côté. :)

  • # Merci pour votre contribution pour la communauté Android libre sans Google

    Posté par . Évalué à 1.

    Bonjour,
    J'ai envie de vous remercier pour le travail que vous avez fait pour permettre aux utilisateurs d'avoir une autre alternative que Google, Google depuis un certain temps est devenu omniprésent, sur plusieurs secteurs, ce qui fait peur à beaucoup de gens, il est maintenant capable de nos pister facilement, et connaitre nos secrets, et nos confidences.
    J'ai moi même essayer de faire un test, passer une semaine sans utiliser les services de Google, c'est pour cette raison que j'ai opté par un CyanogenMod sans les services de google, et je vous s'assure que l’expérience n'était pas désagréable à cause des limitations (le récit).
    Je pense que les développeur doivent être en mesure de comprendre qu'on est en train de tuer Android pour une version Android de Google uniquement, et que c'est en continuer sur ce chemin, Google aura le total contrôle sur nos vies.
    Je veux vous remercier encore pour votre travail pour un monde vraiment libre, ou utilisateur a plusieurs choix.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.