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

Composants FMX Delphi Discussion :

Deploiement application SQLite


Sujet :

Composants FMX Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 40
    Points : 19
    Points
    19
    Par défaut Deploiement application SQLite
    Bonjour,

    Je teste une appli DBB SQLite sous Android. La base SQLite se crée (normalement) à l'ouverture de l'appli. autre détail : je découvre FMX.
    Sur Windows tout est OK. Mais au déploiement j'ai rencontré 2 soucis :
    1 - La première installation sur le téléphone (Xiaomi au cas ou) c'est bien passée. Mais au lancement de l'appli j'ai une fenêtre noire avec la flamme de Delphi. Et point barre !
    2 - J'ai donc désinstallé l'appli et relancer l'install. Et cette fois nada ! J'ai le message de confirmation d'install sur le tel mais pas d'appli ! J'avais auparavant installé 2 ou 3 applis de test (sans BDD) et tout était OK. Après de multiples essais (et redémarrages) j'ai tenté d'installer une petite appli "Hello Word" sans succès (même chose que mon appli BDD càd confirmation d'install sans appli à l'écran (ni en mémoire) !!!???

    Auriez-vous des idées sur la (les) raisons de ses problèmes ?

    Merci par avance de votre aide.

    Alain

  2. #2
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    Peut être l'endroit ou tu crée ta base. Donne lui .TXT comme extension. Ex. Mabase.txt

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 40
    Points : 19
    Points
    19
    Par défaut
    Merci Alweber de ton retour,

    J'ai tenté la désinstallation 'propre' en exécutant '-cleaninstall' dans Exécuter / Patramètres. Et ça semble OK (en mode débug uniquement ). mais uniquement pour l'installation. C'est déjà ça.

    L'appli plante toujours sur son ouverture.

    Pour le répertoire de stockage de la base (en .db ou en .TXT) ni GetHomePath ni GetDocumentsPath ne fonctionnent !

    Je vais tenter la copie d'une base mais ça ne me convient pas trop !

    Alain

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    tout d'abord vérifier que la base est bien fermée, par principe j'enlève toujours de la connexion ConnectedStoredUsage.auRuntime->False ce qui m'évite d'y penser
    Ensuite vérifier le déploiement (si elle est bien copiée et où sera mise la base de données) en général ./assets/internal à ma souvenance

    ni GetHomePath ni GetDocumentsPath ne fonctionnent !
    vérifier que system.IOUtils est bien dans les uses
    indiquer explicitement System.IOUtils.TPath.GetHomePath, surtout si FMX.Graphics se situe en amont
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #5
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 40
    Points : 19
    Points
    19
    Par défaut
    Merci SegioMaster,

    Je me suis effectivement mal exprimé.

    Dans le BeforConnect de mon TDBConnection je fais un

    FDConnexion.Params.AddPair('Database',TPath.Combine(TPath.Combine(TPath.GetHomePath, 'MonAppli'),'Mabase.db'));

    En Windows c'est nickel et j'ai bien MaBase.db au bon endroit.

    Par contre, sous Android l'arborescence reste pour moi un grand mystère !! Car je n'ai pas plus de ./Data/Data/ que de ./assets/internal (c'est bien à la racine de Stockage ?)

    Je ne copie pas de MaBase.db dans déploiement puisque je la crée au premier lancement de l'appli. Mais j'ai testé en copiant une base test et c'est pas mieux :

    L'écran se fige sur la belle flamme Delphi qui va rapidement devenir moins agréable .... ;-)

    Alain

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    pourquoi pas plutôt TPath.GetDocumentsPath ou TPath.GetSharedDocumentsPath ?
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  7. #7
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 40
    Points : 19
    Points
    19
    Par défaut
    Pas mieux, ni pour l'un ni pour l'autre

  8. #8
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Bon, sinon, je n'ai jamais été un fan de Params.AddPair
    avec Firebird je passe par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     With Connexion.Params as TFDPhysFBConnectionDefParams do
         begin
            Database:=Parametres.nomBase;
         end;
    je présume qu'il suffit de changer de TFDPhys ConnectionDefParams pour SQLite
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  9. #9
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 40
    Points : 19
    Points
    19
    Par défaut
    Bonjour,

    Je pense avoir trouvé la cause. Mais je n'ai pas la solution.

    C'est en voulant copier à la main (via USB) une base dans le répertoire Documents de mon tèl que j'ai constaté qu'il n'acceptait pas les extensions .db mais db3 et s3db oui !!??
    Ensuite j'ai autorisé manuellement sur le tel le stockage pour l'appli.

    C'est donc un problème de permission sur le tel !!

    Comment gérer ces permissions avec Delphi ? J'ai tatonné sur Projet/Options/Applications/Permissions sans résultat pour l'instant !!!

    Alain

  10. #10
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par 2icd Voir le message
    Bonjour,

    Je pense avoir trouvé la cause. Mais je n'ai pas la solution.

    C'est en voulant copier à la main (via USB) une base dans le répertoire Documents de mon tèl que j'ai constaté qu'il n'acceptait pas les extensions .db mais db3 et s3db oui !!??
    Ensuite j'ai autorisé manuellement sur le tel le stockage pour l'appli.

    C'est donc un problème de permission sur le tel !!

    Comment gérer ces permissions avec Delphi ? J'ai tatonné sur Projet/Options/Applications/Permissions sans résultat pour l'instant !!!

    Alain
    C'est pour cela que je t'ai proposé de renommer ton extension en .txt ce qui marche très bien dans mon cas

  11. #11
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 40
    Points : 19
    Points
    19
    Par défaut
    Bonjour Alweber,

    Effectivement, et j'ai bien pensé à ta réponse. Mais sans la permission (et aussi sur le répertoire de stockage (merci SergioMaster)) ça ne marchait pas mieux !!

    J'ai testé avec succès txt, db3, s3db, machinTruc ... Et tout fonctionne. Pourquoi db ne marche pas ????
    Par rigueur purement perso je préfère utiliser une extension adaptée au fichier (je sais c'est un peu 'con' car on simplifie le travail des hackers ...)

    Alain

  12. #12
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 611
    Points
    3 611
    Par défaut
    Bonjour

    Il ne devrait pas y avoir de problème avec l'extension : l'OS n'est pas censé nous embêter avec les fichiers que nous créons à condition d'avoir le droit de le faire sur les dossiers concernés ce qui devrait être le cas avec TPath.GetHomePath. En revanche ça joue comme sous Windows et macOS si on tente d'ouvrir le fichier en dehors de notre application mais là ce n'est pas le cas.

    As-tu créé ton chemin d'accès 'MonAppli/Mabase.db' avant de l'utiliser ?

  13. #13
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 40
    Points : 19
    Points
    19
    Par défaut
    Bonjour Patrick,

    Merci de ton retour et désolé pour ma réponse tardive. Je crée la base à la première ouverture si elle n'existe pas.
    En fait j'ai réécrit le programme (enfin surtout copié/collé). Et surprenamment ça marche !? Toute la partir test, création et ouverture de la base est identique entre les deux appli. L'une marche et pas l'autre ??
    Il me faut quand-même donner les permissions sur le stockage manuellement après l'install de l'appli si j'utilise GetSharedDocumentsPath. Par contre tout est OK si j'utilise GetDocumentsPath.

    Je pensais en avoir fini mais dès la première tentative de déploiement (après création d'un magasin de clés) j'ai le message INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME à la compilation (le package étant stocké d:\G-Keys\Android\Debug\P_Key\bin\P_Key.apk)
    J'ai essayé sans les _ ni les - sans succès ! J'ai bien -cleaninstall en débug.

    J'ai même réinitialisé l'appareil android pour repartir sur une base propre.
    Le déploiement (construction sur le PC windows) se passe bien (sans erreur) et me génère bien mon apk. Si je le copie sur le téléphone, à l'exécution j'ai le message "Un problème est survenu lors de l'analyse du package"

    Tout ça est un peu "usant" car je ne comprends pas mes erreurs. Heureusement qu'en VCL c'est beaucoup plus calme.

    Alain

  14. #14
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 40
    Points : 19
    Points
    19
    Par défaut
    @Patrick,

    J'ai testé le déploiement de L'exemple GestionContacts du DelphiBookCamp avec les mêmes erreurs. Du coup le seul changement était les informations version (Projet/Options) je suis revenu aux valeurs initiales (Package et label) et tout fonctionne. Ce qui voudrait dire que ces infos doivent être modifiées dès la création de l'appli (avant même un test en débug !!)

    @Tous,

    Si je veux copier des fichiers supplémentaires dans GetDocumentsPath à partir du déploiement de l'appli je dois choisir quoi comme "Chemin distant" ?

  15. #15
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 40
    Points : 19
    Points
    19
    Par défaut
    Bonjour,

    Je vais me répondre à moi-même sur la question de copie de fichiers et d'accès à ces fichiers sur Android.
    Comme nous l'a souvent répété pprem dans son BootCamp : "Regardez dans la doc"

    Bon faut reconnaitre qu'elle est touffue et qu'il faut un peu (beaucoup) de lecture pour arriver à ce que l'on cherche.

    Donc, pour ajouter des fichiers dans un déploiement et y accéder via Android :

    Projet/Déploiement

    1 - Choisir sa plate-forme (dans la liste déroulante de la barre de titre de la fenêtre) : Toutes, Debug ou Release suivant votre projet.
    2 - Cliquer sur Ajouter des fichiers (deuxième icone dans la barre de titre de la fenêtre) et choisir le ou les fichiers souhaités.
    3 - Dans la colonne Chemin distant de chaque fichier ajouté, choisissez assets\internal si vous souhaitez accéder à ces fichier via GetDocumentsPath.

    C'est pourtant simple ;-)

    Bon WE

    Alain

  16. #16
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 611
    Points
    3 611
    Par défaut
    Citation Envoyé par 2icd Voir le message
    Comme nous l'a souvent répété pprem dans son BootCamp : "Regardez dans la doc"


    oui, c'est pratique comme phrase, ça marche pour toutes les questions (ou presque, parce que tout n'est pas dans la doc, mais on trouve toujours une autre doc pour répondre à la question posée)

    Citation Envoyé par 2icd Voir le message
    1 - Choisir sa plate-forme (dans la liste déroulante de la barre de titre de la fenêtre) : Toutes, Debug ou Release suivant votre projet.
    2 - Cliquer sur Ajouter des fichiers (deuxième icone dans la barre de titre de la fenêtre) et choisir le ou les fichiers souhaités.
    3 - Dans la colonne Chemin distant de chaque fichier ajouté, choisissez assets\internal si vous souhaitez accéder à ces fichier via GetDocumentsPath.
    Désolé, je n'avais pas tilt que c'était pour accéder à des fichiers déployés dans l'APK. En effet les chemins ne sont pas libres sur toutes les plateformes.

    Sur iOS, c'est forcément à la racine car il n'y a pas d'arborescence dans les IPA (donc on les récupère sur le chemin d'accès de paramstr(0) et c'est à nous de les déplacer ou copier si besoin dans les documents).

    Pour macOs il y a des dossiers spécifiques qui sont forcés par Apple.

    Pour Android tu as eu ta réponse. Tant mieux. Là encore c'est imposé par l'éditeur du système, donc Google dans ce cas.

    Pour Linux et Windows la question ne se pose pas. Enfin, si, mais tout dépend du mode de distribution choisi, donc ça ne dépend pas plus d'Embarcadero ni de Delphi.

Discussions similaires

  1. Deploiement application delphi et sql server 2005
    Par franck SEFIC dans le forum Bases de données
    Réponses: 13
    Dernier message: 28/04/2008, 10h20
  2. Deploiement Application Builder 2007 et Interbase
    Par LescureImage dans le forum C++Builder
    Réponses: 0
    Dernier message: 09/01/2008, 20h03
  3. deploiement application java?
    Par Mickael Scofild dans le forum Général Java
    Réponses: 1
    Dernier message: 23/05/2007, 07h57
  4. deploiement application html
    Par thyshimrod dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 27/04/2007, 19h30
  5. Deploiement application devc++
    Par arbtec dans le forum Dev-C++
    Réponses: 3
    Dernier message: 21/12/2006, 18h41

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