

Mise à jour d'une l'application
#1
Posté 16 December 2017 - 12:23 PM
J'ai terminé et finalisé mon application Air mais j'ai tout bêtement omis d'implanter l'option de mise à jour, j'ai dans un premier temps réalisé un script pour vérifier si une nouvelle mise à jour était disponible, reste à plancher sur deux points à savoir le téléchargement du nouveau fichier Apk et son installation, pouvez-vous me guider pour ces deux derniers points.
Merci à vous.
#2
Posté 16 December 2017 - 13:13 PM
#3
Posté 16 December 2017 - 14:51 PM
#4
Posté 16 December 2017 - 15:15 PM
Il va falloir la créer.
- vérifier la version
- télécharger le fichier apk avec "flash.net.URLLoader" puis enregistrer le fichier avec "flash.system.File" dans File.userDirectory.resolvePath("Download") par exemple
- il me semble que openWithDefaultApplication() ne fonctionne pas sur Android, il faudra créer une ane avec une classe Java équivalente (il faut que je la retrouve)
- fermer l'application
Ça devrait fonctionner
#5
Posté 16 December 2017 - 19:01 PM
#6
Posté 16 December 2017 - 19:40 PM
var file:File = File.userDirectory.resolvePath("Download/tonApp.apk");
var fileStream:FileStream = new FileStream();
fileStream.open(file, FileMode.UPDATE);
fileStream.writeBytes(event.target.data);
fileStream.close();
#7
Posté 17 December 2017 - 10:05 AM
pour l'utiliser
import com.chi.openWithDefaultApplication.OpenWithDefaultApplication;
OpenWithDefaultApplication.open.url(file.url);
à ajouter dans le fichier descripteur de l'application
<extensions>
<extensionID>com.adobe.OpenWithDefaultApplicationExtension</extensionID>
</extensions>
#8
Posté 17 December 2017 - 10:58 AM
Sur les premiers essais ça bug complétement en interne.
var loader_apk:URLLoader = new URLLoader ();
loader_apk.addEventListener(Event.COMPLETE, charge_apk);
loader_apk.load( new URLRequest("http://mon_site/mon_apk.apk") ); // Où récupérer le fichier APK
function charge_apk (event:Event){
var file:File = File.userDirectory.resolvePath("Download/mon_apk.apk"); // Où placer le fichier APK
var fileStream:FileStream = new FileStream();
fileStream.open(file, FileMode.UPDATE);
fileStream.writeBytes(event.target.data);
fileStream.close();
}
#9
Posté 17 December 2017 - 11:45 AM
Rajoute loader_apk.dataFormat = URLLoaderDataFormat.BINARY;
#10
Posté 17 December 2017 - 13:18 PM
Alors en stipulant effectivement le format des données à télécharger c'est déjà mieux et pas de bug au lancement.
Est-il possible dans un premier temps de lancer moi même le téléchargement depuis un btn qui activerait la fonction "charge_apk" en supprimant l'écouteur
loader_apk.addEventListener(Event.COMPLETE, charge_apk);
btn_charge.addEventListener(MouseEvent.CLICK, charge);
function charge(me:MouseEvent):void {
charge_apk(null);
}
#11
Posté 17 December 2017 - 17:15 PM
pol2095, le 17 December 2017 - 10:05 AM, dit :
<extensions>
<extensionID>com.adobe.OpenWithDefaultApplicationExtension</extensionID>
</extensions>
#12
Posté 17 December 2017 - 17:58 PM
function onClick(event:Event):void
{
if(loader_apk) return; // évite de le lancer plusieurs fois
loader_apk = new URLLoader ();
loader_apk.dataFormat = URLLoaderDataFormat.BINARY;
loader_apk.addEventListener(IOErrorEvent.IO_ERROR, onFailure);
loader_apk.addEventListener(Event.COMPLETE, charge_apk);
loader_apk.load( new URLRequest("http://mon_site/mon_apk.apk") ); // Où récupérer le fichier APK
}
function onFailure(event:IOErrorEvent):void
{
event.target.removeEventListener(IOErrorEvent.IO_ERROR, onFailure);
event.target.removeEventListener(Event.COMPLETE, charge_apk);
trace("pas de connection !");
loader_apk = null;
}
function charge_apk(event:Event):void
{
event.target.removeEventListener(IOErrorEvent.IO_ERROR, onFailure);
event.target.removeEventListener(Event.COMPLETE, charge_apk);
var file:File = File.userDirectory.resolvePath("Download/mon_apk.apk"); // Où placer le fichier APK
var fileStream:FileStream = new FileStream();
try
{
fileStream.open(file, FileMode.UPDATE);
fileStream.writeBytes(event.target.data);
}
catch(error:Error)
{
trace("problème lors de l'écriture du fichier !");
}
finally
{
fileStream.close();
loader_apk = null;
}
}
pour la seconde :
dans ton projet, il y a un fichier "application.xml", vérifie que ces lignes sont présentes, sinon il faut les ajouter.
#13
Posté 17 December 2017 - 19:18 PM
à l'heure actuelle j'ai ce message d'erreur:
1172 : La définition com.chi.openWithDefaultApplication:OpenWithDefaultApplication est introuvable.
1120 : Accès à la propriété non définie OpenWithDefaultApplication.
#14
Posté 17 December 2017 - 20:25 PM
https://help.adobe.c...314dff873a-7ffc
#15
Posté 17 December 2017 - 21:42 PM
Merci et bonne soirée.
#16
Posté 18 December 2017 - 07:18 AM
Petit problème pour tester l'appli en interne apparement "OpenWithDefaultApplicationExtension" n'est pas prise en charge pour Windows-x86, j'ai mis le fichier ANE en stand-by afin de continuer à travailler, je ne sais pas si il y a une parade ou éventuellement une autre version pour parer ce problème ?
#17
Posté 18 December 2017 - 08:22 AM
Une apk est conçu pour Android.
#18
Posté 18 December 2017 - 14:43 PM
il faut aller dans "Fichier" > "Paramètres d'ActionScript..." > "Configurer les constantes"
créer une constante "CONFIG::ANDROID"
quand tu compiles pour Android, tu mets la valeur sur true
quand tu compiles pour Windows, tu mets la valeur sur false
le code
{
import com.chi.openWithDefaultApplication.OpenWithDefaultApplication;
}
CONFIG::ANDROID
{
OpenWithDefaultApplication.open.url(file.url);
}
#19
Posté 18 December 2017 - 19:03 PM
Peux tu me dire si j'ai bien fait les choses correctement, j'ai creé une constante et noté "CONFIG::ANDROID" ensuite j'ai collé le code
CONFIG::ANDROID
{
import com.chi.openWithDefaultApplication.OpenWithDefaultApplication;
}
CONFIG::ANDROID
{
OpenWithDefaultApplication.open.url(file.url);
}
#20
Posté 18 December 2017 - 19:29 PM
{
trace("ANDROID");
}
tu as bien créé la constante dans "Fichier" > "Paramètres d'ActionScript..." > "Configurer les constantes" (fait une capture d'écran de la boîte de dialogue) ?
#21
Posté 18 December 2017 - 20:20 PM
Fichier(s) joint(s)
#22
Posté 18 December 2017 - 20:32 PM
il faut voir le code
#23
Posté 18 December 2017 - 20:38 PM
import flash.events.Event;
import flash.filesystem.File;
import flash.filesystem.FileMode;
import flash.filesystem.FileStream;
import flash.net.URLRequest;
import flash.net.URLStream;
import flash.utils.ByteArray;
var loader_apk:URLLoader;
page_maj.btn_maj.addEventListener(MouseEvent.CLICK, onClick);
function progressHandler(event:ProgressEvent):void{
var ratio:Number = event.bytesLoaded / event.bytesTotal;
page_maj.msg.text = "Chargement " + Math.ceil(ratio * 100).toString() + "%";
}
function onClick(event:Event):void
{
if(loader_apk) return;
loader_apk = new URLLoader ();
loader_apk.dataFormat = URLLoaderDataFormat.BINARY;
loader_apk.addEventListener (ProgressEvent.PROGRESS, progressHandler);
loader_apk.addEventListener(IOErrorEvent.IO_ERROR, onFailure);
loader_apk.addEventListener(Event.COMPLETE, charge_apk);
loader_apk.load( new URLRequest("http://mon_site/DEPFB.apk") );
}
function onFailure(event:IOErrorEvent):void
{
event.target.removeEventListener(IOErrorEvent.IO_ERROR, onFailure);
event.target.removeEventListener(Event.COMPLETE, charge_apk);
trace("pas de connection !");
loader_apk = null;
}
function charge_apk(event:Event):void
{
event.target.removeEventListener(IOErrorEvent.IO_ERROR, onFailure);
event.target.removeEventListener(Event.COMPLETE, charge_apk);
var file:File = File.userDirectory.resolvePath("Download/mon_apk.apk");
var fileStream:FileStream = new FileStream();
fileStream.open(file, FileMode.UPDATE);
fileStream.writeBytes(event.target.data);
fileStream.close();
trace("APK Téléchargée !");
CONFIG::ANDROID
{
import com.chi.openWithDefaultApplication.OpenWithDefaultApplication;
}
CONFIG::ANDROID
{
OpenWithDefaultApplication.open.url(file.url);
}
loader_apk = null;
}
#24
Posté 18 December 2017 - 20:42 PM
#25
Posté 18 December 2017 - 20:43 PM
import flash.filesystem.File;
import flash.filesystem.FileMode;
import flash.filesystem.FileStream;
import flash.net.URLRequest;
import flash.net.URLStream;
import flash.utils.ByteArray;
if(CONFIG::ANDROID)
{
import com.chi.openWithDefaultApplication.OpenWithDefaultApplication;
}
var loader_apk:URLLoader;
page_maj.btn_maj.addEventListener(MouseEvent.CLICK, onClick);
function progressHandler(event:ProgressEvent):void
{
var ratio:Number = event.bytesLoaded / event.bytesTotal;
page_maj.msg.text = "Chargement " + Math.ceil(ratio * 100).toString() + "%";
}
function onClick(event:Event):void
{
if(loader_apk) return;
loader_apk = new URLLoader ();
loader_apk.dataFormat = URLLoaderDataFormat.BINARY;
loader_apk.addEventListener (ProgressEvent.PROGRESS, progressHandler);
loader_apk.addEventListener(IOErrorEvent.IO_ERROR, onFailure);
loader_apk.addEventListener(Event.COMPLETE, charge_apk);
loader_apk.load( new URLRequest("http://mon_site/DEPFB.apk") );
}
function onFailure(event:IOErrorEvent):void
{
event.target.removeEventListener(IOErrorEvent.IO_ERROR, onFailure);
event.target.removeEventListener(Event.COMPLETE, charge_apk);
trace("pas de connection !");
loader_apk = null;
}
function charge_apk(event:Event):void
{
event.target.removeEventListener(IOErrorEvent.IO_ERROR, onFailure);
event.target.removeEventListener(Event.COMPLETE, charge_apk);
var file:File = File.userDirectory.resolvePath("Download/mon_apk.apk");
var fileStream:FileStream = new FileStream();
fileStream.open(file, FileMode.UPDATE);
fileStream.writeBytes(event.target.data);
fileStream.close();
trace("APK Téléchargée !");
if(CONFIG::ANDROID)
{
OpenWithDefaultApplication.open.url(file.url);
}
loader_apk = null;
}
#26
Posté 18 December 2017 - 20:49 PM
#27
Posté 18 December 2017 - 20:50 PM
#28
Posté 18 December 2017 - 20:56 PM
#29
Posté 18 December 2017 - 21:05 PM
#30
Posté 18 December 2017 - 21:20 PM
#31
Posté 18 December 2017 - 21:38 PM
Bonne soirée.
#32
Posté 18 December 2017 - 21:53 PM
Soit tu grises les lignes, soit tu conserves quand même la constante de compilation conditionnelle.
1 utilisateur(s) li(sen)t ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)