Desenvolvimento no Mac OS X

Linguagens, ferramentas e técnicas

Desenvolvimento no Mac OS X

Me ajude a tornar esta página mais completa! Mande sugestões e textos para @oreio

Fórums

São poucas as pessoas que usam Mac no Brasil. Mais raro ainda, são programadores que desenvolvem para Mac.

E quanto menor a comunidade, mais importante a união, para que os poucos se ajudem.

Pensando nisso, foi criado o grupo macdev-br. Se você é programador/designer e desenvolve softwares para Mac, ou está querendo ingressar nesse mundo selvagem e não sabe como começar, participe do nosso grupo.

macdev-br — Desenvolvedores brasileiros p/ Mac OS X, iPhone e iPod

Ponto de encontro para os programadores brasileiros que desenvolvem softwares para o Mac.

Para discussão de tópicos sobre linguagens (Objective-C, AppleScript, Java, Python, ...), conceitos (Cocoa, Carbon, Dashboard) e ferramentas (Xcode, Interface Builder).

Além da programação, também há troca de idéias sobre todo o processo de produção, lançamento e divulgação de freewares e sharewares, envolvendo técnicas como chave de registro, senha, expiração, preço, forma de pagamento e relato de experiências.

Se você programa no Mac, junte-se a nós!

Canais de IRC

Outro ponto de comunicação é são os canais de IRC no servidor irc.freenode.net:

  • #macdev-br
  • #iphonedev-br
  • #mac-br

Apareça!

Documentação em Português

Livros

Aplicativos Indispensáveis

Xcode

/Developer/Applications/Xcode

Comandos mais utilizados:

  • ⌘R — Compila e executa o programa

Mais informações:

Interface Builder

/Developer/Applications/Interface Builder

Comandos mais utilizados:

  • ⌘R — Testa a interface
  • ⌘L — Destaca todos os elementos com bordas vermelhas
  • ⌘D — Duplica um elemento
  • ⇧⌘I — Abre o Inspector, que mostra as propriedades do elemento selecionado

Mais informações:

Script Editor (Editor de Roteiros)

/Applications/AppleScript/Script Editor

Editor para a linguagem AppleScript, é a maneira mais rápida de escrever e rodar scripts. Já vem instalado com o sistema. Clique aqui para abri-lo agora.

Comandos mais utilizados:

  • ⌘K — Compila o script (checa sintaxe e arruma o alinhamento)
  • ⌘R — Executa o script (compila e executa)
  • ⇧⌘O — Abre o dicionário de palavras-chave de um aplicativo do sistema

Realbasic

O Real Basic "funciona". Isso não quer dizer que ele é bom. Na época que eu testei (inicio de 2006) um programa "Hello World" ficou com 20MB. Não poderia ser diferente com alguma coisa que roda compilado em três plataformas diferentes (Linux, Mac e Windows - obviamente são três binários). No entanto até dá para quebrar um galho.
-- Guilherme Chapiewski

Revolution

TODO

Aplicativos Feitos por Brasileiros

AdiumBook & EmoMemory

por Aurelio Marinho Jargas
https://aurelio.net/projects/adiumbook/
https://aurelio.net/projects/emomemory/

O AdiumBook serve para fazer pesquisas e cruzar dados de contatos do Adium e do Address Book, mantendo-os em sincronia. O EmoMemory é um jogo de memória que usa fotos da Agenda (Address Book) ou de uma pasta qualquer, escolhida pelo usuário. Ambos escritos em AppleScript + Cocoa (AppleScript Studio).

Dashboard Widgets

por Guilherme Chapiewski
http://gc.vialink.com.br

O Guilherme fez vários widgets bacanas para o Dashboard, são eles: Busca de CEP dos Correios do Brasil, Rastreamento de Encomendas dos Correios do Brasil, MacPress News Reader, Macmania News Reader, Mercado Livre Brasil.

FetchYourLyrics

por Julio Cesar Silva dos Santos
http://www.jcs.santos.nom.br/fyl/fyl.html

O FetchYourLyrics é um programa que mostra as letras da música que está tocando atualmente no iTunes. Se o campo de letras estiver vazio, o programa procura por elas na Internet.

MyProject & Personal Finance

por Francisco Pires http://www.cafeinasoft.com/port/

O MyProject é um software para o acompanhamento de projetos e tarefas, com cadastro de clientes, agenda e envio de mailing. O Personal Finance é um gerenciador financeiro com suporte a múltiplas contas, categorias, contatos e gráficos.

MySQL GUI Tools

por Alfredo Kojima
http://www.mysql.com/products/tools/query-browser/
http://www.mysql.com/products/tools/administrator/

O Kojima trabalha na MySQL e fez as versões para Mac de três componentes do MySQL GUI Tools: Workbench, Query Browser e Administrator.

QuickSinergy

por Otávio Corrêa Cordeiro
http://quicksynergy.sourceforge.net

O QuickSynergy é uma interface amigável de configuração para o Synergy2 (aplicativo que compartilha o mesmo mouse e teclado para dois ou mais computadores). Escrito em AppleScript + Cocoa.

Rudix

por Rudá Moura
http://rudix.org

O Rudix disponibiliza pacotes prontos para instalar de programas úteis do Linux que faltam no OS X, como wget, ncftp e lynx. Diferente do Fink ou do MacPorts, cada pacote é auto contido e pré-compilado. Não há dependências ou requisitos, basta baixar e usar.

TheTranslator

por Pierre Freire
http://www.pierrefreire.com.br/thetranslator/

Aplicativo em Objective-C feito para traduzir e pronunciar frases em inglês. Digite a frase e aperte o botão, simples e rápido.

Linguagens

Cocoa

Tá, Cocoa não é linguagem, mas fica aqui mesmo.

Sites para aprender Cocoa:

Objective-C

Objective-C é a linguagem padrão de desenvolvimento para Mac OSX.

Objective-C tem suporte nativo a SQLite usando CoreData. Existem alguns frameworks para acessar MySQL e PostGreSQL.

Para aprender:

Java

Java é totalmente multiplataforma mas a interface gráfica não. Geralmente os programas feitos para Linux e Windows ficam um pouco estranhos na interface Aqua (botões com legendas truncadas, etc.).

No Mac, Java usa JDBC normalmente.

Javascript (Dashboard)

Os aplicativos do Dashboard são escritos em HTML + CSS + Javascript.

AppleScript

Você pode escrever seus AppleScripts em qualquer editor, mas o desenvolvimento é muito mais rápido se você usar o Script Editor, que já está instalado no seu Mac.

Aprender a linguagem é rápido se você entende inglês. Há poucos símbolos, os códigos-fonte parecem mais com texto corrido, um exemplo:

tell application "iTunes"

        -- Pega quais músicas estão selecionadas
        set userTracks to the selection of front window

        -- Quantas são?
        set totalTracks to count of userTracks

        -- Para cada música...
        repeat with i from 1 to totalTracks

                -- Mostre seu nome
                set theTrack to item i of userTracks
                display dialog (name of theTrack as string)

        end repeat
end tell

A melhor maneira de aprender a programar em AppleScript é estudando os scripts de outros programadores. Baixe da Internet, abra no Script Editor e faça alterações para ir entendendo como tudo funciona. Há vários scripts funcionais para baixar em https://aurelio.net/projects/.

Se você fez um script que interage com algum programa, como o iTunes ou a Agenda, instale-o no sistema para que ele apareça no Script Menu. Há um tutorial mostrando como fazer isso, passo-a-passo e com imagens: Installing AppleScripts.

Se você entende de Shell Script, saiba que é possível executar comandos de dentro do AppleScript, facilmente:

set resultado to do shell script "cat /etc/passwd | grep ^root" -- UUOC!

Não há o conceito de entrada e saída padrão (STDIN e STDOUT). Ou você usa dialogs ou você usa a área de transferência (clipboard):

-- Pega texto do clipboard
set theText to the clipboard

-- Copia o texto no clipboard, entre hífens
set the clipboard to "------ " & theText & " ------"

Também é possível fazer aplicativos complexos em AppleScript, com interface Cocoa. Basta usar o AppleScript Studio e programar diretamente no Xcode e montar as janelas no Interface Builder. É um pouco trabalhoso e demora um tempo até acostumar-se com a maneira que a comunicação entre os elementos e o código é feita. Exemplos de programas completos feitos no Studio são AdiumBook (código aberto) e EmoMemory (shareware).

Python

O Python já vem instalado no Mac, está pronto para ser usado. Digite "python" no Terminal e divirta-se.

Para descobrir em quais pastas o Python está "escondido" no Mac, faça:

>>> import sys
>>> for p in sys.path: print p
...

/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python23.zip
/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3
/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/plat-darwin
/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/plat-mac
/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/plat-mac/lib-scriptpackages
/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/lib-tk
/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/lib-dynload
/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/site-packages
/System/Library/Frameworks/Python.framework/Versions/2.3/Extras/lib/python
>>>

Se o seu aplicativo for de linha de comando, sem precisar de interface gráfica, programe normalmente, não há diferenças ou pegadinhas. Ele também vai funcionar no Linux e no Windows.

PyObjC

Mas se você quiser fazer aplicativos realmente sexys e no "estilo Mac", instale o PyObjC. Ele faz a ponte entre o Python e o Objective-C, permitindo que você acesse todas as classes e métodos do Cocoa diretamente em Python. Você também poderá usar o Xcode e o Interface Builder, como se estivesse programando em ObjC. É incrível.

Mesmo que seu aplicativo não seja gráfico, outra vantagem do PyObjC é permitir que você acesse os frameworks de outros aplicativos, permitindo por exemplo acessar a base de dados da Agenda (Address Book).

Há bastante documentação online no próprio site do PyObjC. Faça os tutoriais com atenção e mão à obra!

iPhone

http://developer.apple.com/iphone/

Dicas

Como tirar screenshots

⌘⇧3 tira uma foto da tela toda e grava o resultado em um arquivo na sua Mesa (Desktop). Se você usar dois monitores, será tirada uma foto para cada um.

⌘⇧4 deixa que você selecione qual parte da tela quer fotografar. Clique e arraste o mouse para formar o retângulo. Ao soltar o botão, o arquivo será gravado na sua Mesa. Aperte Esc a qualquer momento para cancelar.

Para selecionar uma janela inteira, aperte ⌘⇧4 e em seguida a barra de espaço. O cursor virará uma máquina fotográfica e a janela que o mouse estiver sobre, será selecionada. Ao clicar com o mouse, o arquivo será gravado na sua Mesa. Aperte Esc a qualquer momento para cancelar.

Para tirar uma foto de um Screen Saver, pressione ⌘⇧ e fique segurando. Enquanto isso vá nas Preferências do Sistema → Screen Saver, escolha um e mande testar. Espera um pouquinho e aperta 3. Pronto.

Ao segurar também a tecla Control em qualquer um destes procedimentos, a foto será copiada para a Área de Transferência ao invés de ser criado um arquivo na Mesa.

Cadê o comando make (e o gcc)?

Para ter o make, gcc e amigos, é preciso instalar o Xcode. Ele está no CD/DVD de instalação do Mac OS X. Mais especificamente, o gcc está no pacote Xcode Tools.

O formato do "pacote"

A principal diferença conceitual do Mac enquanto Unix é a forma de criação e instalação de pacotes. A grande maioria dos softwares é compilada semi-estaticamente, ou inclui as bibliotecas de que necessita, o que evita árvores de dependências, tão comuns (e chatas) no Linux.

Cada aplicativo é na verdade uma pasta com estrutura bem-definida; o executável "real" está muito bem escondido dentro dessa estrutura, e você quase nunca precisa chamá-lo diretamente. Se quiser ver exatamente como é a estrutura de um aplicativo, clique com o botão direito em seu ícone e escolha "Mostrar Conteúdo do Pacote".

Como montar e desmontar uma imagem (DMG ou ISO) pelo terminal?

Use o comando hdiutil para montar a imagem e desmontar (note que é uNmount) o volume montado.

$ hdiutil mount ~/Desktop/Arquivo.dmg
$ hdiutil mount ~/Desktop/Arquivo.iso
$ hdiutil unmount /Volumes/Arquivo

Como internacionalizar/traduzir um aplicativo? (i18n)

Não tem potfiles, não tem gettext. Seus pesadelos acabaram!

Basta traduzir as frases em um arquivo texto e traduzir itens da interface direto no Interface Builder. Ok, isso não é tão simples quanto parece.

Nada tema, o Julio Cesar Silva dos Santos escreveu um excelente artigo ensinando passo a passo como funciona a localização e tradução de aplicativos no Mac.

Xcode

  • Se estiver usando Tiger, baixe o Xcode 2.x e use o leiaute de janelas tudo em 1
  • Perfis de compilação: tu podes definir 1 ou mais perfis com parâmetros de compilação diferentes, os que vêm por padrão são:
    • Development: vem com opções de debug, 0 de otimização e uns truques pra linkar mais rápido
    • Deployment: com otimização, sem debug symbols, linkagem definitiva
  • Para adicionar bibliotecas à lista de dependências, vai pra /usr/lib (ou /System/Library/Frameworks) no Finder e faz drag&drop
  • Cuide para que os arquivos no teu projeto estejam com paths relativos (selecione o arquivo e tecle ⌘I). Se não, quando fores distribuir os fontes (se for o caso), ninguém vai conseguir compilar.
  • Para adicionar classes tuas no Interface Builder (IB), arraste o header com a declaração e largue-o na janela de projeto do IB. Assim, tu podes instanciar as classes usadas pela interface direto no IB e conectar todas as mensagens/conexões graficamente.

Mais Informações

— EOF —

Gostou desse texto? Aqui tem mais.