|
FORUMS PROFESSIONNELS WINDEV, WEBDEV et WINDEV Mobile |
| | | | | |
Débuté par Nico, 04 sep. 2015 16:14 - 5 réponses |
| |
| | | |
|
| |
Posté le 04 septembre 2015 - 16:14 |
Bonjour,
dans le cadre d'une application android j'ai un webservice qui me renvoie le fichier APK (stocké sur un serveur) de la dernière version disponible de cette application.
L'idée étant donc que l'utilisateur puisse télécharger et mettre à jour son application via ce webservice.
Voici mon code (il y a une sorte de pagination qui m'envoie l'APK morceau par morceau) :
//On traite les premiers paquets POUR i = 1 _A_ nBoucle WSGetLatestVersion.idSession = sIDSession WSGetLatestVersion.offset = nBorneInf WSGetLatestVersion.length = 1000000 JAUGE_Jauge = nBorneSup n est un entier = (nBorneSup*100) / nTailleAPK LIB_Pourcentage = n + "%" WSGetLatestVersionresponse = LabmixServices.GetLatestVersion(WSGetLatestVersion) bufAPK += WSGetLatestVersionresponse.GetLatestVersionResult nBorneInf += 1000000 nBorneSup += 1000000 FIN //On traite le dernier paquet WSGetLatestVersion.idSession = sIDSession WSGetLatestVersion.offset = nBorneInf WSGetLatestVersion.length = nTailleAPK - nBorneInf WSGetLatestVersionresponse = LabmixServices.GetLatestVersion(WSGetLatestVersion)
bufAPK += WSGetLatestVersionresponse.GetLatestVersionResult SI PAS EnModeSimulateur() ALORS fSauveBuffer(SysRepCarteStockage()+"\LABMixQC.apk",AnsiVersUnicode(bufAPK)) SINON fSauveBuffer(fRepExe()+"\LABMixQC.apk",bufAPK) FIN LanceAppliAssociée(SysRepCarteStockage()+"\LABMixQC.apk")
Ce qui marche :
Si je télécharge l'APK dans le simulateur windev cela se passe bien, si je copie cette APK dans le mobile et que je lance l'installation elle s'installe bien.
Mon problème : Si je télécharge l'APK directement depuis le mobile android, l'APK est bien créée mais je ne peux l'installer je me prends une erreur : Erreur d'analyse, problème lors de l'analyse de l'ensemble. J'imagine donc que l'APK n'est pas normalement reconstituée.
Auriez-vous une idée ?
Merci |
| |
| |
| | | |
|
| | |
| |
Posté le 04 septembre 2015 - 20:00 |
Bonjour Nico
A mon avis, les lignes WSGetLatestVersionresponse=LabmixServices.GetLatestVersion(WSGetLatestVersion)
bufAPK += WSGetLatestVersionresponse.GetLatestVersionResult
doivent être en cause. Je soupconne le problème habituel ANSI/UNICODE.
Si LabmixServices.GetLatestVersion(WSGetLatestVersion) ou WSGetLatestVersionresponse.GetLatestVersionResult travaillent avec des CHAINES non spécifiés ANSI OU UNICODE, c'est vraisemblablement le problème. Ces chaines vont être en ansi dans le simulateur, en unicode sious android, et l'ajout dans le buffer va donc être complètement différent
Cordialement
-- Fabrice Harari Consultant WinDev, WebDev et WinDev Mobile International
Disponible : WXShowroom.com, WXReplication (open source) Bientôt : WXEDM (open source) Plus d'information sur http://fabriceharari.com
On 9/4/2015 8:14 AM, Nico wrote:
Bonjour,
dans le cadre d'une application android j'ai un webservice qui me renvoie le fichier APK (stocké sur un serveur) de la dernière version disponible de cette application.
L'idée étant donc que l'utilisateur puisse télécharger et mettre à jour son application via ce webservice.
Voici mon code (il y a une sorte de pagination qui m'envoie l'APK morceau par morceau) :
//On traite les premiers paquets POUR i = 1 _A_ nBoucle
WSGetLatestVersion.idSession = sIDSession WSGetLatestVersion.offset = nBorneInf WSGetLatestVersion.length = 1000000
JAUGE_Jauge = nBorneSup n est un entier = (nBorneSup*100) / nTailleAPK LIB_Pourcentage = n + "%"
WSGetLatestVersionresponse = LabmixServices.GetLatestVersion(WSGetLatestVersion) bufAPK += WSGetLatestVersionresponse.GetLatestVersionResult
nBorneInf += 1000000 nBorneSup += 1000000 FIN
//On traite le dernier paquet WSGetLatestVersion.idSession = sIDSession WSGetLatestVersion.offset = nBorneInf WSGetLatestVersion.length = nTailleAPK - nBorneInf WSGetLatestVersionresponse = LabmixServices.GetLatestVersion(WSGetLatestVersion)
bufAPK += WSGetLatestVersionresponse.GetLatestVersionResult
SI PAS EnModeSimulateur() ALORS
fSauveBuffer(SysRepCarteStockage()+"\LABMixQC.apk",AnsiVersUnicode(bufAPK)) SINON fSauveBuffer(fRepExe()+"\LABMixQC.apk",bufAPK) FIN
LanceAppliAssociée(SysRepCarteStockage()+"\LABMixQC.apk")
Ce qui marche :
Si je télécharge l'APK dans le simulateur windev cela se passe bien, si je copie cette APK dans le mobile et que je lance l'installation elle s'installe bien.
Mon problème : Si je télécharge l'APK directement depuis le mobile android, l'APK est bien créée mais je ne peux l'installer je me prends une erreur : Erreur d'analyse, problème lors de l'analyse de l'ensemble. J'imagine donc que l'APK n'est pas normalement reconstituée.
Auriez-vous une idée ?
Merci |
| |
| |
| | | |
|
| | |
| |
Posté le 07 septembre 2015 - 10:44 |
Merci Fabrice, je me doutais un peu que le problème se situait par là. Je vais faire quelques tests |
| |
| |
| | | |
|
| | |
| |
Posté le 07 septembre 2015 - 16:14 |
Le concepteur du webservice m'a dit qu'il renvoyait un byte array, donc à priori pas de problème d'ansi ou unicode ?! Si j'enregistre mon apk tel quel, sur le mobile, le fichier pèse moitié moins que l'original, si j'enregistre mon apk en ayant préalablement convertit mon buffer en unicode le fichier obtenu fait le bon poids.
Dans les deux cas l'apk n'est pas correctement générée. Je sèche ! |
| |
| |
| | | |
|
| | |
| |
Posté le 29 septembre 2015 - 11:02 |
Bonjour Nico,
Sèches-tu encore ? J'ai parfois le même soucis et j'ai constaté que cela venait de l'endroit où avait été téléchargé l'APK. En effet certains utilisateurs installent l'appli en mémoire interne, d'autre en mémoire de stockage. L'APK en mémoire interne ne se lance pas. Pourtant tu utilises SysRepCarteStockage() mais peut-être faut-il un répertoire sur la carte de stockage ?
Cordialement,
Grégory |
| |
| |
| | | |
|
| | |
| |
Posté le 29 septembre 2015 - 17:42 |
Bonjour Grégory,
oui toujours, a vrai dire je ne me suis pas repenché sur ce problème encore. je vais essayer de créer un répertoire sur la carte de stockage pour voir si cela change quelque chose.
Merci pour ton aide. |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|