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

EDI Delphi Discussion :

[Android] Résultat différent pour le même code compilé sous Delphi 11 CE ou Delphi 12 CE


Sujet :

EDI Delphi

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 400
    Par défaut [Android] Résultat différent pour le même code compilé sous Delphi 11 CE ou Delphi 12 CE
    Bonjour,
    Je vais de découverte en découverte avec Delphi 12 CE.
    J'ai un code tout simple que j'utilise sous delphi 11 CE pour demander les autorisations, notamment, Lire et écrire des fichiers et enregistrer du son.
    Sous delphi 11 lorsque je lance le programme pour la première fois, cela me demande bien les autorisations correspondante.
    Sous delphi 12, les autorisations de lecture et écriture des fichiers ne sont pas demandées et apparaissent comme refusées alors que la demande d'autorisation enregistrer du son apparaît bien.
    J'ai donc chercher longtemps pourquoi et je me suis aperçu lors d'une fausse manoeuvre que même si les autorisations de lecture et écriture de fichiers apparaissaient comme refusées, je pouvais quand même faire des opérations sur fichier !
    Il suffit de cocher les cases correspondantes dans les options du projet et il n'y a plus besoin de demander les autorisations par programme !
    J'ai remarqué que les fichiers manifest sont différents selon delphi 11 ou 12. Voici les parties différentes :
    Delphi 11 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        <uses-sdk android:minSdkVersion="23" android:targetSdkVersion="32" />
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.RECORD_AUDIO" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    Delphi 12
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        <uses-sdk android:minSdkVersion="23" android:targetSdkVersion="34" />
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
        <uses-permission android:name="android.permission.RECORD_AUDIO" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
        <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    Est-ce que ça pourrait venir de android:targetSdkVersion="34" sur la première ligne et android:maxSdkVersion="32" pour les lignes READ et WRITE_EXTERNAL_STORAGE ?
    Je n'ai pas assez de connaissances sur la syntaxe de ces fichiers pour savoir ce que ça veut dire même si je crois deviner.

    C'est assez pénible ces différences sur android selon le compilateur ... déjà ces demandes d'autorisations c'est très pénible.

    Merci d'avance pour vos lumières.

    Bien cordialement.

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 031
    Par défaut
    Cela revient souvent sur le forum, je ne fais pas de FMX ni d'android mais chaque version de Delphi cherche à supporter le plus haut sdk que possible
    Il est donc logique que par défaut, D12 cible la version 34 et gère par retro-compatibilité la version 32

    C'est le problème d'Android, cela impose un tas de truc à chaque fois qu'il sorte une nouvelle version de l'OS, Delphi ne fait que suivre les préconisations.
    Là c'est Android 14
    Sache qu'il y a déjà Android 15 donc level 35, ... Delphi étant un peu en retard sur Android Studio, et l'on trouve énormément ce genre de questions pour Android Studio !
    Même l'outil de dev officiel, les devs ont des galères pour comprendre ces permissions qui changent tous les ans.

    Et avant de changer de version de Delphi, se renseigner sur les évolutions d'Android est un pré-requis.
    je te recommande de lire Gérer tous les fichiers d'un périphérique de stockage - Déclarez l'autorisation MANAGE_EXTERNAL_STORAGE dans le fichier manifeste.

    et la dépréciation en sdk 33 de READ_EXTERNAL_STORAGE qui a changé entre Android 9, 10 et 11 mais qui devient obsolète en 13 - Autorisations de stockage

    Note: Starting in API level 33, this permission has no effect. If your app accesses other apps' media files, request one or more of these permissions instead: READ_MEDIA_IMAGES, READ_MEDIA_VIDEO, READ_MEDIA_AUDIO. Learn more about the storage permissions that are associated with media files.
    Lors de l'ajout de MANAGE_EXTERNAL_STORAGE en version 30, cela ne posait pas de problème pour READ_EXTERNAL_STORAGE
    Mais avec le passage en version 33 (Android 13), c'est une permission qui n'existe plus c'est détaillé ici : Google publie la première bêta d'Android 13 « Tiramisu » : L'OS mobile dispose d'un nouveau système d'autorisation pour les fichiers multimédias de 2022
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 400
    Par défaut
    Merci pour toutes ces informations dont je prendrais connaissance en détail ce soir
    Comme d'habitude très pointu shai !

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 400
    Par défaut
    Alors je viens de lire tout ce que tu m'as conseillé ... et je n'ai quasiment rien compris !
    Ce langage java est vraiment incompréhensible pour moi (comme le C).
    Rien n'est clair comme en pascal.
    Pourquoi compliquer autant la gestion et l'accès aux fichiers ?
    Sous windows, ça n'a jamais provoqué de grosses catastrophes que les fichiers soient quasiment tous accessibles ... et quelle facilité de parcourir toute l'arborescence même depuis la racine. Je me demande si finalement ce n'est pas parce que sans ces restrictions android serait finalement très peu robuste, voire fragile même.
    Et je me suis essayé à gérer quelques fichiers sous mac et c'est quand même beaucoup plus simple.
    Je n'ai toujours pas compris l'objectif de la complexité des opérations sur fichiers (mais pas que !) sous Android et ce n'est pas la doc dont tu m'as transmis les coordonnées qui vont faciliter ma compréhension.
    Mais je vais persister et faire des tests pour essayer de comprendre.

  5. #5
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 576
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    J'ajoute mon grain de sel à ce que déjà dit par ShaiLeTroll.
    Il est indiqué dans les notes de versions qu'une migration de programmes android nécessite de vérifier que le manifeste doit migrer (soit en effçant ce dernier, soit en mettant à jour via le menu contextuel (j'ai déjà répondu il y a peu sur le même sujet)
    Une fois cela fait reste les oukazes de Google qui se fait un plaisir de changer régulièrement (tous les ans !) le système de permissions. Ne jetez pas la pierre à Embarcadero s'ils essaient de suivre le mouvement il y a hélas toujours un délai.

    Ma reflexion troll : on commence souvent à être mis le dos au mur avec ces OS Google, Apple et même Microsoft nous prennent de plus en plus en otage !
    Je ne suis pas un adepte de la pomme mais je suis faché par google en encore plus avec Microsoft suite à mes problèmes récurrents d'écrans bleus (à chaque mise à jour , on dirait un forcing pour passer à W11 )

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 400
    Par défaut
    Merci Sergio
    Je n'en ai pas après delphi mais après android/google ou la pomme ou Microsoft.
    Tout à fait d'accord avec toi, j'ai de gros problèmes avec ma vieille carte graphique nvidia 8800gts et les dernières maj. Il faut que je réinstalle manuellement les vieux drivers après chaque maj Windows sinon je ne peux plus utiliser la mise en veille prolongée... il faut avouer que mon PC a plus de 16 ans maintenant et même si je l'ai up gradé avec un proc xeon modifié et des ssd il accuse son âge...
    Alors avec les modif logicielles en plus c'est pas terrible
    Par exemple hier soir en lançant delphi 12 ce récemment installé après quelques freezes il a mis plus de 20 minutes à se lancer ! Il était bloqué dans les services d'arrière plan et les chargements des éléments pendant le splash screen à pris des plombes ... pourquoi ? Je me demande s'il n'y a pas quelque chose en tâche de fond pour scanner le PC pour vérifier que les conditions de la version community edition sont bien respectées...

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 400
    Par défaut
    Et puis aussi une surprise hier soir avec les colonnes des grid
    Jusqu'à delphi 11 je gérais manuellement l'alignement des titres de colonne en intervenant par code dans le header et en 12 ça ne marche plus ... debogages ... recherches ... jusqu'à ce que je m'aperçoive que ces propriétés sont maintenant accessibles dans le composant à la conception !
    Donc reprendre toutes les grid et les parties de code qui gèrent la création dynamique de colonne pour définir aussi le headersettings (je crois) de chaque colonne ... cette modification de propriétés publiées m'avait échappé... et il y en aura d'autres... comme l'erreur firedac si une table est filtered et que filter est vide ...
    Ça entretient les neurones ...

  8. #8
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 576
    Billets dans le blog
    65
    Par défaut
    Bonjour,
    Citation Envoyé par navyg Voir le message
    jusqu'à ce que je m'aperçoive que ces propriétés sont maintenant accessibles dans le composant à la conception !
    ... comme l'erreur firedac si une table est filtered et que filter est vide ...
    Il y a d'autres surprises et nouveautés, comme à chaque nouvelles versions, mais la lecture est longue entre les nouveautés et les bogues corrigés, en général je ne fais qu'un survol ne m'arrêtant que sur les points qui me tiennent le plus à coeur (FMX, Firedac).

    Pour ce qui est de l'accès aux headers c'était une demande faite sur le portail Qualité (comme quoi cela sert )
    en nouveautés :
    pour Firedac je citerai le TFDQBE que j'ai essayé de tester (dans sa première version) et pas encore à fond
    Plus VCL, j'ai aussi testé la "nouvelle" manière de traiter les fiches MDI (pas de papier encore), pas mal du tout ce TFormTabsBar , j'ai appliqué ça à une migration d'un programme D3 avec une intense satisfaction, mais il y a tant de paramètres que c'est une gageure de tous les comprendre !

    Ça entretient les neurones ...
    ça tu l'as bien dit, surtout pour un néo-retraité comme moi

    En tout cas ta réflexion sur le filter Firedac m'a confirmé une chose, Firedac est bien proposé dans la community édition, un autre interlocuteur me disait que non
    une chose est sûre, je tenterai d'obtenir aussi une version community (dans une VM) pour pouvoir répondre aux questions que les utilisateurs de celle-ci pourraient poser sur le forum

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 400
    Par défaut
    Je te confirme pour firedac
    Depuis ma première version de community edition 10.3 je crois j'utilise firedac pour gérer les données mysql

    Et ton article sur le QBE ! le QBE de paradox ça me rappelle des souvenirs ... on arrivait à faire des choses très bien avec paradox !

Discussions similaires

  1. Exécution sur une cible XP d'un code compilé sous W7
    Par TaZStars dans le forum Visual C++
    Réponses: 13
    Dernier message: 31/10/2010, 14h31
  2. lecteur code barre sous delphi
    Par haganidjamel dans le forum Delphi
    Réponses: 3
    Dernier message: 20/12/2006, 19h51
  3. Code compilable sous Windows et Unix
    Par xzed dans le forum C
    Réponses: 9
    Dernier message: 16/05/2006, 16h06
  4. utilisation d'un lecteur de code barre sous delphi
    Par bm10 dans le forum Composants VCL
    Réponses: 1
    Dernier message: 19/11/2005, 20h05

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