Usando Xcode 6 com Titanium

Para aqueles que estão se perguntando se é seguro instalar o Xcode beta 6 em seus equipamentos de desenvolvimento, a resposta curta é: sim. Ele é instalado junto ao Xcode 5 e você pode trocar entre um e o outro e pode ser facilmente desinstalado. Aqui vai um simples walkthrough que te iniciará ao Xcode 6 e ao SDK iOS 8 com Titanium.

Instalando o Xcode 6 beta

  1. Baixe o .DMG de 2.5GB – Requer login
  2. Arraste o app Xcode6-Beta para a pasta Applications – Ele não vai sobescrever o Xcode
  3. Abra o Xcode6-Beta para concordar com os termos e instalar ferramentas adicionais, ou rode $ sudo xcodebuild -license para rodar a primeira vez caso você não precise de nenhuma ferramenta extra.

Compilar usando Xcode6/iOS 8 via CLI

Se você não especificar uma versão de SDK (-I ou --ios-version), o CLI do Titanium vai, por padrão, para a última SDK encontrada em qualquer instalação do Xcode e usar automaticamente essa versão. Então para compilar usando o Xcode6/iOS8 você não precisa fazer nada além de:

$ ti build -p ios

A qual irá falhar:

..
[INFO]  Building using iOS SDK: 8.0
[INFO]  Building for iOS iPad Simulator: 8.0
[INFO]  Building for device family: ipad
[DEBUG] Setting Xcode target to Debug
[DEBUG] Setting Xcode build OS to iphonesimulator8.0
[DEBUG] Xcode installation: /Applications/Xcode6-Beta.app/Contents/Developer
..
[INFO]  Launching application in iOS Simulator
[DEBUG] Simulator command: "/Users/fokkezb/Library/Application Support/Titanium/mobilesdk/osx/3.2.3.GA/iphone/ios-sim" launch "/Users/fokkezb/dev/apps/timewax/build/iphone/build/Debug-iphonesimulator/Timewax.app" --xcode-dir "/Applications/Xcode6-Beta.app/Contents/Developer" --sdk 8.0 --family ipad
[INFO]  Focusing the iOS Simulator
[ERROR] Project failed to build after 3s 151ms

Mas na verdade, a falha foi em rodar o app no simulator (ou o deploy no device). O projeto Xcode está normal. Simplesmente abra build/iphone/*.xcodeproject no Xcode6-Beta, selecione o target correto, escolha se irá rodar no simulator ou device e deixe ele compilar e rodar.

Isso funciona corretamente tanto para simulators quando para devices. Até agora encontrei pequenos erros, como por exemplo Ti.Plarform.displayCaps.platformWidth não pegando a orientação por algum motivo (similar ao Android).

running

Compilando com Xcode5/iOS7.1 via CLI

Para compilar com o Xcode5/iOS7.1 simplesmente passe a versão da SDK e o Titanium irá automaticamente usar o Xcode5 já que o Xcode 6 somente possui a SDK do iOS 8.

$ ti build -p ios -I 7.1

Se você não quer fazer isso todo o tempo, simplesmente instale o TiNy CLI e sobrescreva a receita padrão para incluir a versão do SDK:

$ sudo npm install -g tn --unsafe-perm
$ tn default ios -I 7.1
$ tn

Compilar com Xcode6/iOS8 via Studio

O Studio sempre passa a versão do SDK (e simulator) que você selecionou em Run Configurations. O Studio utiliza a instalação do Xcode selecionada via xcode-select, então se você quer alterar para o Xcode6-Beta para poder selecionar o SDK do iOS 8 você precisará fazer o seguinte:

$ sudo xcode-select -s /Applications/Xcode6-Beta.app/Contents/Developer

Então feche e abra novamente o Studio, ou selecione Refresh em Titanium Studio > Preferences > Studio > Platforms > iOS > General.

refresh

Agora em seu Run Configurations você pode (deve) selecionar 8.0 em iOS SDK e Simulator Version:

Screen Shot 2014-06-03 at 10.58.49

Clique em Run para compilar. Agora, assim como no CLI, o processo irá terminar com a mensagem Project failed to build after... porque o Titanium provavelmente não pode conversar com os novos perfis do simulator no Xcode6. Então novamente, abra build/iphone/*.xcodeproject no Xcode6-Beta, selecione o target correto, escolha se irá rodar no simulator ou device e deixe ele compilar e rodar.

Debugging obviamente não irá funcionar.

Compilar usando Xcode5/iOS7.1 via Studio

Se logo depois de alterar para o Xcode6-Beta você quiser compilar usando o Xcode5/iOS7.1 novamente você precisa usar o xcode-select e reiniciar ou atualizar o Studio:

$ sudo xcode-select -s /Applications/Xcode.app/Contents/Developer

Desinstalando o Xcode6 beta

Só arrastar o app para a Lixeira…yep, simples assim :)

 

[social-bio id=21]

App imagineer: Imagining, Engineering & Speaking about Native mobile Apps with Appcelerator Titanium & Alloy • Meetup organizer • Certified Expert • Titan