Como desenvolver adequadamente para o iPhone em um PowerPC Mac?
Pergunta
Eu estou fazendo o desenvolvimento iPhone em um Mac PowerPC. Como faço para obter a assinatura de código para funcionar corretamente para que eu possa construir a minha iPhone?
O iPhone SDK não suporta oficialmente PowerPC, mas com alguma inquietação, ele pode ser instalado. Consulte aqui . Eu tenho o SDK instalado e funcionando bem no Xcode eo simulador iPhone funciona bem.
No entanto, não posso construir a minha iPhone no Xcode - a assinatura de código é fubar. Algumas pessoas inteligentes criaram soluções aqui . Ou seja, eu usei o script codesign que Tiku postada juntamente com algumas das correções. Isso me ajudou a fazer algum progresso. O código compila agora, mas eu ainda obter um erro 0xE800003A quando ele tenta implantar.
Eu acho que tenho todas as minhas chaves e perfis de aprovisionamento configurado corretamente. Meu iPhone é registrado para o desenvolvimento, eu tenho o perfil de aprovisionamento criado. O AppID listados no portal dev diz MagicNumber.com.website * e no meu projeto, eu tenho a ID de pacote definido como com.website $.. {PRODUCT_NAME: identificador}. Em configurações do projeto, nome do produto é HelloWord, ea identidade de assinatura de código é o meu certificado de desenvolvedor.
O registo da consola do iPhone diz: Qua 18 fevereiro 14:57:55 desconhecido afcd [180]: o usuário móvel tem uid 501
Wed 18 de fevereiro 14:57:55 desconhecido afcd [180]: O modo é 0x41e8 Qua 18 de fevereiro 14:57:55 desconhecido mobile_installation_proxy [182]: install_embedded_profile: Ignorando a instalação do perfil incorporado Wed 18 de fevereiro 14:57:55 desconhecido mobile_installation_proxy [182]: verify_executable: Não foi possível validar a assinatura: e800800e Wed 18 de fevereiro 14:57:55 desconhecido mobile_installation_proxy [182]: preflight_application_install: Não foi possível verificar /var/tmp/install_staging.QNk2sD/HelloWorld.app/HelloWorld Wed 18 de fevereiro 14:57:55 desconhecido mobile_installation_proxy [182]: install_application: foi possível instalar o aplicativo não comprovação Qua 18 fev 14:57:55 desconhecido mobile_installation_proxy [182]: handle_install: A instalação falhou
Qualquer ajuda é apreciada!
Solução
Eu tive os mesmos problemas que você. - Eu poderia atravessar compilar e instalar o aplicativo no iPhone, mas seria sempre falhar com uma violação de segurança
Para contornar o problema, eu tive que fazer o jailbreak meu telefone e instalar um MobileInstaller remendado (creio que o aplicativo Cydia agora tem pacote chamado Installous que corrige seu MobileInstaller. Infelizmente, acho que Installous também é usado para aplicativos piratas). Então, em Info.plist do seu projeto, você precisa adicionar o seguinte:
<key>SignerIdentity</key>
<string>Apple iPhone OS Application Signing</string>
Isso permitirá que o seu telefone para executar binários não assinados, que é a única maneira que eu era capaz de desenvolver de meu ppc mac.
Eu ainda sou capaz de comprar aplicativos na AppStore e tê-los executado sem problemas.
Outras dicas
O que faz seu olhar roteiro codesign como? Eu costumava usar um presente quando eu estava trabalhando em um G4: (O original "/ usr / bin / codesign" deve ser renomeado "/usr/bin/codesign.orig" e, em seguida, salvar esse script como "/ usr / bin / codesign". Você teria que fazê-lo com 'sudo'. Além disso, este roteiro não funciona se os seus nomes de caminho têm espaços entre eles.)
#!/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;
}
A partir de 12 de abril de 2009, o iPhone OS 2.2.1 a correção script funciona perfeitamente no meu iBook G4.
De qualquer forma, depois de ter passado a maior parte do dia procurando por correções no Google I ver que há muito poucas pessoas que ainda têm problemas.
Certifique-se de copiar / colar corretamente, porque se você receber um erro no script e falhar o Xcode codesign não vai notar e vai tentar instalar o aplicativo em seu estado não assinado, dando-lhe um erro ao implementar (NOT quando a construção). No meu caso eu tinha colado o texto em uma pequena janela de terminal, quebrando algumas linhas de código e ele me levou um dia para encontrar o erro. Pelo menos agora eu tenho um conhecimento impressionante de certificados, assinatura de código e Xcode ...
Se você ainda tiver problemas, é provavelmente devido a um pacote identificador / appId incompatibilidade em que há toneladas de mensagens.
Ele também pode valer a pena tendo em mente que o Xcode pode ser um pouco esquisito quando se trata de certificados, assinar e instalar em dispositivos (talvez apenas em PPC, não tentei em um Mac Intel).
I encontrar os seguintes passos normalmente resolver as coisas quando uma configuração anteriormente funcionar de repente pára de funcionar:
- Limpe todos os alvos no Xcode
- Exclua qualquer versão instalada do aplicativo do seu dispositivo (procedimento de aplicação de desinstalação normal, clique no pequeno 'x')
- Sair XCode completamente, e iniciá-lo novamente
Se você nunca assinou com sucesso seu aplicativo, pode haver um problema de configuração real, mas uma vez que é make trabalhando certeza que você tente o acima antes preocupante de algo quebrado:)
Espero que ajude.