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

Plateformes Discussion :

Mise à jour du processus de signature de code pour OS X


Sujet :

Plateformes

  1. #1
    Rédacteur/Modérateur
    Avatar de arnolddumas
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Autriche

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2012
    Messages : 978
    Points : 7 764
    Points
    7 764
    Par défaut Mise à jour du processus de signature de code pour OS X
    Le processus de signature de code sur OS X a été récemment mis à jour. Ces modifications affectent les applications Qt signées pour la distribution, à la fois via et en dehors de l'App Store.

    OS X 10.9 Mavericks a introduit la deuxième version de la signature de code. Cette nouvelle mouture est requise par OS X 10.9.5 et 10.10 (dit Yosemite). La version de développement de Qt est mise à jour afin de répondre à cette nouvelle procédure et Qt 5.4 sera la première version à en bénéficier. Cela comprend différents correctifs pour les outils qmake et macdeployqt. Quoi qu'il en soit, une correction manuelle des erreurs lors de la signature est toujours possible si vous utilisez une version antérieure de Qt.


    La documentation d'Apple sur le sujet est particulière explicite, en particulier le guide sur la signature de code ainsi que la note technique intitulée « La signature de code en profondeur ». Si cela vous intéresse particulièrement, vous pouvez aussi suivre la discussion du ticket associé associé.


    Changement requis au niveau de Qt


    Les changements nécessaires peuvent être séparés en trois catégories : mise à jour du framework et du paquet, mise à jour du contenu du fichier Info.plist et enfin gestion spéciale des importations Qt Quick.

    Mise à jour du framework et de la structure du paquet


    • Le fichier Info.plist doit se trouver à un endroit précis : Versions/5/Resources/Info.plist.
    • La structure du lien symbolique a été mise à jour : le lien symbolique « Current » pointe vers la véritable version (« 4 » ou « 5 »).
    • Le framework doit être propre lors de la signature de code, aucun fichier QtCore.prl ne doit par exemple être présent à la racine. Cela est pour le moment appliqué par macdeployqt.


    À titre d'exemple, voila à quoi devrait ressemble la structure de QtCore.framework :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    QtCore.framework/
        QtCore -> Versions/Current/QtCore
        Resources -> Versions/Current/Resources
        Versions/
            Current -> 5
            5/
                QtCore
                Resources/
                     Info.plist
    Un paquetage typique d'application devrait être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    foo.app/
        Contents/
             Frameworks/
                 QtCore.framework/
             Info.plist
             MacOS/
                 foo
             PkgInfo/
             PlugIns/
             Resources/
    Mise à jour du contenu du fichier Info.plist

    Les fichiers Info.plist tels que générés par la version actuelle de qmake ne contiennent pas certaines clés, comme CFBundleIdentifier (“org.qt-project.QtCore”) ou CFBundleVersion (“5.4.0″).

    Séparation des importations Qt Quick de code et de données dans le paquetage de l'application

    Ceci est une exigence de cette deuxième version de signature du code qui affecte les applications ayant des importations Qt Quick contenant à la fois des fichiers binaires (.dylib) et des données (.qml).

    Les précédentes version de macdeployqt auraient déployé tous ces fichiers dans le dossier Resources/, mais cela est maintenant interdit. Ce problème est résolu en déployant les fichiers .dylib dans le dossier PlugIns/ et en ajoutant un lien symbolique dans le dossier Resources/ qui pointe vers les fameux fichiers .dylib.

    Processus de signature de code et points de contrôle

    Le schéma suivant est typique lors d'un processus de signature de code. Notez bien que, avec Qt 4.8 ou Qt 5.3, certains étapes peuvent échouer. Votre attention doit se porter sur la façon dont il faut utiliser les outils en ligne de commande. La signature de code est possible depuis Xcode, mais elle ne sera pas étudiée dans cet article. Notez que le processus est incrémental : certaines étapes peuvent être exécutées localement par n'importe quel développeur, alors que d'autres nécessitent un accès administrateur au compte développeur.

    1) Signature et vérification du paquetage de l'application
    Pour la signature : codesign --deep foo.app -s MyCertificate ou encore macdeployqt foo.app -codesign=MyCertificatePour la vérification : codesign —verify foo.appL'option -deep signe le paquetage récursivement, ce qui inclus les frameworks contenus. Bien que cette option soit bien commode, elle est documentée comme étant à utiliser en « cas d'urgence ou bien pour des ajustements temporaires ». De toute façon, l'outil macdeployqt issu de Qt 5.4 propose l'option – codesign qui signe récursivement le paquetage de l'application, sans avoir à utilise l'option –deep.

    Jusque-là, les erreurs classiques sont « format du paquetage non reconnu, invalide ou inadapté » et/ou « quelquechose.dylib : objets binaires non signés », ce qui indique que la structure du framework n'est pas correcte ou bien que le paquetage contient des binaires qui n'ont pas étés signés.

    Actuellement, le certificat utilisé ne joue aucun rôle. C'est ainsi que vous pouvez utiliser un certificat autosigné à des fins de développement et/ou de tests.

    2a) Distribution en dehors de l'App Store

    Vérifiez que GateKeeper autorise l'application :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    spctl --assess --type execute foo.app
    Cette commande n'affiche rien si tout s'est bien passé. Ici, le message d'erreur courant est simplement « Rejeté ». Le paquetage de l'application doit être signé avec le certificat de production correspondant à l'identifiant du développeur afin que tout fonctionne. Ce certificat est disponible au téléchargement via le centre de développement Mac.

    2b) Distribution via l'App Store

    Une nouvelle erreur peut ici faire son apparition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ERROR ITMS-9000 Le paquetage de l’application contient un outil ou un framework foo.app/Contents/Frameworks/QtCore.framework qui n'est pas présent dans les identificateurs du paquetage
    Ce point particulier fait toujours l'objet de développements dans le cadre de Qt 5.4. Pour le moment, vous pouvez éditer manuellement les fichiers .plist afin d'ajouter les identifiants nécessaires à votre paquetage.

    Disponibilité

    Ces améliorations sont/seront disponibles dans ces trois versions de Qt :
    • la version source de 5.3 (non empaqueté) ;
    • la version 5.4. Ces mises à jour feront partie de la version 5.4 (disponible sous forme de code
    source ou bien de binaires) ;
    un patch est disponible pour Qt 4.8, avec la volonté de l'intégrer à une prochaine version mineure de Qt 4.8.

    Choses à finir

    Certains correctifs sont encore en cours de développement, notamment :
    • ajout d'un CFBundleIdentifier pour le framework Qt ;
    • changement de l'emplacement des fichiers .prl.

    Source : An Update on OS X Signing

  2. #2
    Membre du Club Avatar de zeecrowddev
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2013
    Messages : 73
    Points : 55
    Points
    55
    Par défaut
    Encore une bonne nouvelle :-)

    Il est vrai que la signature d'un Bundle Qt n'est pas encore très fluide.
    J'ai même été obligé de le retravailler après "macdeployqt" avec "sed" :-(

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/11/2016, 18h35
  2. Réponses: 18
    Dernier message: 06/09/2011, 11h37
  3. Erreur au niveau de la mise à jour d'une table Oracle par code VB
    Par lilas_violet dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 15/07/2010, 13h26
  4. [XL-2000] Mises à Jour réciproques BDD Access / Excel via code VB
    Par Itulu dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/03/2010, 18h55

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