SlideShare a Scribd company logo
1 of 36
Exploring The New Titanium
 Command Line Interface

          Chris Barber
           Sr. Platform Lead
             Appcelerator
              @cb1kenobi
       cbarber@appcelerator.com
About Me

           • Chris Barber
           • JavaScript Team Lead
           • Mobile Web, CLI
           • @cb1kenobi
Why Create a New CLI?
If it ain’t broke, don’t fix it
Old School

         • Python 2.7.x
         • Poorly documented
         • Difficult to maintain
         • Inconsistent arguments
         • Rigid plugin system
Building a New CLI

         • Python 3? Node.js? Ruby? Java+Rhino?
         • How comfortable are we with these
           technologies?
         • Compatible license?
         • What libraries are available?
            • XML/JSON parsing
            • Code minification
            • Image resizing
Appc   Node.js

         • JavaScript!
         • MIT License
         • Small size
         • No native dependencies
         • Package manager (npm)
         • Tons of great community modules
Getting Started
Installing the Titanium CLI
First Things First

          • Node.js
             • 0.8 or newer
          • NPM
Installation




               npm install -g titanium

                             Note: may need to run as npm sudo
Touring the CLI
Built-in Commands
Running The CLI

         chris@yojimbo:~$ titanium
         Titanium Command-Line Interface, version 3.0.7
         Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved.

         Usage: titanium <command> [options]

         Commands:
          config get and set config options
          help displays this help screen
          info display development environment information
          login logs into the Appcelerator network
          logout logs out of the Appcelerator network
          module manages installed Titanium Modules
          plugin manages installed Titanium Plugins
          sdk    manages installed Titanium SDKs
          setup run the setup wizard
          status displays session information

         Global Flags:
          --banner, --no-banner displays Titanium version banner [default: true]
          --colors, --no-colors use colors in the terminal [default: true]
          -h, --help        displays help
          --prompt, --no-prompt prompt for missing options [default: true]
          -q, --quiet       suppress all output
          -v, --version      displays the current version
Help!
titanium <cmd> -h       chris@yojimbo:~$ titanium help config
                        Titanium Command-Line Interface, version 3.0.7
titanium <cmd> --help   Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved.

titanium help <cmd>     Usage: titanium config [--remove] [--output <value>] [<key>] [<value>]

                        Gets and sets config options. If no key is specified, then all key/values are
                        returned.

                        The config file is located at: /Users/chris/.titanium/config.json

                        Config Arguments:
                         <key> the key to get or set
                         <value> the value to set the specified key

                        Config Flags:
                         -r, --remove remove the specified config key and all its descendants

                        Config Options:
                         -o, --output <value> output format [report, json]

                        Global Flags:
                         --banner, --no-banner displays Titanium version banner [default: true]
                         --colors, --no-colors use colors in the terminal [default: true]
                         -h, --help        displays help
                         --prompt, --no-prompt prompt for missing options [default: true]
                         -q, --quiet       suppress all output
                         -v, --version      displays the current version
Setup Wizard
Basic Setup
titanium setup

Advanced Setup
                    • Initializes the CLI configuration
titanium setup -a



                    chris@yojimbo:~$ titanium setup
                    Titanium Command-Line Interface, version 3.0.7
                    Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved.

                    Enter ctrl-c at any time to quit

                    What is your name? (this is used as the default for the "author" field in the tiapp.xml or module
                    manifest file when creating new projects) (Chris Barber)
                    What is your email address used for logging into the Appcelerator Network? (cbarber@appcelerator.com)
                    What would you like as your default locale? (examples: "en", "de", "fr") (en-us)
                    What Titanium SDK would you like to use by default? (2.1.3.GA)
                    Path to your workspace where your projects should be created: (~/appc/workspace)
                    Path to the Android SDK: (this is needed for building Android apps)

                    Configuration saved
Manual Configuration
Get All Values
titanium config

Get All User.*
                       • Get and set config settings
Settings
titanium config user

Set Android SDK Path
                       chris@yojimbo:~$ titanium config
titanium config
                       android.ndkPath       = "/opt/android-ndk"
  android.sdkPath
                       android.sdkPath       = ""
  “/path/to/sdk”
                       app.idprefix       = "com.appcelerator"
                       app.publisher       = "Appcelerator"
                       app.sdk          = "2.1.3.GA"
                       app.url         = ""
                       app.workspace         = "~/appc/workspace"
                       cli.colors       = true
                       cli.failOnWrongSDK = false
                       cli.logLevel      = "trace"
                       cli.prompt        = true
                       cli.quiet       = false
                       ios.developerName = "Chris Barber"
                       ios.distributionName = "Appcelerator, Inc."
                       paths.commands          = []
                       paths.hooks         = []
                       paths.plugins       = ["~/appc/ti.alloy"]
                       user.email        = "cbarber@appcelerator.com"
                       user.locale       = "en-us"
                       user.name          = "Chris Barber"
Authentication
Logging In        chris@yojimbo:~$ titanium login
titanium login    Titanium Command-Line Interface, version 3.0.7
  <username>      Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved.

Am I Logged In?   Username: (cbarber@appcelerator.com)
titanium status   Password:

Logging out       Logged in successfully
titanium logout

                  chris@yojimbo:~$ titanium status
                  Titanium Command-Line Interface, version 3.0.7
                  Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved.

                  You are currently logged in as cbarber@appcelerator.com


                  chris@yojimbo:~$ titanium logout
                  Titanium Command-Line Interface, version 3.0.7
                  Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved.

                  Logged out successfully


                  • Required for most commands
                  • Adds your app to my.appcelerator.com
                  • Username is your e-mail address
System Info
                        chris@yojimbo:~$ titanium info
Includes:               Titanium Command-Line Interface, version 3.0.7

• OS info
                        Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved.

                        Operating System
• node.js & npm          Name
                         Version
                                                         = Mac OS X
                                                         = 10.8.2
• Xcode versions         Memory                           = 16.0GB


• iOS SDKs &            node.js
                         node.js Version                    = v0.8.12
                         npm Version                        = 1.1.63
  simulators
• iOS provisioning
                        Xcode
                        4.4.1 (build 4F1003)
                         Install Location                   = /Applications/Xcode44.app/Contents/Developer
  profiles &             iOS SDKs
                         iOS Simulators
                                                           = 5.1
                                                             = 5.0, 5.1
  keychains             4.5 (build 4G182)
                         Install Location                   = /Applications/Xcode45.app/Contents/Developer
• Titanium SDKs          iOS SDKs
                         iOS Simulators
                                                           = 6.0
                                                             = 5.0, 5.1, 6.0

• Android SDKs,         iOS Certificates
                         Development                        = Chris Barber (XXXXXXXXXX)
  addons, and AVDs       Distribution                     = Appcelerator, Inc.
                         Apple WWDR                          = installed

                        Development iOS Provisioning Profiles
Get All Info            My Provisioning Profile
                         UUID                         = XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
titanium info            App Prefix
                         App Id
                                                        = XXXXXXXXXX
                                                      = com.appcelerator.*

                        iOS Keychains
                         System Default                     = System Default
OS Info Only             login.keychain                    = /Users/chris/Library/Keychains/login.keychain
                         Microsoft_Intermediate_Certificates        = /Users/chris/Library/Keychains/Microsoft_Intermediate_Certificates
titanium info -t os      System.keychain                     = /Library/Keychains/System.keychain

                        Titanium SDKs
                        2.1.3.GA
iOS Info Only            Install Location
                         Platforms
                                                           = /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/2.1.3.GA
                                                          = android, iphone, mobileweb
                         git Hash                        = unknown
titanium info -t ios     git Timestamp                      = unknown

                        Android Platforms
                        android-8
Android & Node.js        Name
                         API Level
                                                         = Android 2.2
                                                          =8
Info Only                Revision
                         Skins
                                                          =3
                                                        = HVGA, QVGA, WQVGA400, WQVGA432, WVGA800 (default), WVGA854
titanium info -t         ABIs
                         Path
                                                        = armeabi
                                                        = /opt/android-sdk/platforms/android-8

android,nodejs          Android Add-ons
                        Google Inc.:Google APIs:8
                         Name                            = Google APIs
                         Vendor                          = Google Inc.
Output as JSON           Revision
                         Description
                                                          =2
                                                           = Android + Google APIs
titanium info -o json    Skins
                         ABIs
                                                        = WVGA854, WQVGA400, HVGA, WQVGA432, WVGA800 (default), QVGA
                                                        = armeabi
                         Path                           = /opt/android-sdk/add-ons/addon-google_apis-google-10
                         Based On                          = Android 2.2 (API level 8)
                         Libraries                       = com.google.android.maps: API for Google Maps (maps.jar)
Modules & Plugins
Get Installed Modules   chris@yojimbo:~$ titanium module
                        Titanium Command-Line Interface, version 3.0.7
titanium module         Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved.

                        Global Modules
Get Installed Modules
Including a Project     Android
                         ti.cloudpush
titanium module            2.0.5 /Users/chris/Library/Application Support/Titanium/modules/android/ti.cloudpush/2.0.5
  –project-dir             2.0.7 /Users/chris/Library/Application Support/Titanium/modules/android/ti.cloudpush/2.0.7

  /path/to/project      CommonJS
                         ti.cloud
                           2.1.0 /Users/chris/Library/Application Support/Titanium/modules/commonjs/ti.cloud/2.1.0
Get Installed Plugins      2.2.0 /Users/chris/Library/Application Support/Titanium/modules/commonjs/ti.cloud/2.2.0
                           2.3.0 /Users/chris/Library/Application Support/Titanium/modules/commonjs/ti.cloud/2.3.0
titanium plugin            2.0.5 /Library/Application Support/Titanium/modules/commonjs/ti.cloud/2.0.5

                        iPhone
Output as JSON           ti.jira
                           1.0 /Users/chris/Library/Application Support/Titanium/modules/iphone/ti.jira/1.0
titanium plugin
  -o json               Mobile Web
                         ti.oldmodule
                           0.1 /Users/chris/Library/Application Support/Titanium/modules/mobileweb/ti.oldmodule/0.1




                        chris@yojimbo:~$ titanium plugin
                        Titanium Command-Line Interface, version 3.0.7
                        Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved.

                        User Path Plugins

                        No project plugins found

                        Global Plugins

                        another_plugin
                         1.0 /Users/chris/Library/Application Support/Titanium/plugins/another_plugin/1.0

                        test_plugin
                         1.0 /Users/chris/Library/Application Support/Titanium/plugins/test_plugin/1.0

                        ti.alloy
                          1.0 /Users/chris/Library/Application Support/Titanium/plugins/ti.alloy/1.0
Wait!
Where’s the create and build commands?
Downloading An SDK
List Intalled SDKs        chris@yojimbo:~$ titanium sdk
titanium sdk              Titanium Command-Line Interface, version 3.0.7
                          Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved.
Install Latest 3.0
titanium sdk install      Installed SDKs:
  --branch 3_0_X            2.1.3.GA [default] /Users/chris/Library/ApplicationSupport/Titanium/mobilesdk/osx/2.1.3.GA
  --default                 2.1.2.GA       /Users/chris/Library/ApplicationSupport/Titanium/mobilesdk/osx/2.1.2.GA
                            2.1.0.GA       /Users/chris/Library/ApplicationSupport/Titanium/mobilesdk/osx/2.1.0.GA
Install Latest Stable       2.0.2.GA       /Users/chris/Library/ApplicationSupport/Titanium/mobilesdk/osx/2.0.2.GA
titanium sdk install
                          chris@yojimbo:~$ titanium sdk install --branch 3_0_X --default
Install Latest Stable &   Titanium Command-Line Interface, version 3.0.7
Set as Default SDK        Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved.
titanium sdk install
  --default               Downloading http://builds.appcelerator.com.s3.amazonaws.com/mobile/3_0_X/mobilesdk-
                          3.0.0.v20121018214614-osx.zip
Install Bleeding Edge      100% [=================================================================] 0.0s
titanium sdk install
  --branch master         Extracting SDK...

                          Saving SDK 3.0.0.v20121018214614 as the default.
                          Titanium SDK 3.0.0.v20121018214614 successfully installed!
New Commands!

       chris@yojimbo:~$ titanium
       Titanium Command-Line Interface, version 3.0.7
       Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved.

       Usage: titanium <command> [options]

       Commands:
        build builds a project
        clean removes previous build directories
        config get and set config options
        create creates a new mobile application or module
        help   displays this help screen
        info   display development environment information
        login logs into the Appcelerator network
        logout logs out of the Appcelerator network
        module manages installed Titanium Modules
        plugin manages installed Titanium Plugins
        project get and set tiapp.xml settings
        sdk    manages installed Titanium SDKs
        setup run the setup wizard
        status displays session information

       Global Flags:
        --banner, --no-banner displays Titanium version banner [default: true]
        --colors, --no-colors use colors in the terminal [default: true]
        -h, --help        displays help
        --prompt, --no-prompt prompt for missing options [default: true]
        -q, --quiet       suppress all output
        -v, --version      displays the current version
SDK Commands
create, project, build, clean
Creating a Project
Create a Project        chris@yojimbo:~$ titanium create
                        Titanium Command-Line Interface, version 3.0.7
titanium create         Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved.

                        Target platforms: (android,ios,ipad,iphone,mobileweb)
Create Project With     App ID: com.appcelerator.myapp
All Arguments           Project name: myapp

titanium sdk create     [INFO] Creating Titanium Mobile application project
                        [DEBUG] Copying /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121018214614/android/templates/app/default =>
  --id com.appc.myapp   /Users/chris/myapp
  --name myapp          [DEBUG] Copying /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121018214614/android/templates/app/default/Resources =>
                        /Users/chris/myapp/Resources
  --platforms           [DEBUG] Copying /Users/chris/Library/Application
android,iphone,ipad,    Support/Titanium/mobilesdk/osx/3.0.0.v20121018214614/android/templates/app/default/Resources/android => /Users/chris/myapp/Resources/android
                        [DEBUG] Copying /Users/chris/Library/Application
mobileweb               Support/Titanium/mobilesdk/osx/3.0.0.v20121018214614/android/templates/app/default/Resources/android/images =>
  --workspace-dir       /Users/chris/myapp/Resources/android/images
                        [DEBUG] Copying /Users/chris/Library/Application
  /path/to/workspace    Support/Titanium/mobilesdk/osx/3.0.0.v20121018214614/android/templates/app/default/Resources/android/images/res-long-land-hdpi =>
                        /Users/chris/myapp/Resources/android/images/res-long-land-hdpi
                        [DEBUG] Copying /Users/chris/Library/Application
                        Support/Titanium/mobilesdk/osx/3.0.0.v20121018214614/android/templates/app/default/Resources/android/images/res-long-land-ldpi =>
                        /Users/chris/myapp/Resources/android/images/res-long-land-ldpi
                        [DEBUG] Copying /Users/chris/Library/Application
                        Support/Titanium/mobilesdk/osx/3.0.0.v20121018214614/android/templates/app/default/Resources/android/images/res-long-port-hdpi =>
                        /Users/chris/myapp/Resources/android/images/res-long-port-hdpi
                        [DEBUG] Copying /Users/chris/Library/Application
                        Support/Titanium/mobilesdk/osx/3.0.0.v20121018214614/android/templates/app/default/Resources/android/images/res-long-port-ldpi =>
                        /Users/chris/myapp/Resources/android/images/res-long-port-ldpi
                        [DEBUG] Copying /Users/chris/Library/Application
                        Support/Titanium/mobilesdk/osx/3.0.0.v20121018214614/android/templates/app/default/Resources/android/images/res-notlong-land-hdpi =>
                        /Users/chris/myapp/Resources/android/images/res-notlong-land-hdpi
                        [DEBUG] Copying /Users/chris/Library/Application
                        Support/Titanium/mobilesdk/osx/3.0.0.v20121018214614/android/templates/app/default/Resources/android/images/res-notlong-land-ldpi =>
                        /Users/chris/myapp/Resources/android/images/res-notlong-land-ldpi
                        [DEBUG] Copying /Users/chris/Library/Application
                        Support/Titanium/mobilesdk/osx/3.0.0.v20121018214614/android/templates/app/default/Resources/android/images/res-notlong-land-mdpi =>
                        /Users/chris/myapp/Resources/android/images/res-notlong-land-mdpi
                        [DEBUG] Copying /Users/chris/Library/Application
                        Support/Titanium/mobilesdk/osx/3.0.0.v20121018214614/android/templates/app/default/Resources/android/images/res-notlong-port-hdpi =>
                        /Users/chris/myapp/Resources/android/images/res-notlong-port-hdpi
                        [DEBUG] Copying /Users/chris/Library/Application
                        Support/Titanium/mobilesdk/osx/3.0.0.v20121018214614/android/templates/app/default/Resources/android/images/res-notlong-port-ldpi =>
                        /Users/chris/myapp/Resources/android/images/res-notlong-port-ldpi
                        [DEBUG] Copying /Users/chris/Library/Application
                        Support/Titanium/mobilesdk/osx/3.0.0.v20121018214614/android/templates/app/default/Resources/android/images/res-notlong-port-mdpi =>
                        /Users/chris/myapp/Resources/android/images/res-notlong-port-mdpi
                        [INFO] Project 'myapp' created successfully in 32ms
Getting Project Info
Basic Info
titanium project

Copy Platform
                          • Tool for interacting with the tiapp.xml
Resource Files
titanium project
  --deployment-targets    chris@yojimbo:~/myapp$ titanium project
  android,ios,mobileweb   Titanium Command-Line Interface, version 3.0.7
                          Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved.

                          Deployment Targets:
                           android = true
                           ipad   = false
                           iphone = true
                           mobileweb = true

                          Project Properties:
                           sdk-version = 3.0.0
                           id      = com.appcelerator.myapp
                           name       = myapp
                           version = 1.0
                           publisher = not specified
                           url     = not specified
                           description = not specified
                           copyright = not specified
                           icon     = appicon.png
                           analytics = true
                           guid     = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Building a Project
Platforms:            chris@yojimbo:~/myapp$ titanium build --platform ios
• iOS                 Titanium Command-Line Interface, version 3.0.6
• Mobile Web          Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved.
• Android             [DEBUG] No project level plugins to load
                      [DEBUG] Loaded plugin hooks:
Special Hooks:        [DEBUG] /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.1.0/cli/hooks/plugins.js
• Run in Simulator    [DEBUG] /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.1.0/iphone/cli/hooks/install.js
• Install on Device   [DEBUG] /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.1.0/iphone/cli/hooks/package.js
                      [DEBUG] /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.1.0/iphone/cli/hooks/run.js
• Package for         [INFO] Build type: development
  Distribution        [DEBUG] Titanium iOS SDK directory: /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.1.0/iphone
                      [INFO] Building for target: simulator
                      [INFO] Building using iOS SDK: 6.0
                      [INFO] Building for iOS Simulator: 6.0
                      [INFO] Building for device family: universal
                      [DEBUG] Setting Xcode target to Debug
                      [DEBUG] Setting Xcode build OS to iphonesimulator6.0
                      [DEBUG] Xcode installation: /Applications/Xcode45.app/Contents/Developer
                      [DEBUG] iOS WWDR certificate: installed
                      [INFO] Building for iOS 6.0; using 4.3 as minimum iOS version
                      [DEBUG] Minimum iOS version: 4.3
                      [INFO] Debugging disabled
                      [DEBUG] Building for the following architectures: armv7 armv7s i386
                      [DEBUG] Forcing rebuild: githash changed since last build
                      [DEBUG] Was: a50c927
                      [DEBUG] Now: ab2b280
                      [INFO] Cleaning old build directory
                      [DEBUG] Would be firing "compile" legacy plugin hook if it was supported
                      [INFO] Building Info.plist
                      [INFO] No Titanium Modules required, continuing
                      [INFO] Performing full rebuild
                      [INFO] Copying Xcode iOS files

                      ...
Cleaning the Project
Nuke All Platform
Build Directories
titanium clean
                      • Completely removes the platform specific build
Nuke a Specific
Platform’s Build        directories
Directory
titanium clean
  –platform android




                      chris@yojimbo:~/myapp$ titanium clean
                      Titanium Command-Line Interface, version 3.0.6
                      Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved.

                      [INFO] Project cleaned successfully in 1ms
Extending the CLI
Plugins, commands, and hooks
Plugins

          • Similar to Titanium Modules
          • Legacy plugin.py not supported today
          • CLI commands & hooks
          • Installed globally or in project directory
          • Enabled via the tiapp.xml <plugins>
Sample Command
       myplugin/1.0/cli/commands/magic.js
       exports.cliVersion = '>=3.X';
       exports.desc = 'does magical things’;

       exports.config = function (logger, config, cli) {
          return {
             flags: {
                extra: {
                  abbr: 'e',
                  desc: 'adds more magic’
                }
             }
          };
       };

       exports.validate = function (logger, config, cli) {
          // nothing to validate
       };

       exports.run = function (logger, config, cli) {
         var s = 'doing magical stuff!';

            if (cli.argv.extra) {
                s = s.replace(/./g, function (c, i) {
                    return i % 2 == 0 ? c.toUpperCase() : c.toLowerCase();
                });
            }

            logger.log(s);
       };
Sample Hook
        myplugin/1.0/cli/hooks/buildhook.js
        exports.cliVersion = '>=3.X';

        exports.init = function (logger, config, cli) {
          cli.addHook('build.pre.compile', function (data, finished) {
              logger.log('modifying some code before build starts');
              finished();
          });

             cli.addHook('build.post.compile', {
                 priority: 900,
                 post: function (data, finished) {
                   logger.log('packaging some extra files after the build');
                   finished();
                 }
             });

             cli.addHook('build.finalize', function (data, finished) {
                 logger.log('cleaning up my mess');
                 finished();
             });
        };
Demo
Kick the tires & light the fires
What’s Next?
// TODO:

           • More plugin hooks
           • Project exporting & migration tools
           • Better support for multiple Titanium SDKs




           • What would you like to see?
Summary
Just in case you were sleeping
The New CLI Rocks

        • Easy to install, easy to use
        • Fast as shit
        • Built-in documentation
        • Extensible plugin architecture
        • Consistent arguments
        • Argument prompting
        • Internationalization
        • Colors!
Get It Today!




           npm install -g titanium
           titanium sdk install --branch 3_0_X --default

                                                Note: may need to run npm as sudo
Chris Barber
       @cb1kenobi
cbarber@appcelerator.com

More Related Content

What's hot

Java Debuggers: A Peek Under the Hood [JavaOne 2016 CON1503]
Java Debuggers: A Peek Under the Hood [JavaOne 2016 CON1503]Java Debuggers: A Peek Under the Hood [JavaOne 2016 CON1503]
Java Debuggers: A Peek Under the Hood [JavaOne 2016 CON1503]David Buck
 
Aci programmability
Aci programmabilityAci programmability
Aci programmabilityCisco DevNet
 
Concierge - Bringing OSGi (back) to Embedded Devices
Concierge - Bringing OSGi (back) to Embedded DevicesConcierge - Bringing OSGi (back) to Embedded Devices
Concierge - Bringing OSGi (back) to Embedded DevicesJan S. Rellermeyer
 
Inside Android's Dalvik VM - NEJUG Nov 2011
Inside Android's Dalvik VM - NEJUG Nov 2011Inside Android's Dalvik VM - NEJUG Nov 2011
Inside Android's Dalvik VM - NEJUG Nov 2011Doug Hawkins
 
Improving DroidBox
Improving DroidBoxImproving DroidBox
Improving DroidBoxKelwin Yang
 
Devoxx17 - Préparez-vous à la modularité selon Java 9
Devoxx17 - Préparez-vous à la modularité selon Java 9Devoxx17 - Préparez-vous à la modularité selon Java 9
Devoxx17 - Préparez-vous à la modularité selon Java 9Alexis Hassler
 
Invoke dynamic your api to hotspot
Invoke dynamic your api to hotspotInvoke dynamic your api to hotspot
Invoke dynamic your api to hotspotBoundary
 
What's new with Zend server
What's new with Zend serverWhat's new with Zend server
What's new with Zend serverCOMMON Europe
 
Advanced Eclipse Workshop (held at IPC2010 -spring edition-)
Advanced Eclipse Workshop (held at IPC2010 -spring edition-)Advanced Eclipse Workshop (held at IPC2010 -spring edition-)
Advanced Eclipse Workshop (held at IPC2010 -spring edition-)Bastian Feder
 
GBDC 勉強会 #6 Java イベントレポート 2016
GBDC 勉強会 #6 Java イベントレポート 2016GBDC 勉強会 #6 Java イベントレポート 2016
GBDC 勉強会 #6 Java イベントレポート 2016Yutaka Kato
 
Android graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspectiveAndroid graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspectiveBin Chen
 
Eclipse OMR: a modern toolkit for building language runtimes
Eclipse OMR: a modern toolkit for building language runtimesEclipse OMR: a modern toolkit for building language runtimes
Eclipse OMR: a modern toolkit for building language runtimesMark Stoodley
 
Droidcon 2011: Gingerbread and honeycomb, Markus Junginger, Greenrobot
Droidcon 2011: Gingerbread and honeycomb, Markus Junginger,  GreenrobotDroidcon 2011: Gingerbread and honeycomb, Markus Junginger,  Greenrobot
Droidcon 2011: Gingerbread and honeycomb, Markus Junginger, GreenrobotDroidcon Berlin
 
Broadcast Music Inc - Release Automation Rockstars!
Broadcast Music Inc - Release Automation Rockstars!Broadcast Music Inc - Release Automation Rockstars!
Broadcast Music Inc - Release Automation Rockstars!ghodgkinson
 
Toward dynamic analysis of obfuscated android malware
Toward dynamic analysis of obfuscated android malwareToward dynamic analysis of obfuscated android malware
Toward dynamic analysis of obfuscated android malwareZongXian Shen
 
Thinking tts - Eric Floe
Thinking tts - Eric FloeThinking tts - Eric Floe
Thinking tts - Eric FloeEric Floe
 

What's hot (19)

Java Debuggers: A Peek Under the Hood [JavaOne 2016 CON1503]
Java Debuggers: A Peek Under the Hood [JavaOne 2016 CON1503]Java Debuggers: A Peek Under the Hood [JavaOne 2016 CON1503]
Java Debuggers: A Peek Under the Hood [JavaOne 2016 CON1503]
 
Aci programmability
Aci programmabilityAci programmability
Aci programmability
 
Concierge - Bringing OSGi (back) to Embedded Devices
Concierge - Bringing OSGi (back) to Embedded DevicesConcierge - Bringing OSGi (back) to Embedded Devices
Concierge - Bringing OSGi (back) to Embedded Devices
 
Inside Android's Dalvik VM - NEJUG Nov 2011
Inside Android's Dalvik VM - NEJUG Nov 2011Inside Android's Dalvik VM - NEJUG Nov 2011
Inside Android's Dalvik VM - NEJUG Nov 2011
 
Improving DroidBox
Improving DroidBoxImproving DroidBox
Improving DroidBox
 
Devoxx17 - Préparez-vous à la modularité selon Java 9
Devoxx17 - Préparez-vous à la modularité selon Java 9Devoxx17 - Préparez-vous à la modularité selon Java 9
Devoxx17 - Préparez-vous à la modularité selon Java 9
 
Invoke dynamic your api to hotspot
Invoke dynamic your api to hotspotInvoke dynamic your api to hotspot
Invoke dynamic your api to hotspot
 
Pc54
Pc54Pc54
Pc54
 
What's new with Zend server
What's new with Zend serverWhat's new with Zend server
What's new with Zend server
 
Practice of Android Reverse Engineering
Practice of Android Reverse EngineeringPractice of Android Reverse Engineering
Practice of Android Reverse Engineering
 
Advanced Eclipse Workshop (held at IPC2010 -spring edition-)
Advanced Eclipse Workshop (held at IPC2010 -spring edition-)Advanced Eclipse Workshop (held at IPC2010 -spring edition-)
Advanced Eclipse Workshop (held at IPC2010 -spring edition-)
 
GBDC 勉強会 #6 Java イベントレポート 2016
GBDC 勉強会 #6 Java イベントレポート 2016GBDC 勉強会 #6 Java イベントレポート 2016
GBDC 勉強会 #6 Java イベントレポート 2016
 
Android graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspectiveAndroid graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspective
 
Guides To Analyzing WebKit Performance
Guides To Analyzing WebKit PerformanceGuides To Analyzing WebKit Performance
Guides To Analyzing WebKit Performance
 
Eclipse OMR: a modern toolkit for building language runtimes
Eclipse OMR: a modern toolkit for building language runtimesEclipse OMR: a modern toolkit for building language runtimes
Eclipse OMR: a modern toolkit for building language runtimes
 
Droidcon 2011: Gingerbread and honeycomb, Markus Junginger, Greenrobot
Droidcon 2011: Gingerbread and honeycomb, Markus Junginger,  GreenrobotDroidcon 2011: Gingerbread and honeycomb, Markus Junginger,  Greenrobot
Droidcon 2011: Gingerbread and honeycomb, Markus Junginger, Greenrobot
 
Broadcast Music Inc - Release Automation Rockstars!
Broadcast Music Inc - Release Automation Rockstars!Broadcast Music Inc - Release Automation Rockstars!
Broadcast Music Inc - Release Automation Rockstars!
 
Toward dynamic analysis of obfuscated android malware
Toward dynamic analysis of obfuscated android malwareToward dynamic analysis of obfuscated android malware
Toward dynamic analysis of obfuscated android malware
 
Thinking tts - Eric Floe
Thinking tts - Eric FloeThinking tts - Eric Floe
Thinking tts - Eric Floe
 

Viewers also liked

Global Forum Presentation: Brent Olson, Vice President of Public Policy AT&T
Global Forum Presentation: Brent Olson, Vice President of Public Policy AT&TGlobal Forum Presentation: Brent Olson, Vice President of Public Policy AT&T
Global Forum Presentation: Brent Olson, Vice President of Public Policy AT&TGlobalForum
 
Appcelerator Presentation Template
Appcelerator Presentation TemplateAppcelerator Presentation Template
Appcelerator Presentation TemplateAxway Appcelerator
 
Janta choupal pitch deck
Janta choupal pitch deckJanta choupal pitch deck
Janta choupal pitch deckPrabhakar Singh
 
AT&T Mobile App Hackathon (Smart City) - Berkeley
AT&T Mobile App Hackathon (Smart City) - BerkeleyAT&T Mobile App Hackathon (Smart City) - Berkeley
AT&T Mobile App Hackathon (Smart City) - BerkeleyEd Donahue
 
Codestrong 2012 breakout session at&t api platform and trends
Codestrong 2012 breakout session  at&t api platform and trendsCodestrong 2012 breakout session  at&t api platform and trends
Codestrong 2012 breakout session at&t api platform and trendsAxway Appcelerator
 
Summit 16: Open-O Mini-Summit - VF Event Streaming Project Proposal
Summit 16: Open-O Mini-Summit - VF Event Streaming Project ProposalSummit 16: Open-O Mini-Summit - VF Event Streaming Project Proposal
Summit 16: Open-O Mini-Summit - VF Event Streaming Project ProposalOPNFV
 
[Webinar Slides] Programming the Network Dataplane in P4
[Webinar Slides] Programming the Network Dataplane in P4[Webinar Slides] Programming the Network Dataplane in P4
[Webinar Slides] Programming the Network Dataplane in P4Open Networking Summits
 
Summit 16: Inspiring Cross-Industry Innovation
Summit 16: Inspiring Cross-Industry InnovationSummit 16: Inspiring Cross-Industry Innovation
Summit 16: Inspiring Cross-Industry InnovationOPNFV
 
CORD: Central Office Re-architected as a Datacenter
CORD: Central Office Re-architected as a DatacenterCORD: Central Office Re-architected as a Datacenter
CORD: Central Office Re-architected as a DatacenterOpen Networking Summits
 

Viewers also liked (13)

Global Forum Presentation: Brent Olson, Vice President of Public Policy AT&T
Global Forum Presentation: Brent Olson, Vice President of Public Policy AT&TGlobal Forum Presentation: Brent Olson, Vice President of Public Policy AT&T
Global Forum Presentation: Brent Olson, Vice President of Public Policy AT&T
 
Appcelerator Presentation Template
Appcelerator Presentation TemplateAppcelerator Presentation Template
Appcelerator Presentation Template
 
Janta choupal pitch deck
Janta choupal pitch deckJanta choupal pitch deck
Janta choupal pitch deck
 
AT&T Mobile App Hackathon (Smart City) - Berkeley
AT&T Mobile App Hackathon (Smart City) - BerkeleyAT&T Mobile App Hackathon (Smart City) - Berkeley
AT&T Mobile App Hackathon (Smart City) - Berkeley
 
Codestrong 2012 breakout session at&t api platform and trends
Codestrong 2012 breakout session  at&t api platform and trendsCodestrong 2012 breakout session  at&t api platform and trends
Codestrong 2012 breakout session at&t api platform and trends
 
NOD
NODNOD
NOD
 
Summit 16: Open-O Mini-Summit - VF Event Streaming Project Proposal
Summit 16: Open-O Mini-Summit - VF Event Streaming Project ProposalSummit 16: Open-O Mini-Summit - VF Event Streaming Project Proposal
Summit 16: Open-O Mini-Summit - VF Event Streaming Project Proposal
 
[Webinar Slides] Programming the Network Dataplane in P4
[Webinar Slides] Programming the Network Dataplane in P4[Webinar Slides] Programming the Network Dataplane in P4
[Webinar Slides] Programming the Network Dataplane in P4
 
Summit 16: Inspiring Cross-Industry Innovation
Summit 16: Inspiring Cross-Industry InnovationSummit 16: Inspiring Cross-Industry Innovation
Summit 16: Inspiring Cross-Industry Innovation
 
OSPF Basics
OSPF BasicsOSPF Basics
OSPF Basics
 
CORD: Central Office Re-architected as a Datacenter
CORD: Central Office Re-architected as a DatacenterCORD: Central Office Re-architected as a Datacenter
CORD: Central Office Re-architected as a Datacenter
 
AT&T Enhanced WebRTC API Overview
AT&T Enhanced WebRTC API OverviewAT&T Enhanced WebRTC API Overview
AT&T Enhanced WebRTC API Overview
 
AT&T API Platform
AT&T API PlatformAT&T API Platform
AT&T API Platform
 

Similar to Codestrong 2012 breakout session exploring the new titanium command line interface (cli)

Exploring the Titanium CLI - Codestrong 2012
Exploring the Titanium CLI - Codestrong 2012Exploring the Titanium CLI - Codestrong 2012
Exploring the Titanium CLI - Codestrong 2012Chris Barber
 
Getting started with Appcelerator Titanium
Getting started with Appcelerator TitaniumGetting started with Appcelerator Titanium
Getting started with Appcelerator TitaniumTechday7
 
Getting started with titanium
Getting started with titaniumGetting started with titanium
Getting started with titaniumNaga Harish M
 
IVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & Mobile
IVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & MobileIVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & Mobile
IVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & MobileAmazon Web Services Japan
 
20200303 AWS Black Belt Online Seminar AWS Cloud Development Kit (CDK)
20200303 AWS Black Belt Online Seminar AWS Cloud Development Kit (CDK)20200303 AWS Black Belt Online Seminar AWS Cloud Development Kit (CDK)
20200303 AWS Black Belt Online Seminar AWS Cloud Development Kit (CDK)Amazon Web Services Japan
 
Gitlab and Lingvokot
Gitlab and LingvokotGitlab and Lingvokot
Gitlab and LingvokotLingvokot
 
C# Production Debugging Made Easy
 C# Production Debugging Made Easy C# Production Debugging Made Easy
C# Production Debugging Made EasyAlon Fliess
 
Titanium Alloy Framework
Titanium Alloy FrameworkTitanium Alloy Framework
Titanium Alloy FrameworkTechday7
 
FP - Découverte de Play Framework Scala
FP - Découverte de Play Framework ScalaFP - Découverte de Play Framework Scala
FP - Découverte de Play Framework ScalaKévin Margueritte
 
Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014biicode
 
Alloy: Deep Dive, Below The Surface, and Other Nautical Metaphors
Alloy: Deep Dive, Below The Surface, and Other Nautical MetaphorsAlloy: Deep Dive, Below The Surface, and Other Nautical Metaphors
Alloy: Deep Dive, Below The Surface, and Other Nautical MetaphorsTony Lukasavage
 
Mac ruby deployment
Mac ruby deploymentMac ruby deployment
Mac ruby deploymentThilo Utke
 
Kandroid for nhn_deview_20131013_v5_final
Kandroid for nhn_deview_20131013_v5_finalKandroid for nhn_deview_20131013_v5_final
Kandroid for nhn_deview_20131013_v5_finalNAVER D2
 
Android porting for dummies @droidconin 2011
Android porting for dummies @droidconin 2011Android porting for dummies @droidconin 2011
Android porting for dummies @droidconin 2011pundiramit
 
Mobile Development integration tests
Mobile Development integration testsMobile Development integration tests
Mobile Development integration testsKenneth Poon
 
Continuous Integration and Deployment Best Practices on AWS
 Continuous Integration and Deployment Best Practices on AWS  Continuous Integration and Deployment Best Practices on AWS
Continuous Integration and Deployment Best Practices on AWS Amazon Web Services
 
TestUpload
TestUploadTestUpload
TestUploadZarksaDS
 

Similar to Codestrong 2012 breakout session exploring the new titanium command line interface (cli) (20)

Exploring the Titanium CLI - Codestrong 2012
Exploring the Titanium CLI - Codestrong 2012Exploring the Titanium CLI - Codestrong 2012
Exploring the Titanium CLI - Codestrong 2012
 
Getting started with Appcelerator Titanium
Getting started with Appcelerator TitaniumGetting started with Appcelerator Titanium
Getting started with Appcelerator Titanium
 
Getting started with titanium
Getting started with titaniumGetting started with titanium
Getting started with titanium
 
IVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & Mobile
IVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & MobileIVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & Mobile
IVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & Mobile
 
20200303 AWS Black Belt Online Seminar AWS Cloud Development Kit (CDK)
20200303 AWS Black Belt Online Seminar AWS Cloud Development Kit (CDK)20200303 AWS Black Belt Online Seminar AWS Cloud Development Kit (CDK)
20200303 AWS Black Belt Online Seminar AWS Cloud Development Kit (CDK)
 
Gitlab and Lingvokot
Gitlab and LingvokotGitlab and Lingvokot
Gitlab and Lingvokot
 
C# Production Debugging Made Easy
 C# Production Debugging Made Easy C# Production Debugging Made Easy
C# Production Debugging Made Easy
 
Titanium Desktop Intro
Titanium Desktop IntroTitanium Desktop Intro
Titanium Desktop Intro
 
Titanium Alloy Framework
Titanium Alloy FrameworkTitanium Alloy Framework
Titanium Alloy Framework
 
FP - Découverte de Play Framework Scala
FP - Découverte de Play Framework ScalaFP - Découverte de Play Framework Scala
FP - Découverte de Play Framework Scala
 
Wider than rails
Wider than railsWider than rails
Wider than rails
 
Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014
 
Alloy: Deep Dive, Below The Surface, and Other Nautical Metaphors
Alloy: Deep Dive, Below The Surface, and Other Nautical MetaphorsAlloy: Deep Dive, Below The Surface, and Other Nautical Metaphors
Alloy: Deep Dive, Below The Surface, and Other Nautical Metaphors
 
Mac ruby deployment
Mac ruby deploymentMac ruby deployment
Mac ruby deployment
 
Kandroid for nhn_deview_20131013_v5_final
Kandroid for nhn_deview_20131013_v5_finalKandroid for nhn_deview_20131013_v5_final
Kandroid for nhn_deview_20131013_v5_final
 
Android develop guideline
Android develop guidelineAndroid develop guideline
Android develop guideline
 
Android porting for dummies @droidconin 2011
Android porting for dummies @droidconin 2011Android porting for dummies @droidconin 2011
Android porting for dummies @droidconin 2011
 
Mobile Development integration tests
Mobile Development integration testsMobile Development integration tests
Mobile Development integration tests
 
Continuous Integration and Deployment Best Practices on AWS
 Continuous Integration and Deployment Best Practices on AWS  Continuous Integration and Deployment Best Practices on AWS
Continuous Integration and Deployment Best Practices on AWS
 
TestUpload
TestUploadTestUpload
TestUpload
 

More from Axway Appcelerator

Axway Appcelerator - Titanium SDK 6.1.0 - Status, Releases & Roadmap
Axway Appcelerator - Titanium SDK 6.1.0 - Status, Releases & RoadmapAxway Appcelerator - Titanium SDK 6.1.0 - Status, Releases & Roadmap
Axway Appcelerator - Titanium SDK 6.1.0 - Status, Releases & RoadmapAxway Appcelerator
 
2014 Dublin Web Summit by Jeff Haynie
2014 Dublin Web Summit by Jeff Haynie2014 Dublin Web Summit by Jeff Haynie
2014 Dublin Web Summit by Jeff HaynieAxway Appcelerator
 
Stop Debating, Start Measuring
Stop Debating, Start MeasuringStop Debating, Start Measuring
Stop Debating, Start MeasuringAxway Appcelerator
 
Mobile & The New Experience Economy (And What it Means for IT)
Mobile & The New Experience Economy  (And What it Means for IT)Mobile & The New Experience Economy  (And What it Means for IT)
Mobile & The New Experience Economy (And What it Means for IT)Axway Appcelerator
 
Apps, APIs & Analytics: What "Mobile First" Really Means
Apps, APIs & Analytics: What "Mobile First" Really MeansApps, APIs & Analytics: What "Mobile First" Really Means
Apps, APIs & Analytics: What "Mobile First" Really MeansAxway Appcelerator
 
Codestrong 2012 keynote jonathan rende, appcelerator's vp of products
Codestrong 2012 keynote   jonathan rende, appcelerator's vp of productsCodestrong 2012 keynote   jonathan rende, appcelerator's vp of products
Codestrong 2012 keynote jonathan rende, appcelerator's vp of productsAxway Appcelerator
 
Codestrong 2012 keynote jeff haynie, appcelerator's ceo
Codestrong 2012 keynote   jeff haynie, appcelerator's ceoCodestrong 2012 keynote   jeff haynie, appcelerator's ceo
Codestrong 2012 keynote jeff haynie, appcelerator's ceoAxway Appcelerator
 
Codestrong 2012 keynote how to build a top ten app
Codestrong 2012 keynote   how to build a top ten appCodestrong 2012 keynote   how to build a top ten app
Codestrong 2012 keynote how to build a top ten appAxway Appcelerator
 
Codestrong 2012 breakout session what's new in titanium studio
Codestrong 2012 breakout session   what's new in titanium studioCodestrong 2012 breakout session   what's new in titanium studio
Codestrong 2012 breakout session what's new in titanium studioAxway Appcelerator
 
Codestrong 2012 breakout session using appcelerator cloud services in your ...
Codestrong 2012 breakout session   using appcelerator cloud services in your ...Codestrong 2012 breakout session   using appcelerator cloud services in your ...
Codestrong 2012 breakout session using appcelerator cloud services in your ...Axway Appcelerator
 
Codestrong 2012 breakout session the role of cloud services in your next ge...
Codestrong 2012 breakout session   the role of cloud services in your next ge...Codestrong 2012 breakout session   the role of cloud services in your next ge...
Codestrong 2012 breakout session the role of cloud services in your next ge...Axway Appcelerator
 
Codestrong 2012 breakout session new device platform support for titanium
Codestrong 2012 breakout session   new device platform support for titaniumCodestrong 2012 breakout session   new device platform support for titanium
Codestrong 2012 breakout session new device platform support for titaniumAxway Appcelerator
 
Codestrong 2012 breakout session mobile platform and infrastructure
Codestrong 2012 breakout session   mobile platform and infrastructureCodestrong 2012 breakout session   mobile platform and infrastructure
Codestrong 2012 breakout session mobile platform and infrastructureAxway Appcelerator
 
Codestrong 2012 breakout session making money on appcelerator's marketplace
Codestrong 2012 breakout session   making money on appcelerator's marketplaceCodestrong 2012 breakout session   making money on appcelerator's marketplace
Codestrong 2012 breakout session making money on appcelerator's marketplaceAxway Appcelerator
 
Codestrong 2012 breakout session live multi-platform testing
Codestrong 2012 breakout session   live multi-platform testingCodestrong 2012 breakout session   live multi-platform testing
Codestrong 2012 breakout session live multi-platform testingAxway Appcelerator
 
Codestrong 2012 breakout session leveraging titanium as part of your mobile...
Codestrong 2012 breakout session   leveraging titanium as part of your mobile...Codestrong 2012 breakout session   leveraging titanium as part of your mobile...
Codestrong 2012 breakout session leveraging titanium as part of your mobile...Axway Appcelerator
 
Codestrong 2012 breakout session i os internals and best practices
Codestrong 2012 breakout session   i os internals and best practicesCodestrong 2012 breakout session   i os internals and best practices
Codestrong 2012 breakout session i os internals and best practicesAxway Appcelerator
 
Codestrong 2012 breakout session introduction to mobile web and best practices
Codestrong 2012 breakout session   introduction to mobile web and best practicesCodestrong 2012 breakout session   introduction to mobile web and best practices
Codestrong 2012 breakout session introduction to mobile web and best practicesAxway Appcelerator
 
Codestrong 2012 breakout session how to win bigger mobile deals
Codestrong 2012 breakout session   how to win bigger mobile dealsCodestrong 2012 breakout session   how to win bigger mobile deals
Codestrong 2012 breakout session how to win bigger mobile dealsAxway Appcelerator
 

More from Axway Appcelerator (20)

Axway Appcelerator - Titanium SDK 6.1.0 - Status, Releases & Roadmap
Axway Appcelerator - Titanium SDK 6.1.0 - Status, Releases & RoadmapAxway Appcelerator - Titanium SDK 6.1.0 - Status, Releases & Roadmap
Axway Appcelerator - Titanium SDK 6.1.0 - Status, Releases & Roadmap
 
2014 Dublin Web Summit by Jeff Haynie
2014 Dublin Web Summit by Jeff Haynie2014 Dublin Web Summit by Jeff Haynie
2014 Dublin Web Summit by Jeff Haynie
 
Making the Mobile Mind Shift
Making the Mobile Mind ShiftMaking the Mobile Mind Shift
Making the Mobile Mind Shift
 
Stop Debating, Start Measuring
Stop Debating, Start MeasuringStop Debating, Start Measuring
Stop Debating, Start Measuring
 
Mobile & The New Experience Economy (And What it Means for IT)
Mobile & The New Experience Economy  (And What it Means for IT)Mobile & The New Experience Economy  (And What it Means for IT)
Mobile & The New Experience Economy (And What it Means for IT)
 
Apps, APIs & Analytics: What "Mobile First" Really Means
Apps, APIs & Analytics: What "Mobile First" Really MeansApps, APIs & Analytics: What "Mobile First" Really Means
Apps, APIs & Analytics: What "Mobile First" Really Means
 
Codestrong 2012 keynote jonathan rende, appcelerator's vp of products
Codestrong 2012 keynote   jonathan rende, appcelerator's vp of productsCodestrong 2012 keynote   jonathan rende, appcelerator's vp of products
Codestrong 2012 keynote jonathan rende, appcelerator's vp of products
 
Codestrong 2012 keynote jeff haynie, appcelerator's ceo
Codestrong 2012 keynote   jeff haynie, appcelerator's ceoCodestrong 2012 keynote   jeff haynie, appcelerator's ceo
Codestrong 2012 keynote jeff haynie, appcelerator's ceo
 
Codestrong 2012 keynote how to build a top ten app
Codestrong 2012 keynote   how to build a top ten appCodestrong 2012 keynote   how to build a top ten app
Codestrong 2012 keynote how to build a top ten app
 
Codestrong 2012 breakout session what's new in titanium studio
Codestrong 2012 breakout session   what's new in titanium studioCodestrong 2012 breakout session   what's new in titanium studio
Codestrong 2012 breakout session what's new in titanium studio
 
Codestrong 2012 breakout session using appcelerator cloud services in your ...
Codestrong 2012 breakout session   using appcelerator cloud services in your ...Codestrong 2012 breakout session   using appcelerator cloud services in your ...
Codestrong 2012 breakout session using appcelerator cloud services in your ...
 
Codestrong 2012 breakout session the role of cloud services in your next ge...
Codestrong 2012 breakout session   the role of cloud services in your next ge...Codestrong 2012 breakout session   the role of cloud services in your next ge...
Codestrong 2012 breakout session the role of cloud services in your next ge...
 
Codestrong 2012 breakout session new device platform support for titanium
Codestrong 2012 breakout session   new device platform support for titaniumCodestrong 2012 breakout session   new device platform support for titanium
Codestrong 2012 breakout session new device platform support for titanium
 
Codestrong 2012 breakout session mobile platform and infrastructure
Codestrong 2012 breakout session   mobile platform and infrastructureCodestrong 2012 breakout session   mobile platform and infrastructure
Codestrong 2012 breakout session mobile platform and infrastructure
 
Codestrong 2012 breakout session making money on appcelerator's marketplace
Codestrong 2012 breakout session   making money on appcelerator's marketplaceCodestrong 2012 breakout session   making money on appcelerator's marketplace
Codestrong 2012 breakout session making money on appcelerator's marketplace
 
Codestrong 2012 breakout session live multi-platform testing
Codestrong 2012 breakout session   live multi-platform testingCodestrong 2012 breakout session   live multi-platform testing
Codestrong 2012 breakout session live multi-platform testing
 
Codestrong 2012 breakout session leveraging titanium as part of your mobile...
Codestrong 2012 breakout session   leveraging titanium as part of your mobile...Codestrong 2012 breakout session   leveraging titanium as part of your mobile...
Codestrong 2012 breakout session leveraging titanium as part of your mobile...
 
Codestrong 2012 breakout session i os internals and best practices
Codestrong 2012 breakout session   i os internals and best practicesCodestrong 2012 breakout session   i os internals and best practices
Codestrong 2012 breakout session i os internals and best practices
 
Codestrong 2012 breakout session introduction to mobile web and best practices
Codestrong 2012 breakout session   introduction to mobile web and best practicesCodestrong 2012 breakout session   introduction to mobile web and best practices
Codestrong 2012 breakout session introduction to mobile web and best practices
 
Codestrong 2012 breakout session how to win bigger mobile deals
Codestrong 2012 breakout session   how to win bigger mobile dealsCodestrong 2012 breakout session   how to win bigger mobile deals
Codestrong 2012 breakout session how to win bigger mobile deals
 

Codestrong 2012 breakout session exploring the new titanium command line interface (cli)

  • 1. Exploring The New Titanium Command Line Interface Chris Barber Sr. Platform Lead Appcelerator @cb1kenobi cbarber@appcelerator.com
  • 2. About Me • Chris Barber • JavaScript Team Lead • Mobile Web, CLI • @cb1kenobi
  • 3. Why Create a New CLI? If it ain’t broke, don’t fix it
  • 4. Old School • Python 2.7.x • Poorly documented • Difficult to maintain • Inconsistent arguments • Rigid plugin system
  • 5. Building a New CLI • Python 3? Node.js? Ruby? Java+Rhino? • How comfortable are we with these technologies? • Compatible license? • What libraries are available? • XML/JSON parsing • Code minification • Image resizing
  • 6. Appc Node.js • JavaScript! • MIT License • Small size • No native dependencies • Package manager (npm) • Tons of great community modules
  • 8. First Things First • Node.js • 0.8 or newer • NPM
  • 9. Installation npm install -g titanium Note: may need to run as npm sudo
  • 11. Running The CLI chris@yojimbo:~$ titanium Titanium Command-Line Interface, version 3.0.7 Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved. Usage: titanium <command> [options] Commands: config get and set config options help displays this help screen info display development environment information login logs into the Appcelerator network logout logs out of the Appcelerator network module manages installed Titanium Modules plugin manages installed Titanium Plugins sdk manages installed Titanium SDKs setup run the setup wizard status displays session information Global Flags: --banner, --no-banner displays Titanium version banner [default: true] --colors, --no-colors use colors in the terminal [default: true] -h, --help displays help --prompt, --no-prompt prompt for missing options [default: true] -q, --quiet suppress all output -v, --version displays the current version
  • 12. Help! titanium <cmd> -h chris@yojimbo:~$ titanium help config Titanium Command-Line Interface, version 3.0.7 titanium <cmd> --help Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved. titanium help <cmd> Usage: titanium config [--remove] [--output <value>] [<key>] [<value>] Gets and sets config options. If no key is specified, then all key/values are returned. The config file is located at: /Users/chris/.titanium/config.json Config Arguments: <key> the key to get or set <value> the value to set the specified key Config Flags: -r, --remove remove the specified config key and all its descendants Config Options: -o, --output <value> output format [report, json] Global Flags: --banner, --no-banner displays Titanium version banner [default: true] --colors, --no-colors use colors in the terminal [default: true] -h, --help displays help --prompt, --no-prompt prompt for missing options [default: true] -q, --quiet suppress all output -v, --version displays the current version
  • 13. Setup Wizard Basic Setup titanium setup Advanced Setup • Initializes the CLI configuration titanium setup -a chris@yojimbo:~$ titanium setup Titanium Command-Line Interface, version 3.0.7 Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved. Enter ctrl-c at any time to quit What is your name? (this is used as the default for the "author" field in the tiapp.xml or module manifest file when creating new projects) (Chris Barber) What is your email address used for logging into the Appcelerator Network? (cbarber@appcelerator.com) What would you like as your default locale? (examples: "en", "de", "fr") (en-us) What Titanium SDK would you like to use by default? (2.1.3.GA) Path to your workspace where your projects should be created: (~/appc/workspace) Path to the Android SDK: (this is needed for building Android apps) Configuration saved
  • 14. Manual Configuration Get All Values titanium config Get All User.* • Get and set config settings Settings titanium config user Set Android SDK Path chris@yojimbo:~$ titanium config titanium config android.ndkPath = "/opt/android-ndk" android.sdkPath android.sdkPath = "" “/path/to/sdk” app.idprefix = "com.appcelerator" app.publisher = "Appcelerator" app.sdk = "2.1.3.GA" app.url = "" app.workspace = "~/appc/workspace" cli.colors = true cli.failOnWrongSDK = false cli.logLevel = "trace" cli.prompt = true cli.quiet = false ios.developerName = "Chris Barber" ios.distributionName = "Appcelerator, Inc." paths.commands = [] paths.hooks = [] paths.plugins = ["~/appc/ti.alloy"] user.email = "cbarber@appcelerator.com" user.locale = "en-us" user.name = "Chris Barber"
  • 15. Authentication Logging In chris@yojimbo:~$ titanium login titanium login Titanium Command-Line Interface, version 3.0.7 <username> Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved. Am I Logged In? Username: (cbarber@appcelerator.com) titanium status Password: Logging out Logged in successfully titanium logout chris@yojimbo:~$ titanium status Titanium Command-Line Interface, version 3.0.7 Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved. You are currently logged in as cbarber@appcelerator.com chris@yojimbo:~$ titanium logout Titanium Command-Line Interface, version 3.0.7 Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved. Logged out successfully • Required for most commands • Adds your app to my.appcelerator.com • Username is your e-mail address
  • 16. System Info chris@yojimbo:~$ titanium info Includes: Titanium Command-Line Interface, version 3.0.7 • OS info Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved. Operating System • node.js & npm Name Version = Mac OS X = 10.8.2 • Xcode versions Memory = 16.0GB • iOS SDKs & node.js node.js Version = v0.8.12 npm Version = 1.1.63 simulators • iOS provisioning Xcode 4.4.1 (build 4F1003) Install Location = /Applications/Xcode44.app/Contents/Developer profiles & iOS SDKs iOS Simulators = 5.1 = 5.0, 5.1 keychains 4.5 (build 4G182) Install Location = /Applications/Xcode45.app/Contents/Developer • Titanium SDKs iOS SDKs iOS Simulators = 6.0 = 5.0, 5.1, 6.0 • Android SDKs, iOS Certificates Development = Chris Barber (XXXXXXXXXX) addons, and AVDs Distribution = Appcelerator, Inc. Apple WWDR = installed Development iOS Provisioning Profiles Get All Info My Provisioning Profile UUID = XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX titanium info App Prefix App Id = XXXXXXXXXX = com.appcelerator.* iOS Keychains System Default = System Default OS Info Only login.keychain = /Users/chris/Library/Keychains/login.keychain Microsoft_Intermediate_Certificates = /Users/chris/Library/Keychains/Microsoft_Intermediate_Certificates titanium info -t os System.keychain = /Library/Keychains/System.keychain Titanium SDKs 2.1.3.GA iOS Info Only Install Location Platforms = /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/2.1.3.GA = android, iphone, mobileweb git Hash = unknown titanium info -t ios git Timestamp = unknown Android Platforms android-8 Android & Node.js Name API Level = Android 2.2 =8 Info Only Revision Skins =3 = HVGA, QVGA, WQVGA400, WQVGA432, WVGA800 (default), WVGA854 titanium info -t ABIs Path = armeabi = /opt/android-sdk/platforms/android-8 android,nodejs Android Add-ons Google Inc.:Google APIs:8 Name = Google APIs Vendor = Google Inc. Output as JSON Revision Description =2 = Android + Google APIs titanium info -o json Skins ABIs = WVGA854, WQVGA400, HVGA, WQVGA432, WVGA800 (default), QVGA = armeabi Path = /opt/android-sdk/add-ons/addon-google_apis-google-10 Based On = Android 2.2 (API level 8) Libraries = com.google.android.maps: API for Google Maps (maps.jar)
  • 17. Modules & Plugins Get Installed Modules chris@yojimbo:~$ titanium module Titanium Command-Line Interface, version 3.0.7 titanium module Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved. Global Modules Get Installed Modules Including a Project Android ti.cloudpush titanium module 2.0.5 /Users/chris/Library/Application Support/Titanium/modules/android/ti.cloudpush/2.0.5 –project-dir 2.0.7 /Users/chris/Library/Application Support/Titanium/modules/android/ti.cloudpush/2.0.7 /path/to/project CommonJS ti.cloud 2.1.0 /Users/chris/Library/Application Support/Titanium/modules/commonjs/ti.cloud/2.1.0 Get Installed Plugins 2.2.0 /Users/chris/Library/Application Support/Titanium/modules/commonjs/ti.cloud/2.2.0 2.3.0 /Users/chris/Library/Application Support/Titanium/modules/commonjs/ti.cloud/2.3.0 titanium plugin 2.0.5 /Library/Application Support/Titanium/modules/commonjs/ti.cloud/2.0.5 iPhone Output as JSON ti.jira 1.0 /Users/chris/Library/Application Support/Titanium/modules/iphone/ti.jira/1.0 titanium plugin -o json Mobile Web ti.oldmodule 0.1 /Users/chris/Library/Application Support/Titanium/modules/mobileweb/ti.oldmodule/0.1 chris@yojimbo:~$ titanium plugin Titanium Command-Line Interface, version 3.0.7 Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved. User Path Plugins No project plugins found Global Plugins another_plugin 1.0 /Users/chris/Library/Application Support/Titanium/plugins/another_plugin/1.0 test_plugin 1.0 /Users/chris/Library/Application Support/Titanium/plugins/test_plugin/1.0 ti.alloy 1.0 /Users/chris/Library/Application Support/Titanium/plugins/ti.alloy/1.0
  • 18. Wait! Where’s the create and build commands?
  • 19. Downloading An SDK List Intalled SDKs chris@yojimbo:~$ titanium sdk titanium sdk Titanium Command-Line Interface, version 3.0.7 Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved. Install Latest 3.0 titanium sdk install Installed SDKs: --branch 3_0_X 2.1.3.GA [default] /Users/chris/Library/ApplicationSupport/Titanium/mobilesdk/osx/2.1.3.GA --default 2.1.2.GA /Users/chris/Library/ApplicationSupport/Titanium/mobilesdk/osx/2.1.2.GA 2.1.0.GA /Users/chris/Library/ApplicationSupport/Titanium/mobilesdk/osx/2.1.0.GA Install Latest Stable 2.0.2.GA /Users/chris/Library/ApplicationSupport/Titanium/mobilesdk/osx/2.0.2.GA titanium sdk install chris@yojimbo:~$ titanium sdk install --branch 3_0_X --default Install Latest Stable & Titanium Command-Line Interface, version 3.0.7 Set as Default SDK Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved. titanium sdk install --default Downloading http://builds.appcelerator.com.s3.amazonaws.com/mobile/3_0_X/mobilesdk- 3.0.0.v20121018214614-osx.zip Install Bleeding Edge 100% [=================================================================] 0.0s titanium sdk install --branch master Extracting SDK... Saving SDK 3.0.0.v20121018214614 as the default. Titanium SDK 3.0.0.v20121018214614 successfully installed!
  • 20. New Commands! chris@yojimbo:~$ titanium Titanium Command-Line Interface, version 3.0.7 Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved. Usage: titanium <command> [options] Commands: build builds a project clean removes previous build directories config get and set config options create creates a new mobile application or module help displays this help screen info display development environment information login logs into the Appcelerator network logout logs out of the Appcelerator network module manages installed Titanium Modules plugin manages installed Titanium Plugins project get and set tiapp.xml settings sdk manages installed Titanium SDKs setup run the setup wizard status displays session information Global Flags: --banner, --no-banner displays Titanium version banner [default: true] --colors, --no-colors use colors in the terminal [default: true] -h, --help displays help --prompt, --no-prompt prompt for missing options [default: true] -q, --quiet suppress all output -v, --version displays the current version
  • 22. Creating a Project Create a Project chris@yojimbo:~$ titanium create Titanium Command-Line Interface, version 3.0.7 titanium create Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved. Target platforms: (android,ios,ipad,iphone,mobileweb) Create Project With App ID: com.appcelerator.myapp All Arguments Project name: myapp titanium sdk create [INFO] Creating Titanium Mobile application project [DEBUG] Copying /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121018214614/android/templates/app/default => --id com.appc.myapp /Users/chris/myapp --name myapp [DEBUG] Copying /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121018214614/android/templates/app/default/Resources => /Users/chris/myapp/Resources --platforms [DEBUG] Copying /Users/chris/Library/Application android,iphone,ipad, Support/Titanium/mobilesdk/osx/3.0.0.v20121018214614/android/templates/app/default/Resources/android => /Users/chris/myapp/Resources/android [DEBUG] Copying /Users/chris/Library/Application mobileweb Support/Titanium/mobilesdk/osx/3.0.0.v20121018214614/android/templates/app/default/Resources/android/images => --workspace-dir /Users/chris/myapp/Resources/android/images [DEBUG] Copying /Users/chris/Library/Application /path/to/workspace Support/Titanium/mobilesdk/osx/3.0.0.v20121018214614/android/templates/app/default/Resources/android/images/res-long-land-hdpi => /Users/chris/myapp/Resources/android/images/res-long-land-hdpi [DEBUG] Copying /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121018214614/android/templates/app/default/Resources/android/images/res-long-land-ldpi => /Users/chris/myapp/Resources/android/images/res-long-land-ldpi [DEBUG] Copying /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121018214614/android/templates/app/default/Resources/android/images/res-long-port-hdpi => /Users/chris/myapp/Resources/android/images/res-long-port-hdpi [DEBUG] Copying /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121018214614/android/templates/app/default/Resources/android/images/res-long-port-ldpi => /Users/chris/myapp/Resources/android/images/res-long-port-ldpi [DEBUG] Copying /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121018214614/android/templates/app/default/Resources/android/images/res-notlong-land-hdpi => /Users/chris/myapp/Resources/android/images/res-notlong-land-hdpi [DEBUG] Copying /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121018214614/android/templates/app/default/Resources/android/images/res-notlong-land-ldpi => /Users/chris/myapp/Resources/android/images/res-notlong-land-ldpi [DEBUG] Copying /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121018214614/android/templates/app/default/Resources/android/images/res-notlong-land-mdpi => /Users/chris/myapp/Resources/android/images/res-notlong-land-mdpi [DEBUG] Copying /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121018214614/android/templates/app/default/Resources/android/images/res-notlong-port-hdpi => /Users/chris/myapp/Resources/android/images/res-notlong-port-hdpi [DEBUG] Copying /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121018214614/android/templates/app/default/Resources/android/images/res-notlong-port-ldpi => /Users/chris/myapp/Resources/android/images/res-notlong-port-ldpi [DEBUG] Copying /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121018214614/android/templates/app/default/Resources/android/images/res-notlong-port-mdpi => /Users/chris/myapp/Resources/android/images/res-notlong-port-mdpi [INFO] Project 'myapp' created successfully in 32ms
  • 23. Getting Project Info Basic Info titanium project Copy Platform • Tool for interacting with the tiapp.xml Resource Files titanium project --deployment-targets chris@yojimbo:~/myapp$ titanium project android,ios,mobileweb Titanium Command-Line Interface, version 3.0.7 Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved. Deployment Targets: android = true ipad = false iphone = true mobileweb = true Project Properties: sdk-version = 3.0.0 id = com.appcelerator.myapp name = myapp version = 1.0 publisher = not specified url = not specified description = not specified copyright = not specified icon = appicon.png analytics = true guid = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  • 24. Building a Project Platforms: chris@yojimbo:~/myapp$ titanium build --platform ios • iOS Titanium Command-Line Interface, version 3.0.6 • Mobile Web Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved. • Android [DEBUG] No project level plugins to load [DEBUG] Loaded plugin hooks: Special Hooks: [DEBUG] /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.1.0/cli/hooks/plugins.js • Run in Simulator [DEBUG] /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.1.0/iphone/cli/hooks/install.js • Install on Device [DEBUG] /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.1.0/iphone/cli/hooks/package.js [DEBUG] /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.1.0/iphone/cli/hooks/run.js • Package for [INFO] Build type: development Distribution [DEBUG] Titanium iOS SDK directory: /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.1.0/iphone [INFO] Building for target: simulator [INFO] Building using iOS SDK: 6.0 [INFO] Building for iOS Simulator: 6.0 [INFO] Building for device family: universal [DEBUG] Setting Xcode target to Debug [DEBUG] Setting Xcode build OS to iphonesimulator6.0 [DEBUG] Xcode installation: /Applications/Xcode45.app/Contents/Developer [DEBUG] iOS WWDR certificate: installed [INFO] Building for iOS 6.0; using 4.3 as minimum iOS version [DEBUG] Minimum iOS version: 4.3 [INFO] Debugging disabled [DEBUG] Building for the following architectures: armv7 armv7s i386 [DEBUG] Forcing rebuild: githash changed since last build [DEBUG] Was: a50c927 [DEBUG] Now: ab2b280 [INFO] Cleaning old build directory [DEBUG] Would be firing "compile" legacy plugin hook if it was supported [INFO] Building Info.plist [INFO] No Titanium Modules required, continuing [INFO] Performing full rebuild [INFO] Copying Xcode iOS files ...
  • 25. Cleaning the Project Nuke All Platform Build Directories titanium clean • Completely removes the platform specific build Nuke a Specific Platform’s Build directories Directory titanium clean –platform android chris@yojimbo:~/myapp$ titanium clean Titanium Command-Line Interface, version 3.0.6 Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved. [INFO] Project cleaned successfully in 1ms
  • 26. Extending the CLI Plugins, commands, and hooks
  • 27. Plugins • Similar to Titanium Modules • Legacy plugin.py not supported today • CLI commands & hooks • Installed globally or in project directory • Enabled via the tiapp.xml <plugins>
  • 28. Sample Command myplugin/1.0/cli/commands/magic.js exports.cliVersion = '>=3.X'; exports.desc = 'does magical things’; exports.config = function (logger, config, cli) { return { flags: { extra: { abbr: 'e', desc: 'adds more magic’ } } }; }; exports.validate = function (logger, config, cli) { // nothing to validate }; exports.run = function (logger, config, cli) { var s = 'doing magical stuff!'; if (cli.argv.extra) { s = s.replace(/./g, function (c, i) { return i % 2 == 0 ? c.toUpperCase() : c.toLowerCase(); }); } logger.log(s); };
  • 29. Sample Hook myplugin/1.0/cli/hooks/buildhook.js exports.cliVersion = '>=3.X'; exports.init = function (logger, config, cli) { cli.addHook('build.pre.compile', function (data, finished) { logger.log('modifying some code before build starts'); finished(); }); cli.addHook('build.post.compile', { priority: 900, post: function (data, finished) { logger.log('packaging some extra files after the build'); finished(); } }); cli.addHook('build.finalize', function (data, finished) { logger.log('cleaning up my mess'); finished(); }); };
  • 30. Demo Kick the tires & light the fires
  • 32. // TODO: • More plugin hooks • Project exporting & migration tools • Better support for multiple Titanium SDKs • What would you like to see?
  • 33. Summary Just in case you were sleeping
  • 34. The New CLI Rocks • Easy to install, easy to use • Fast as shit • Built-in documentation • Extensible plugin architecture • Consistent arguments • Argument prompting • Internationalization • Colors!
  • 35. Get It Today! npm install -g titanium titanium sdk install --branch 3_0_X --default Note: may need to run npm as sudo
  • 36. Chris Barber @cb1kenobi cbarber@appcelerator.com

Editor's Notes

  1. Just like ti studio