31
Titanium 3.2 CLI Chris Barber Titanium Engineer Extraordinaire TiAppCamp 2 / Nov 2, 2013

Titanium 3.2 CLI - TiAppCamp2 - 11/2/2013

Embed Size (px)

DESCRIPTION

This talk was given at TiAppCamp2 on 11/2/2013 in Atlanta, GA about Titanium 3.2's CLI and tooling related changes.

Citation preview

Page 1: Titanium 3.2 CLI - TiAppCamp2 - 11/2/2013

Titanium 3.2 CLI

Chris Barber

Titanium Engineer Extraordinaire

TiAppCamp 2 / Nov 2, 2013

Page 2: Titanium 3.2 CLI - TiAppCamp2 - 11/2/2013

About Me

• Been with Appc 3 ½ years• Stuff I've done

– Early versions of www site– Dev center Q&A– Titanium Mobile Web platform– Titanium CLI– Titanium platform build

scripts

• JavaScript Guru• @cb1kenobi

Page 3: Titanium 3.2 CLI - TiAppCamp2 - 11/2/2013

What's New in 3.2

Titanium 3.0.0, 3.0.1, 3.0.2, 3.0.3

Titanium 3.1.0, 3.1.1, 3.1.2, 3.1.3

Titanium 3.2.0

778 816 1717+

Page 4: Titanium 3.2 CLI - TiAppCamp2 - 11/2/2013

Titanium CLI

Page 5: Titanium 3.2 CLI - TiAppCamp2 - 11/2/2013

Titanium CLI

• Complete overhaul• Better selected SDK handling• New setup wizard• New prompting library

– http://npmjs.org/package/fields

• Command improvments– info, module, plugin, sdk, setup

• More config settings• Unit tests

Page 6: Titanium 3.2 CLI - TiAppCamp2 - 11/2/2013

Setup Command

• New menu design• Improved quick setup• New check environment

Page 7: Titanium 3.2 CLI - TiAppCamp2 - 11/2/2013

Info Command

• node-appc versions• Mac OS X command line tools• Intel HAXM (Hardware

Accelerated Execution Manager)

• Xcode support• Improved iOS cert and

provisioning profile detection• Android & iOS Devices &

Emulators/Simulators• Environment Issues

Page 8: Titanium 3.2 CLI - TiAppCamp2 - 11/2/2013

Config Settings

• cli.ignoreDirs• cli.ignoreFiles• cli.progressBars (true)• cli.width (100)• paths.hooks• paths.modules• paths.plugins• paths.sdks• sdk.defaultInstallLocation• sdk.selected (formerly

app.sdk)

Page 9: Titanium 3.2 CLI - TiAppCamp2 - 11/2/2013

Android Build

Page 10: Titanium 3.2 CLI - TiAppCamp2 - 11/2/2013

Android Build

• Complete rewrite from Python to Node.js• Support for CLI plugins• Android 2.3.3 no longer required• Builds are about 13% faster• Nearly 100 bug fixes• Distribution builds much, much faster thanks

to UglifyJS• Support for multiple emulators AND devices• No longer creates AVDs, you manage your

own

Page 11: Titanium 3.2 CLI - TiAppCamp2 - 11/2/2013

• Fast x86 Android emulator• Built on top of VirtualBox• Beta support with Titanium• http://www.genymotion.com/• titanium config

genymotion.enabled true

Page 12: Titanium 3.2 CLI - TiAppCamp2 - 11/2/2013

iOS Build

Page 13: Titanium 3.2 CLI - TiAppCamp2 - 11/2/2013

iOS Build

• Builds are about 20% faster• Xcode 5.0.1 and iOS 7.0.3 support• 64-bit iOS Simulator support• iOS Simulator profiles• Fixed several bugs• Improved validation• Improved symbol detection• Certificate and provisioning profile

selection

Page 14: Titanium 3.2 CLI - TiAppCamp2 - 11/2/2013

No More iTunes Sync

• Direct install to iOS device• Insanely fast• Supports install to multiple devices

simultaneously• https://npmjs.org/package/node-ios-device

Page 15: Titanium 3.2 CLI - TiAppCamp2 - 11/2/2013

CLI Plugins

Page 16: Titanium 3.2 CLI - TiAppCamp2 - 11/2/2013

CLI Plugins

• Contains commands, event hooks, & function hooks

• Global and per-project• Global and Module hooks

Page 17: Titanium 3.2 CLI - TiAppCamp2 - 11/2/2013

Anatomy of a CLI Command

• /some/dir/mycommand.js• ti config -a paths.commands /some/dir• ti mycommand -baz wow

Page 18: Titanium 3.2 CLI - TiAppCamp2 - 11/2/2013

Anatomy of a CLI Hook

• /some/dir/myhook.js• ti config -a paths.hooks /some/dir

Page 19: Titanium 3.2 CLI - TiAppCamp2 - 11/2/2013

Packaging a CLI Plugin

• Global plugins go in ~/Library/Application Support/Titanium/plugins– Can contain commands and hooks– Automatically loaded for every Titanium

command

Page 20: Titanium 3.2 CLI - TiAppCamp2 - 11/2/2013

Packaging a CLI Plugin

• Project plugins go in <project dir>/plugins• Can contain hooks only

– Loaded by "build" and "clean" commands

• Must be enabled in tiapp.xml

Page 21: Titanium 3.2 CLI - TiAppCamp2 - 11/2/2013

Available Plugin Hooks

Event Hooks• cli:command-not-found• cli:command-loaded• cli:pre-validate• cli:post-validate• cli:pre-execute• cli:post-execute• help:header• build.pre.construct• build.pre.compile• build.post.compile• build.finalize

Function Hooks• build.config• build.android.config• build.android.copyResource• build.android.compileJsFile• build.android.dexerArgs• build.android.javacArgs• build.android.writeBuildManifest• build.android.startEmulator• build.ios.config• build.ios.writeBuildManifest• build.ios.copyResource• build.ios.compileJsFile• build.mobileweb.config• clean.config

Page 22: Titanium 3.2 CLI - TiAppCamp2 - 11/2/2013

npm install -g git://github.com/appcelerator/titanium.git

ti sdk install -b master -d

How to get it:

DISCLAIMER: This is not fully tested. This is not stable code. Use at your own risk.

Page 23: Titanium 3.2 CLI - TiAppCamp2 - 11/2/2013

Future Ideas

Page 24: Titanium 3.2 CLI - TiAppCamp2 - 11/2/2013

Build Profiles

• Controls build settings– JavaScript minification– JavaScript encryption– Debugging– etc

• Global or per-project• Project-level defined in

tiapp.xml– Can contain any tag

Page 25: Titanium 3.2 CLI - TiAppCamp2 - 11/2/2013

Build Profiles

Page 26: Titanium 3.2 CLI - TiAppCamp2 - 11/2/2013

Export Command

• Generate standalone Xcode (iOS) or Eclipse (Android) projects

• No dependency on Titanium• Replaces transport.py

Page 27: Titanium 3.2 CLI - TiAppCamp2 - 11/2/2013

Improved Logging

• Console-only today• File logging, especially for builds• Destination specific logging• Timestamps• Force specific locale

Page 28: Titanium 3.2 CLI - TiAppCamp2 - 11/2/2013

Titanium Daemon

• Server that runs in background• Plugin architecture• Device notifications

– Connected devices

• Environment caching• Check for Titanium updates• Web server plugin w/ interface

– Environment info (same as "ti info")– Debug proxy– Serve Titanium Mobile Web apps

• Run similar to "adb"– Do not require root priviledges

Page 29: Titanium 3.2 CLI - TiAppCamp2 - 11/2/2013

Questions?

?

Page 30: Titanium 3.2 CLI - TiAppCamp2 - 11/2/2013

Thank you!

[email protected]

Twitter: @cb1kenobi

Page 31: Titanium 3.2 CLI - TiAppCamp2 - 11/2/2013