Nota: Actualização para macOS 12/Monterey e Xcode 13. Para Xcode 12 e mais antigo, ver este post no blogue.
Com Monterey (macOS 12), é altamente recomendável que faça o reconhecimento notarial das candidaturas distribuídas por uma rede pública. Um número significativo de programadores transfere as suas aplicações utilizando um dispositivo de armazenamento ligado ou através de partilha de ficheiros; não é necessário o registo notarial nestes casos em que o utilizador já confia no programador. A notarização visa assegurar aos utilizadores que a aplicação não é maliciosa e só é necessária para aplicações descarregadas a partir de um website.
Utilizando a nossa funcionalidade de assinatura incorporada ao construir as suas aplicações com 4D v18, a sua aplicação está pronta para ser notarializada. Este processo é conduzido fora do 4D. Implica acrescentar uma assinatura electrónica à sua candidatura e submeter a sua candidatura assinada a um serviço de inspecção automatizado. Aqui está tudo o que precisa de saber:
PREREQUISITES
XCODE
A notarização requer o Xcode 13 ou posterior e macOS 12 ou posterior.
Se tiver mais de uma versão do Xcode instalada no seu Mac, pode usar o utilitário Xcode-select para escolher a versão apropriada:
sudo xcode-select -s /path/to/Xcode13.app
Mesmo quando normalmente não usa Xcode directamente, deve lançá-lo pelo menos uma vez. Se alerta sobre “Developer Tools” para descarregar, aceite-o.
Se pedir para confirmar as condições da licença, aceite-as.
Não é má ideia repetir este passo depois de instalar uma versão mais recente do Xcode. Normalmente, é necessário aceitar alterações de licença; caso contrário, a autenticação falhará.
Em alguns casos, é necessário fazer login em https://appleid.apple.com/account/home para aceitar novas condições da Apple Store; caso contrário, a autenticação poderá falhar (mesmo que não queira publicar na App Store).
AUTENTICAÇÃO DE DOIS FACTORES
Precisará também de ter activada a autenticação de dois factores no seu ID da Apple.
Se não tiver a certeza, terá activado a autenticação de dois factores, inicie sessão na página da sua conta Apple ID, procure a opção de autenticação de dois factores na secção Segurança e veja se a funcionalidade está ligada ou desligada.
Visão geral do processo
É necessária uma configuração para a autenticação. Isto só tem de ser feito uma vez. Depois, para cada construção, é necessário zipar, carregar, esperar por resultados, carimbar, e zipar novamente. E isto aplica-se a cada aplicação (Cliente, Servidor, Único Utilizador, componente) e a cada construção.
Este post no blog descreve primeiro cada passo em detalhe para ajudar a compreender o processo e finalmente explica como utilizar um método 4D para automatizar completamente o trabalho.
Configuração de Tempo Único
Necessitará do seguinte para a autenticação:
- A sua conta de ID da Apple, normalmente o seu e-mail
- A equipa da sua empresa Apple-id. Veja abaixo “Obter team-id” como recuperá-lo
- Para uma palavra-passe específica do aplicativo, ver abaixo como recuperá-la
Com estes dados, podemos registar a palavra-chave no porta-chaves. Isto permitir-nos-á autenticar utilizando a linha de comando (ou automaticamente a partir de 4D) sem fornecer a palavra-passe em texto claro.
Gerar palavra-passe específica do aplicativo
- Inicie sessão em apple.com.
- Na secção de Iniciar Sessão e Segurança, clicar em App-Specific Passwords.
- Clique em Gerar uma palavra-passe específica da aplicação ou clique em “+,” e depois siga os passos no seu ecrã.
- Pode querer nomear a nova palavra-passe “notarytool”.
- Copie o código exibido.
Obter ajudas de equipa
Já deve ter pedido e registado certificados da Apple para assinar o seu pedido. Há normalmente dois deles (quatro incluindo o iOS) quando o faz. Um começa com Apple Development: o seu nome(user-id), o outro com Developer ID Application: nome da empresa(team-id).
Inicie o chaveiro Apple, seleccione certificados, e verifique se vê a aplicação Developer ID Application: nome da empresa. Em caso afirmativo, o número entre parênteses () é o seu ID.
Se não, execute o seguinte no Terminal:
xcrun altool --list-providers -u "AC_USERNAME" -p secret_2FA_password
substitua AC_USERNAME pelo nome de utilizador da sua Conta Apple, o seu endereço de correio electrónico, e introduza o código/2FA password copiado de cima.
O Terminal responderá com o seu ID de equipa.
Mais detalhes aqui.
Credenciais da loja
No Terminal, execute o seguinte:
xcrun notarytool store-credentials "notarytool" --apple-id "AC_USERNAME" --team-id <WWDRTeamID> --password <secret_2FA_password>
Mantenha as aspas (apenas substitua o conteúdo), mas não utilize os sinais <>, apenas o id ou palavra-passe.
Construir / Fechar / Notarizar / Carimbar
Agora, após o (único) processo de pré-instalação, é tempo de fazer o verdadeiro trabalho de construção.
Utilize o comando ou diálogo BUILD APPLICATION e construa o seu componente ou aplicação. Utilize a funcionalidade de certificação para assinar automaticamente a aplicação criada. Se a construção falhar devido a um erro de assinatura, terá de corrigir isso primeiro. A notarização falhará para aplicações não assinadas.
Se o componente incluir executáveis na pasta de recursos ou se a aplicação contiver componentes ou plugins, estes têm de ser válidos, previamente assinados.
Zip
Quando o edifício estiver terminado, o passo seguinte é fechar a aplicação:
No Terminal, introduza o seguinte:
/usr/bin/ditto -c -k --keepParent "$APP_PATH" "$ZIP_PATH"
A maneira mais fácil de introduzir os caminhos correctos é copiá-los e colá-los no Terminal:
/usr/bin/ditto -c -k --keepParent "
Nota: Existe um espaço depois de guardarParente e o único sinal de aspas
Agora arrastar e largar a aplicação ou componente para o Terminal e adicionar outro carácter de citação para obter algo como por exemplo:
/usr/bin/ditto -c -k --keepParent "/Users/thomas/Documents/4D/Komponenten/FileTransfer_Curl_Build/Components/FileTransfer.4dbase"
Adicionar um espaço, citar um caractere, arrastar e largar a pasta de destino, depois escrever o nome do zip solicitado, seguido de um espaço.
A linha final deve ter este aspecto:
/usr/bin/ditto -c -k --keepParent "/Users/thomas/Documents/4D/Komponenten/FileTransfer_Curl_Build/Components/FileTransfer.4dbase" "/Users/thomas/Documents/4D/Komponenten/FileTransfer_Curl_Build/Components/FileTransfer.zip"
Prima Enter para executar o comando e obter o fecho de correr.
Importante: não o faça com outras ferramentas de fecho de correr, incluindo o Finder. Para que a autenticação funcione, é necessário utilizar o comando ditto.
Carregue em
No Terminal, introduza o seguinte (lembrete: pode arrastar e largar o caminho do ficheiro para o facilitar):
xcrun notarytool submit /Users/thomas/Documents/4D/Komponenten/FileTransfer_Curl_Build/Components/FileTransfer.zip --keychain-profile notarytool --wait
A resposta que obtém é a seguinte:
Realização de verificações prévias à submissão do FileTransfer.zip e início da ligação ao serviço notarial Apple…
ID de submissão recebida
id: 2071ae83-6660-4d84-afaf-97ea34e945c5
Ficheiro carregado com sucesso
id: 2071ae83-6660-4d84-afaf-97ea34e945c5
caminho: /Usuários/Tomas/Documentos/4D/Komponenten/FileTransfer_Curl_Build/Components/FileTransfer.zip
À espera de processamento para concluir.
Estado actual: Aceite…………..
Processamento completo
id: 2071ae83-6660-4d84-afaf-97ea34e945c5
estatuto: Aceite:
Se o estatuto for “Inválido”, pode perguntar o motivo, dactilografando:
xcrun notarytool log fb4a2e8f-e2fe-4689-b38f-f6a840abfeb6 --keychain-profile "notarytool" developer_log.json
O número por detrás do registo é a identificação da resposta apresentada. O apelido, developer_log.json, é o nome ou caminho para um ficheiro de resultado no seu disco, escolhido como quiser.
Responde com:
Registo de submissão descarregado com sucesso
id: fb4a2e8f-e2fe-4689-b38f-f6a840abfeb6
localização: /Users/thomas/developer_log.json
Verificar a razão do fracasso com:
cat /Users/thomas/developer_log.json
Automatizar o processo
Este trabalho precisa de ser repetido para cada construção; faz sentido automatizá-lo. Não é verdade? Aqui está tudo o que é necessário para o fazer:
- Copie e cole a classe “_build” na sua aplicação: https://github.com/ThomasMaul/Classes/blob/main/Project/Sources/Classes/_build.4dm
- Documentação: https://github.com/ThomasMaul/Classes/blob/main/Documentation/Classes/_build.md
- Exemplo de como utilizá-lo para construir Cliente/Servidor: https://github.com/ThomasMaul/Classes/blob/main/Project/Sources/Methods/Example_build.4dm
Outro caso de utilização é a construção de componentes. Os componentes compilados para Silicon Macs devem ser autenticados, tornando os componentes de publicação via Github desconfortáveis.
O componente: https://github.com/ThomasMaul/FileTransfer_Class inclui um método “_buildComponent”, que compila, constrói, assina, regista, agrafa, e fecha o componente. Tudo isto é automático após a execução.
O último passo é carregar o zip como “Lançamentos” para o GitHub.
Espero que esta dica o ajude a autenticar a sua próxima aplicação. Não hesite em contactar-nos no fórum 4D se precisar de mais assistência.