web-dev-qa-db-fra.com

xcodebuild - codesign -vvvv dit "l'enveloppe de ressource est obsolète"

Je viens de mettre à jour mon installation xcode pour utiliser xcode 6.0.1 afin de commencer à compiler mon application pour les appareils ios8. Pour une raison quelconque, je ne parviens jamais à signer correctement le fichier d'application généré à l'aide des éléments suivants:

xcodebuild -project GrantM/GrantM.xcodeproj -configuration Release

il compile le code et semble être correct, mais en cours d'exécution:

/usr/bin/codesign --verify -vvvv GrantM/GrantM.app

donnez-moi:

Program /usr/bin/codesign returned 1 : [GrantM/GrantM.app: resource envelope is obsolete]
Codesign check fails : GrantM/GrantM.app: resource envelope is obsolete

vérifiant que le code a bien été signé en utilisant: /usr/bin/codesign -dv GrantM/GrantM.app

résultats:

Executable=Documents/GrantM/GrantM/GrantM.app/GrantM
Identifier=com.grantapps.GrantM
Format=bundle with Mach-O universal (armv7 (16777228:0))
CodeDirectory v=20200 size=647 flags=0x0(none) hashes=23+5 location=embedded
Signature size=4336
Signed Time=24 Sep 2014 12:54:53 pm
Info.plist entries=34
TeamIdentifier=N3KKU46JLY
Sealed Resources version=2 rules=5 files=55
Internal requirements count=1 size=180

quelqu'un at-il déjà rencontré des problèmes similaires sur OSX 10.9.5 et xcode 6.0.1? Ou suis-je simplement un peu stupide et fais quelque chose de manifestement faux?

de plus, j'ai pu trouver la version de débogage de l'application générée dans xcode et pouvoir le signer avec succès, mais comme il s'agit d'une version de débogage, cela ne fonctionnera pas pour la distribution. Je ne peux même pas signer manuellement le fichier d'application généré par xcodebuild.

merci pour toute aide ou conseil à l'avance.

20
Grantism

Si vous utilisez Mac OSX 10.9.5 ou une version ultérieure, vous rencontrez un problème de codesigns avec la signature V2 du système d'exploitation.

Utilisez donc --no-strict flag avec codesign --verify pour remédier à cette erreur.

Si vous utilisez PackageApplication pour créer un fichier .ipa, alors 

Modifiez l'outil de script PackageApplication Perl à l'aide de la commande vi PackageApplication et mettez à jour les occurrences de la fonction codesign pour passer le paramètre --no-strict.

Exemple: 

my $ result = runCmd ("/ usr/bin/codesign", "--verify", "--no-strict" , "-vvvv", $ plugin);

Je faisais face aux mêmes et j'ai eu la réponse suivante de Apple Dev Team. Le problème est résolu pour moi. 

L'outil en ligne de commande “codesign” a été modifié dans 10.9.5 et 10.10, vous devez passer l'option “--no-strict” à la commande, (le problème a été signalé et sera corrigé) . Pour résoudre le problème, enregistrez une copie et modifiez PackageApplication pour passer «« non strict »à codesign. Vous pouvez localiser PackageApplication en exécutant ce qui suit: xcrun -sdk iphoneos -f PackageApplication

28
Omkar

J'ai une configuration du système Jenkins CI pour fournir des versions automatisées de notre application iOS à partir de notre dépôt Git. En outre, je télécharge/soumets également une version intégrée de Crashlytics pour la surveillance du journal des incidents.

Tout fonctionnait bien avec Xcode 6.0 GM, mais depuis l’installation de Xcode 6.0.1, le téléchargement sur Crashlytics échoue avec la même erreur. Je demande leur aide à ce sujet.

Une partie de mon travail de construction utilise xcodebuild pour générer une archive de l'application, et à partir de là, j'utilise également PackageApplication pour obtenir un fichier .ipa. PackageApplication lance la commande codesign et n'échoue PAS. J'utilise une version de distribution, plutôt que de déboguer aussi.

Voici la commande que j'utilise pour nettoyer/archiver l'application dans mon travail:

xcodebuild clean archive -scheme MyScheme -target MyTarget -sdk iphoneos -configuration AdHoc CODE_SIGN_IDENTITY="iPhone Distribution: MyCompany" PROVISIONING_PROFILE="UDID_Of_Provisioning_Profile"

Voici la commande que j'utilise pour empaqueter/obtenir un fichier .ipa de l'application à partir de l'archive générée:

xcrun -sdk iphoneos PackageApplication "Path/to/MyApp.app" -o "/Path/To/MyApp.ipa" --sign "iPhone Distribution: MyCompany" --embed "Path/To/UDID_Of_Provisioning_Profile.mobileprovision"

Essayez de les modifier en fonction de votre configuration et voyez si vous obtenez la même erreur.

4
Sharkus

Suivez ces étapes pour éviter cette erreur.

  1. Supprimer CFBundleResourceSpecification = ResourceRules.plist à partir d'Info.plist
  2. Évitez les règles --resource-rules dans la ligne de codesign et faites la signature de code.
  3. Vérifiez l'application: codesign --verify -vvvv Payload/*. App
1
Febin

Dans mon cas, j’ai vérifié tous les framework et dylib que j’avais l'habitude de découvrir qui est rejeté, puis j'ai démissionné de ce framework même ou de dylib et l'application entière m'a sauvé la peau.

1
Nix Wang

Sous OS 10.10, je dois supprimer --resource-rules dans la ligne codesign

my @codesign_args = ("/usr/bin/codesign", "--force", "--preserve 
metadata=identifier,entitlements","--sign", $opt{sign});
0
Vid