IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

[WM23] Gestion de mises à jour automatiques de distributions APK en réseau Local


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juin 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information

    Informations forums :
    Inscription : Juin 2018
    Messages : 3
    Par défaut [WM23] Gestion de mises à jour automatiques de distributions APK en réseau Local
    Bonjour

    j'ouvre cette conversation car j'ai fait beaucoup de recherche pour trouver un exemple pour gérer l'équivalent du LiveUpdate avec des applications Android développées en WinDev Mobile sur un réseau Local

    Je n'ai pas trouvé de solution qui compare directement la version de la distribution (fichier apk) et du programme installé alors que c'est ce que je souhaitai faire, je ne voulais pas gérer les numéros de version en parallèle de Windev

    J'ai trouvé une solution qui n'est pas satisfaisante à 100% mais à le mérite de fonctionner, son principal défaut étant qu'elle télécharge la distribution à chaque lancement, mais dans mon cas sur un réseau local en Wifi, cela est supportable

    l'idée de ce post est que vous puissiez rebondir sur ma solution et pourquoi pas l'améliorer ...

    J'ai installé un serveur FTP en local et le principe est le suivant, au lancement de mon application Android, le programme télécharge la distribution présente sur le serveur compare les versions et si il y a différence installe la nouvelle version
    j'utilise pour cela une procédure WinDev et qui appelle une procédure Java

    Voilà le code WinDev au lancement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    nfic, FicLocal,NumVersion est une chaîne
    IDCOnnexion est un entier
     
    nfic="TestAndroid.apk"
    FicLocal=ComplèteRep(SysCacheStockageExterne(1))+nfic
    IDCOnnexion=FTPConnecte("10.1.2.41/Android")
    SI IDCOnnexion>-1 ALORS
    	SI fFichierExiste(FicLocal) ALORS
    		SI PAS fSupprime(FicLocal) ALORS
    			Erreur("Erreur Suppression ancienne archive")
    		FIN
    	FIN
    	SI FTPRécupère(IDCOnnexion,nfic,FicLocal) ALORS
    		FTPDéconnecte(IDCOnnexion)
    //		Info("Transfert OK "+nfic+" vers "+FicLocal,"Test de la version")
    		SI fFichierExiste(FicLocal) ALORS
    			NumVersion=TestVersionAPK(FicLocal)
    //			Info(NumVersion)
    			SI NumVersion<>"0.0.0.0" et NumVersion<>ExeInfo(exeVersion) ALORS
    				Info("Une nouvelle version est disponible et va être installée","Suivez les instructions pour réaliser l'installation")
    				LanceAppliAssociée(FicLocal)
    				Multitâche(0)
    				FinProgramme()
    			FIN
    		SINON
    			Erreur("Fichier introuvable",FicLocal)
    		FIN
    	SINON
    		FTPDéconnecte(IDCOnnexion)
    		Erreur("Erreur transfert "+nfic+" vers "+FicLocal)
    	FIN
    SINON
    	Info("Connexion pas OK")
    FIN
    et la procédure Globale en Java, pour la créer, créez une procédure globale normale et cliquez sur le logo WL à gauche de sa barre de titre pour transformer en code Java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    import android.content.*;
    import android.content.pm.*;
    import android.content.pm.PackageManager;
     
    public static String TestVersionAPK(String FileName)
    {
    String Valret="";
    Context myContext = getApplicationContext();
    PackageManager pm = myContext.getPackageManager();
    PackageInfo info = pm.getPackageArchiveInfo(FileName,PackageManager.GET_META_DATA);
    if(info != null) {
    	Valret=info.versionName;
    	}
    else {
    	Valret="0.0.0.0";
    	}
    return Valret;
    }

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Pourquoi télécharger l'apk à chaque fois ?

    Suffit de monter un serveur web qui va héberger l'apk avec une url qui te retourne la version actuelle de l'apk.
    Ton application fait une requête sur cette url à chaque démarrage (par exemple) et compare le numéro de version reçue avec celui installé. Si le numéro reçue est supérieur à celui installé , tu télécharges et met à jour l'application , sinon tu ne fais rien.

    Le plus simple pour lire la version présente dans un apk est d'utiliser l'utilitaire aapt dispo dans le sdk android :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    aapt dump badging myapp.apk
    Va retourner un ensemble d'info dont la version de l'appli qu'il suffit d'extraire.

    C'est également possible dans n'importe quel langage de programmation mais un peu plus compliqué.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Candidat au Club
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juin 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information

    Informations forums :
    Inscription : Juin 2018
    Messages : 3
    Par défaut
    merci beaucoup Grunk

    je suis novice en dev Android et ne connaissais pas cet utilitaire, il retourne effectivement l'info et permettrait une nette amélioration de mon système

    maintenant je ne vois pas comment faire une url qui retourne l'info à part peut être par le biais d'un webservice ...

  4. #4
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    La ça n'a plus rien à voir avec android. Ça sera en fonction du langage serveur que tu vas utiliser.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Candidat au Club
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juin 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information

    Informations forums :
    Inscription : Juin 2018
    Messages : 3
    Par défaut
    Donc j'ai créé un Webservice qui exécute aapt à distance avec le nom de la distrib en paramètre et me retourne sa version

    Ceci me permet effectivement de ne télécharger que s'il y a une version plus récente

    Un grand merci à toi, Grunk pour ta super astuce qui finalise mon besoin

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB6] Code pour Mise à jour automatique
    Par marsup54 dans le forum VB 6 et antérieur
    Réponses: 45
    Dernier message: 10/02/2006, 18h05
  2. [Plugin][Hibernate Synchronizer] mise à jour automatique
    Par cofy dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 30/01/2006, 09h28
  3. mise à jour automatique de champs entre 2 tables
    Par romdyane dans le forum Access
    Réponses: 5
    Dernier message: 11/10/2005, 18h51
  4. système de mise à jour automatique
    Par eponette dans le forum Web & réseau
    Réponses: 2
    Dernier message: 24/08/2005, 20h17
  5. Mise à jour automatique d'un JTextAera
    Par Vlakyron dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 25/09/2004, 20h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo