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.
- Para entrar: macdev-br-subscribe@yahoogrupos.com.br
- Página do grupo: http://br.groups.yahoo.com/group/macdev-br
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
- Tutorial brasileiro de Objective-C, de Pierre Freire
- Tutorial em português sobre o PyObjC, de Aurelio Marinho Jargas
- Blog sobre desenvolvimento no Mac, de Ademar Varela
Livros
- Cocoa Programming for Mac OS X, de Aaron Hillegass
- The iPhone Developer's Cookbook: Building Applications with the iPhone SDK (Developer's Library), de Erica Sadun
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:
- Tutorial de Cocoa - Tiger
- Tutorial de Cocoa - Leopard
- CocoaDevCentral - Tem uma série de artigos básicos
- CocoaBlogs - Vários blogs de desenvolvedores
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:
- Tutorial brasileiro de Objective-C (em português)
- Tutorial de Objective-C (em inglês)
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
- Site da Apple para desenvolvedores - Ponto de partida para desenvolvimento no Mac
- Fórums da Apple
- Version Tracker - Avisos de lançamentos de aplicativos
- AppleScript - Exemplos
- Become an Xcoder - PDF que ensina Cocoa, Objective-C e Xcode de maneira rápida e indolor