SlideShare a Scribd company logo
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
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

Function 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

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
How to get it:
npm install -g
git://github.com/appcelerator/titaniu
m.git
ti sdk install -b master -d
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?
Thank you!
cbarber@appcelerator.com
Twitter: @cb1kenobi
Titanium 3.2 CLI - TiAppCamp2 - 11/2/2013

More Related Content

PPTX
Exploring the Titanium CLI - Codestrong 2012
PDF
JavaScript in 2015
PDF
A Hands-on Introduction on Terraform Best Concepts and Best Practices
PDF
Drone CI/CD 自動化測試及部署
KEY
PyCon US 2012 - Web Server Bottlenecks and Performance Tuning
KEY
PyCon AU 2012 - Debugging Live Python Web Applications
PDF
Golang Performance : microbenchmarks, profilers, and a war story
PPTX
introduction to node.js
Exploring the Titanium CLI - Codestrong 2012
JavaScript in 2015
A Hands-on Introduction on Terraform Best Concepts and Best Practices
Drone CI/CD 自動化測試及部署
PyCon US 2012 - Web Server Bottlenecks and Performance Tuning
PyCon AU 2012 - Debugging Live Python Web Applications
Golang Performance : microbenchmarks, profilers, and a war story
introduction to node.js

What's hot (20)

PDF
How to test code with mruby
PDF
Rhebok, High Performance Rack Handler / Rubykaigi 2015
PDF
The journey of asyncio adoption in instagram
PDF
Nodejs Explained with Examples
PDF
Composable and streamable Play apps
PPTX
Test-Driven Infrastructure with Puppet, Test Kitchen, Serverspec and RSpec
PDF
Coroutines for Kotlin Multiplatform in Practise
PDF
Introduction to Node.js: What, why and how?
KEY
Introduction to node.js
PDF
Regex Considered Harmful: Use Rosie Pattern Language Instead
PDF
Infrastructure as Code with Terraform
PDF
Puppet evolutions
PDF
Containerizing a Web Application with Vue.js and Java
PDF
Javascript TDD with Jasmine, Karma, and Gulp
PDF
Original slides from Ryan Dahl's NodeJs intro talk
PPTX
How NOT to write in Node.js
PDF
London Hashicorp Meetup #8 - Testing Programmable Infrastructure By Matt Long
PDF
Scaling Django with gevent
PDF
About Node.js
How to test code with mruby
Rhebok, High Performance Rack Handler / Rubykaigi 2015
The journey of asyncio adoption in instagram
Nodejs Explained with Examples
Composable and streamable Play apps
Test-Driven Infrastructure with Puppet, Test Kitchen, Serverspec and RSpec
Coroutines for Kotlin Multiplatform in Practise
Introduction to Node.js: What, why and how?
Introduction to node.js
Regex Considered Harmful: Use Rosie Pattern Language Instead
Infrastructure as Code with Terraform
Puppet evolutions
Containerizing a Web Application with Vue.js and Java
Javascript TDD with Jasmine, Karma, and Gulp
Original slides from Ryan Dahl's NodeJs intro talk
How NOT to write in Node.js
London Hashicorp Meetup #8 - Testing Programmable Infrastructure By Matt Long
Scaling Django with gevent
About Node.js
Ad

Similar to Titanium 3.2 CLI - TiAppCamp2 - 11/2/2013 (20)

KEY
Rapid development with Rails
PPTX
GitOps_Without_K8s_Training_Updated_Ansible_Terraform_Docker.pptx
PPTX
Angular2 inter3
PPTX
What's new in Docker - InfraKit - Docker Meetup Berlin 2016
PDF
Spring Roo Add-On Development & Distribution
PDF
Qcon beijing 2010
PDF
DCSF19 Container Security: Theory & Practice at Netflix
PPTX
Habitat talk at CodeMonsters Sofia, Bulgaria Nov 27 2018
PPTX
Test-Driven-Development for Networking: Making CI Work for You by Colin McNam...
KEY
Ship It ! with Ruby/ Rails Ecosystem
PPTX
Cypress.pptx
PDF
Scala at Treasure Data
PPTX
Alfresco Development Framework Basic
PPTX
Contributing to OpenStack
PPTX
Tuenti Release Workflow
PPTX
Oscon London 2016 - Docker from Development to Production
PPTX
continues ingration & delivery and disaster recovery plan
PDF
Meetup Devops April 2023
PPTX
Automating Your Salt Tests
PDF
Barcamp Bangkhen :: Robot Framework
Rapid development with Rails
GitOps_Without_K8s_Training_Updated_Ansible_Terraform_Docker.pptx
Angular2 inter3
What's new in Docker - InfraKit - Docker Meetup Berlin 2016
Spring Roo Add-On Development & Distribution
Qcon beijing 2010
DCSF19 Container Security: Theory & Practice at Netflix
Habitat talk at CodeMonsters Sofia, Bulgaria Nov 27 2018
Test-Driven-Development for Networking: Making CI Work for You by Colin McNam...
Ship It ! with Ruby/ Rails Ecosystem
Cypress.pptx
Scala at Treasure Data
Alfresco Development Framework Basic
Contributing to OpenStack
Tuenti Release Workflow
Oscon London 2016 - Docker from Development to Production
continues ingration & delivery and disaster recovery plan
Meetup Devops April 2023
Automating Your Salt Tests
Barcamp Bangkhen :: Robot Framework
Ad

More from Chris Barber (10)

PPTX
Remote IP Power Switches
PPTX
Node.js/io.js Native C++ Addons
KEY
Intro to PECL/mysqlnd_ms (4/7/2011)
PDF
Cassandra - Say Goodbye to the Relational Database (5-6-2010)
PDF
Debugging Dojo Applications (2/10/2010)
PDF
Titanium Powered Desktop & Mobile Apps (11/21/2009)
PDF
Dojo - Javascript's Swiss Army Knife (7/15/2009)
PDF
High Availability With DRBD & Heartbeat
PDF
2008 MySQL Conference Recap
PDF
Memcached And MySQL
Remote IP Power Switches
Node.js/io.js Native C++ Addons
Intro to PECL/mysqlnd_ms (4/7/2011)
Cassandra - Say Goodbye to the Relational Database (5-6-2010)
Debugging Dojo Applications (2/10/2010)
Titanium Powered Desktop & Mobile Apps (11/21/2009)
Dojo - Javascript's Swiss Army Knife (7/15/2009)
High Availability With DRBD & Heartbeat
2008 MySQL Conference Recap
Memcached And MySQL

Recently uploaded (20)

PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Encapsulation theory and applications.pdf
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Machine learning based COVID-19 study performance prediction
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
DOCX
The AUB Centre for AI in Media Proposal.docx
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Unlocking AI with Model Context Protocol (MCP)
Digital-Transformation-Roadmap-for-Companies.pptx
Encapsulation theory and applications.pdf
“AI and Expert System Decision Support & Business Intelligence Systems”
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Chapter 3 Spatial Domain Image Processing.pdf
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Machine learning based COVID-19 study performance prediction
The Rise and Fall of 3GPP – Time for a Sabbatical?
20250228 LYD VKU AI Blended-Learning.pptx
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
MIND Revenue Release Quarter 2 2025 Press Release
Building Integrated photovoltaic BIPV_UPV.pdf
The AUB Centre for AI in Media Proposal.docx
Understanding_Digital_Forensics_Presentation.pptx
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Unlocking AI with Model Context Protocol (MCP)

Titanium 3.2 CLI - TiAppCamp2 - 11/2/2013

  • 1. Titanium 3.2 CLI Chris Barber Titanium Engineer Extraordinaire TiAppCamp 2 / Nov 2, 2013
  • 2. 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
  • 3. 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+
  • 5. 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
  • 6. Setup Command • New menu design • Improved quick setup • New check environment
  • 7. 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
  • 8. 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)
  • 10. 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
  • 11. • • • • • Fast x86 Android emulator Built on top of VirtualBox Beta support with Titanium http://www.genymotion.com/ titanium config genymotion.enabled true
  • 13. 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
  • 14. No More iTunes Sync • Direct install to iOS device • Insanely fast • Supports install to multiple devices simultaneously • https://npmjs.org/package/node-ios-device
  • 16. CLI Plugins • Contains commands, event hooks, & function hooks • Global and per-project • Global and Module hooks
  • 17. Anatomy of a CLI Command • /some/dir/mycommand.js • ti config -a paths.commands /some/dir • ti mycommand -baz wow
  • 18. Anatomy of a CLI Hook • /some/dir/myhook.js • ti config -a paths.hooks /some/dir
  • 19. Packaging a CLI Plugin • Global plugins go in ~/Library/Application Support/Titanium/plugins – Can contain commands and hooks – Automatically loaded for every Titanium command
  • 20. 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
  • 21. Available Plugin Hooks Event Hooks Function 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 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
  • 22. How to get it: npm install -g git://github.com/appcelerator/titaniu m.git ti sdk install -b master -d DISCLAIMER: This is not fully tested. This is not stable code. Use at your own risk.
  • 24. 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
  • 26. Export Command • Generate standalone Xcode (iOS) or Eclipse (Android) projects • No dependency on Titanium • Replaces transport.py
  • 27. Improved Logging • • • • • Console-only today File logging, especially for builds Destination specific logging Timestamps Force specific locale
  • 28. 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

Editor's Notes

  • #2: Titanium 3.2… or &quot;how I spent the last 6 months of my life&quot;
  • #3: Follow me for important info like what I ate for breakfast
  • #4: Titanium 3.2… or &quot;how I spent the last 6 months of my life&quot;
  • #5: Titanium 3.2… or &quot;how I spent the last 6 months of my life&quot;
  • #10: Titanium 3.2… or &quot;how I spent the last 6 months of my life&quot;
  • #13: Titanium 3.2… or &quot;how I spent the last 6 months of my life&quot;
  • #16: Titanium 3.2… or &quot;how I spent the last 6 months of my life&quot;
  • #23: Titanium 3.2… or &quot;how I spent the last 6 months of my life&quot;
  • #24: Titanium 3.2… or &quot;how I spent the last 6 months of my life&quot;
  • #30: !!! Presentation Tip !!! Use relevant icons to mark each section.Sectional transition sides help divide up the presentation and the guide the audience to the next topic of discussion