2009-02-18 10 views
4

Je fais du développement iPhone sur un Mac PowerPC. Comment puis-je faire en sorte que la signature de code fonctionne correctement pour que je puisse construire sur mon iPhone?Comment développer correctement pour l'iPhone sur un Mac PowerPC?

L'iPhone SDK ne prend pas officiellement en charge PowerPC, mais avec un peu d'agitation, il peut être installé. Voir here. J'ai installé le SDK et fonctionne bien dans Xcode et le simulateur d'iPhone fonctionne bien.

Cependant, je ne peux pas construire sur mon iPhone dans Xcode - la signature du code est fubar. Certaines personnes intelligentes ont créé des solutions de contournement here. A savoir, j'ai utilisé le script codesign que Tiku a posté avec certaines des corrections. Cela m'a aidé à faire des progrès. Le code compile maintenant, mais je reçois toujours une erreur 0xE800003A lorsqu'il essaie de se déployer.

Je pense avoir toutes mes clés et tous mes profils de configuration configurés correctement. Mon iPhone est enregistré pour le développement, j'ai créé le profil d'approvisionnement. L'AppID répertorié dans le portail de développement indique MagicNumber.com.website. * Et dans mon projet, l'ID de l'ensemble est défini sur com.website. $ {PRODUCT_NAME: identifier}. Dans les paramètres du projet, le nom de produit est HelloWord et l'identité de signature de code est mon certificat de développeur.

Le journal de la console de l'iPhone dit: Wed Feb 18 14:57:55 AFCD inconnus [180]: mobile utilisateur uid 501

Wed Feb 18 14:57:55 AFCD inconnus [180]: le mode est 0x41e8 Mer Feb 18 14:57:55 unknown installation_mobile_proxy [182]: install_embedded_profile: Ignorer l'installation du profil incorporé Mer Feb 18 14:57:55 unknown installation_mobile_proxy [182]: verify_executable: Impossible de valider la signature: e800800e Mer Fév 18: 14:57:55 unknown installation_proxy_mobile [182]: preflight_application_install: Impossible de vérifier /var/tmp/install_staging.QNk2sD/HelloWorld.app/HelloWorld Wed Feb 18 14: 57: 5 5 unknown_installation_proxy [182]: install_application: Impossible d'installer l'application de contrôle en amont Wed Feb 18 14:57:55 unknown installation_mobile_proxy [182]: handle_install: Installation échouée

Toute aide est appréciée!

+0

[Ce thread SO précédent] (http://stackoverflow.com/questions/37822/is-it-just-the-iphone-simulator-that-is-restricted-to-intel-only-macs) peut être d'utilisation pour vous. – ceejayoz

Répondre

1

J'ai eu les mêmes problèmes que vous -.. Je pourrais une compilation croisée et installez l'application sur l'iPhone, mais cela échouerait toujours avec une violation de sécurité. Pour contourner cela, j'ai dû jailbreaker mon téléphone et installer un MobileInstaller patché (je crois que l'application Cydia a maintenant un paquet nommé Installous qui corrige votre MobileInstaller.) Malheureusement, je pense qu'Installous est aussi utilisé pour pirater des applications). Puis, dans Info.plist de votre projet, vous devez ajouter ce qui suit:

<key>SignerIdentity</key> 
<string>Apple iPhone OS Application Signing</string> 

Cela permettra à votre téléphone d'exécuter des binaires non signés, ce qui est la seule façon que j'ai pu développer de mon mac ppc.

Je suis toujours en mesure d'acheter des applications à partir de l'appstore et de les faire fonctionner sans aucun problème.

2

À quoi ressemble votre script de codesign? J'avais l'habitude d'utiliser celui-ci quand je travaillais sur un G4: (L'original "/ usr/bin/codesign" devrait être renommé "/usr/bin/codesign.orig" puis sauvegarder ce script sous "/ usr/bin/codesign ». vous devrez le faire avec « sudo » aussi ce script ne fonctionne pas si vos noms de chemin ont des espaces en eux)

#!/usr/bin/perl 
# 
$appDir=$ARGV[$#ARGV]; 
@tmpAry=split(/\//,$appDir); 
$baseAppName=$tmpAry[$#tmpAry]; 
$baseAppName=~s/\.app$//; 
$realAppName="$appDir"."/$baseAppName"; 

$sign=0; 
for($b=0;$b<$#ARGV;$b++) { 
if($ARGV[$b] eq "-s") { 
$sign=1; 
} 
} 

$mums=`file $realAppName`; 
if($sign==1 && $mums=~/executable arm/) { 
#print "Signing armv6..\n"; 
$dev="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/"; 
$tmp="$appDir"."/tmpbin"; 
`$dev/lipo -create $realAppName -output $tmp`; 
`mv $tmp $realAppName`; 
system("/usr/bin/codesign.orig",@ARGV); 
`$dev/lipo -thin armv6 $realAppName -output $tmp`; 
`mv $tmp $realAppName`; 
system("rm $appDir"."/CodeResources"); 
system("cp $appDir"."/_CodeSignature/CodeResources $appDir"."/CodeResources"); 
exit 0; 
} else { 
exec '/usr/bin/codesign.orig',@ARGV; 
} 
1

Depuis le 12 avril 2009, iPhone Os 2.2.1 le correctif de script fonctionne parfaitement sur mon iBook G4.

Quoi qu'il en soit, après avoir passé la majeure partie de la journée à chercher des correctifs sur Google, je vois qu'il y a quelques personnes qui ont encore des problèmes. Assurez-vous de copier/coller correctement, car si vous obtenez une erreur dans le script et que le codecode échoue, Xcode ne le remarquera pas et essaiera d'installer l'application dans son état non signé, ce qui vous donnera une erreur lors du déploiement (PAS lors de la construction). Dans mon cas, j'avais collé le texte dans une petite fenêtre de terminal, cassant quelques lignes de code et il m'a fallu un jour pour trouver l'erreur. Au moins maintenant j'ai une connaissance impressionnante des certificats, de la signature de code et de Xcode ...

Si vous avez toujours des problèmes, c'est probablement dû à une incompatibilité identificateur de paquet/appId sur laquelle il y a des tonnes de messages.

1

Il peut également être utile de garder à l'esprit que XCode peut être un peu floconneux lorsqu'il s'agit de certificats, de signature et d'installation sur des périphériques (peut-être sur PPC, pas essayé sur un mac Intel).

Je trouve les étapes suivantes trier habituellement les choses lorsqu'une configuration précédemment travail arrête soudain:

  1. Nettoyer toutes les cibles XCode
  2. Supprimer une version installée de l'application de votre appareil (application habituelle procédure de désinstallation, cliquez sur le petit « x »)
  3. Quitter XCode complètement, et commencez à nouveau

Si vous ne l'avez jamais avec succès signé votre application, il peut être un problème de configuration réel, mais une fois que cela fonctionne, assurez-vous d'essayer ce qui précède avant de s'inquiéter quelque chose est cassé :)

Espérons que cela aide.

Questions connexes