Titanium JIRA Archive
Titanium SDK/CLI (TIMOB)

[TIMOB-8653] Tooling: Separate SDK from the Platform

GitHub Issuen/a
TypeSub-task
PriorityHigh
StatusClosed
ResolutionFixed
Resolution Date2012-05-08T10:29:43.000+0000
Affected Version/sRelease 2.1.0
Fix Version/sn/a
ComponentsTooling
Labelscore, look1
ReporterMarshall Culpepper
AssigneeBill Dawson
Created2012-04-10T14:10:10.000+0000
Updated2017-03-16T22:06:13.000+0000

Description

This task comprises a few high level tasks: * The SDK should live as it's own standalone component, with it's own git repository * The SDK and Platform should be able to have their own release cycles, and the SDK should be able to work with multiple versions of the Platform

Comments

  1. Bill Dawson 2012-05-01

    The titanium_mobile PR is: https://github.com/appcelerator/titanium_mobile/pull/2111 The PR for the new repository (titanium_mobile_tooling) is: https://github.com/appcelerator/titanium_mobile_tooling/pull/1 Some prelim notes: * You can't use Titanium Studio for testing, which is why the testing notes have the commands spelled out for you. (This is good, since you're anyway meant to test the commands, and it's easier to see output/errors from Terminal.) * We should have one person test for Android, one for iPhone, one for MobileWeb.

    Testing Instructions

    Builds

    Build/Release titanium_mobile

    * With the new branch, run scons. There should be no errors, and the ZIP file should appear under dist/. * "Release" this new build however you normally do that on your dev machine, i.e., unzip the zip somewhere.

    Build/Release titanium_mobile_tooling.

    * Run ./build.py. There should be no errors and the file dist/mobiletools-osx-2.1.0.zip should appear. * Release this zip such that the path mobiletools/osx/2.1.0 lives side-by-side with mobilesdk/osx/2.1.0. The point is, these two components -- the SDK and the Tooling -- are siblings in the Titanium/ hierarchy. If you, like many of us devs, use symbolic links for your dev versions of the sdk, you can now do something similar with the tooling as well. For example, my /Library/Application Support/Titanium/mobilesdk/osx/DEV_2.1.X points to /Users/bill/src/titanium_mobile/dist/mobilesdk/osx/2.1.0 and my /Library/Application Support/Titanium/mobiletools/osx/DEV_2.1.X. In summary, do it however you wish, but these two components should somehow be siblings.

    Create projects

    Create an iPhone project.

    * In Terminal, use the tooling's project.py to create an iphone-only project. Example:
       python "/Library/Application Support/Titanium/mobiletools/osx/DEV_2.1.X/scripts/common/project.py" "JustIPhone" "com.billdawson.justiphone" "/Users/bill/projects/ti" "/Library/Application Support/Titanium/mobilesdk/osx/DEV_2.1.X" "iphone"
       
    * Note that the second-to-last argument is the path to the _mobile sdk_. * The project should be created without error.

    Create an Android project.

    * In Terminal, use the tooling's project.py to create an android-only project. Example:
       python "/Library/Application Support/Titanium/mobiletools/osx/DEV_2.1.X/scripts/common/project.py" "JustAndroid" "com.billdawson.justandroid" "/Users/bill/projects/ti" "/Library/Application Support/Titanium/mobilesdk/osx/DEV_2.1.X" "android" "/Users/bill/android/android-sdk-macosx"
       
    * Note that the second-to-last argument is the path to the _mobile sdk_. * Note that the last argument is the path to the _android sdk_. * The project should be created without error.

    Create a MobileWeb project.

    * In Terminal, use the tooling's project.py to create a mobileweb-only project. Example:
       python "/Library/Application Support/Titanium/mobiletools/osx/DEV_2.1.X/scripts/common/project.py" "JustMobileWeb" "com.billdawson.justmobileweb" "/Users/bill/projects/ti" "/Library/Application Support/Titanium/mobilesdk/osx/DEV_2.1.X" "mobileweb"
       
    * Note that the second-to-last argument is the path to the _mobile sdk_. * The project should be created without error.

    Create a project for all three platforms.

    * In Terminal, use the tooling's project.py to create a project for three platforms. Example:
       python "/Library/Application Support/Titanium/mobiletools/osx/DEV_2.1.X/scripts/common/project.py" "AllPlatforms" "com.billdawson.allplatforms" "/Users/bill/projects/ti" "/Library/Application Support/Titanium/mobilesdk/osx/DEV_2.1.X" "android" "mobileweb" "iphone"
       
    * The project should be created without error.

    Running projects

    Run the iPhone project to simulator.

    * Use iPhone's builder.py to build and run the project on simulator. Example:
       python "/Library/Application Support/Titanium/mobiletools/osx/DEV_2.1.X/scripts/iphone/builder.py" "simulator" "5.1" "/Users/bill/projects/ti/JustIPhone" "com.billdawson.justiphone" "JustIPhone" "universal" "iphone"
       
    * The project should build without error, then open in the iPhone simulator. Note that sometimes first launch will timeout... this is the case with current tooling as well.

    Run the Android project to emulator.

    * Use Android's builder.py to both launch the emulator and release a project to emulator. (You need two Terminal windows for this!) * In the first terminal window, use builder.py to launch the emulator. Example:
       python "/Library/Application Support/Titanium/mobiletools/osx/DEV_2.1.X/scripts/android/builder.py" emulator JustAndroid /Users/bill/android/android-sdk-macosx /Users/bill/projects/ti/JustAndroid com.billdawson.justandroid "5" WVGA854
       
    * After the emulator has launched (and you can see it with {adb devices}), build and launch the android project into it using builder.py in a *second Terminal window*. Example:
       python "/Library/Application Support/Titanium/mobiletools/osx/DEV_2.1.X/scripts/android/builder.py" simulator JustAndroid /Users/bill/android/android-sdk-macosx /Users/bill/projects/ti/JustAndroid com.billdawson.justandroid "5" WVGA854
       
    * The project should build without error and launch in the emulator.

    Build the MobileWeb project and view in browser.

    * Use mobileweb's builder.py to build the project. Example:
       python "/Library/Application Support/Titanium/mobiletools/osx/DEV_2.1.X/scripts/mobileweb/builder.py" "/Users/bill/projects/ti/JustMobileWeb" "development"
       
    * Open the resulting index.html in your browser. Example:
       open /Users/bill/projects/ti/JustMobileWeb/build/mobileweb/index.html
       

    Test titanium.py

    Help

    * Make sure the {help} command works without error. Example:
       python "/Library/Application Support/Titanium/mobiletools/osx/DEV_2.1.X/titanium.py" help
       

    Create an application project

    * Use titanium.py to create a new application project. Example:
       python "/Library/Application Support/Titanium/mobiletools/osx/DEV_2.1.X/titanium.py" create --type=project --name=NewProject --id=ti.newproject --dir=/Users/bill/projects/ti --platform=android,mobileweb,iphone
       
    * There should be no errors, and you should see three messages saying Created ____ application project.

    Create an iPhone module project.

    * Use titanium.py to create a new iphone module project. Example:
       python "/Library/Application Support/Titanium/mobiletools/osx/DEV_2.1.X/titanium.py" create --type=module --name=iphonemod --id=ti.iphonemod --dir=/Users/bill/projects/ti/modules --platform=iphone
       
    * You should get no errors and you should see a message that it was created. * Test the module by going into its folder and running build.py. Example:
       $ cd /Users/bill/projects/ti/modules/iphonemod
       $ ./build.py
       
    * There should be no errors.

    Create an Android module project

    * Use titanium.py to create a new android module project. Example:
       python "/Library/Application Support/Titanium/mobiletools/osx/DEV_2.1.X/titanium.py" create --type=module --name=androidmod --id=ti.anroidmod --dir=/Users/bill/projects/ti/modules --platform=android
       
    * You should get no errors and you should see a message that it was created. * Test the module by going into its folder and running ant. Example:
       $ cd /Users/bill/projects/ti/modules/androidmod
       $ ant
       
    * There should be no errors.

    Create a Plugin project.

    * Use titanium.py to create a new plugin project. Example:
       python "/Library/Application Support/Titanium/mobiletools/osx/DEV_2.1.X/titanium.py" create --type=plugin --name=myplugin --id=myplugin --dir=/Users/bill/projects/ti/plugins
       
    * You should get no errors and you should see a message that it was created. * Test the plugin by going into its folder and running ./build.py. Example:
       $ cd /Users/bill/projects/ti/plugins/myplugin
       $ ./build.py
       
    * There should be no errors.

    Run the other titanium.py commands

    I'm too tired to type them all. :) Run "help" again to see the commands, then test the ones you want too. :)
  2. Bill Dawson 2012-05-08

    Marking as Invalid since we're going to toss this out. Want to make sure QE doesn't take the time to test it.
  3. Neeraj Gupta 2012-05-08

    This is not really invalid. We need to combine the repository separation with the new node.js based CLI and tooling so this is definitely needed. We are just not going to release it to the public until CLI project is ready to be released.
  4. Bill Dawson 2012-05-08

    Right. But I think maybe in this case it's better to close this one and rely on another ticket. The testing notes might not be applicable, and the Git Commits history is enormous with changes that are not applicable any more. Although if we delete the git branches in the repositories, it could be that the git history goes away here too. I'm not sure how this work. Anyway I'll just leave it like this for now. :)
  5. Lee Morris 2017-03-16

    Closing ticket as fixed.

JSON Source