Upload
chris-barber
View
5.564
Download
1
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
Titanium 3.2 CLI
Chris Barber
Titanium Engineer Extraordinaire
TiAppCamp 2 / Nov 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
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+
Titanium CLI
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
Setup Command
• New menu design• Improved quick setup• New check environment
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
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)
Android Build
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
• Fast x86 Android emulator• Built on top of VirtualBox• Beta support with Titanium• http://www.genymotion.com/• titanium config
genymotion.enabled true
iOS Build
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
No More iTunes Sync
• Direct install to iOS device• Insanely fast• Supports install to multiple devices
simultaneously• https://npmjs.org/package/node-ios-device
CLI Plugins
CLI Plugins
• Contains commands, event hooks, & function hooks
• Global and per-project• Global and Module hooks
Anatomy of a CLI Command
• /some/dir/mycommand.js• ti config -a paths.commands /some/dir• ti mycommand -baz wow
Anatomy of a CLI Hook
• /some/dir/myhook.js• ti config -a paths.hooks /some/dir
Packaging a CLI Plugin
• Global plugins go in ~/Library/Application Support/Titanium/plugins– Can contain commands and hooks– Automatically loaded for every Titanium
command
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
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
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.
Future Ideas
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
Build Profiles
Export Command
• Generate standalone Xcode (iOS) or Eclipse (Android) projects
• No dependency on Titanium• Replaces transport.py
Improved Logging
• Console-only today• File logging, especially for builds• Destination specific logging• Timestamps• Force specific locale
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
Questions?
?