Appcelerator Blog

The Leading Resource for All Things Mobile

Introducing Titanium Mobile 1.4

0 Flares 0 Flares ×

OK, so this release took way longer than we all anticipated. We tried our best working days and nights and weekends to make it faster, but sometimes this stuff just takes longer than you’d like. In our case, we ran into a lot of major issues with iOS4 and between the various devices, versions and permutations. There’s quite a bit of more work we intend to do starting tomorrow for 1.5 but we feel like this release is much improved over the 1.3.2 drop we did 2 weeks ago.

Thanks for everyone’s patience and assistance during this time. We fixed well over 200 reported bugs as well as worked through many many more we found in our own testing. There’s a lot of great improvements in this release and a few new things. The full release notes can be found on the documentation page for the release.

Next up is 1.5. We’ll be publishing more information about the next release once we’ve had some time to rest, review with the engineering, support and QA teams and write it all up.

We also have a bunch of new high quality documentation that will roll out soon, thanks to two of our newest members of our official Training team we added awhile back. We hope to have more information about that very soon. Stay tuned!

UPDATE (7/27 10:30PM ):

There’s a logging issue that Apple introduced with 4.0.1 that affects logging while running your app in the simulator.

You can get the hot patch for this by downloading this file (name it logger.py). Drop this into your /Library/Application Support/Titanium/mobilesdk/osx/1.4.0/iphone directory. Make sure that you chmod a+x the logger.py file to make it executable. No need to restart Titanium Developer. Just re-launch your app in the simulator.

0 Flares Twitter 0 Facebook 0 Google+ 0 LinkedIn 0 Email -- 0 Flares ×

49 Comments

  1. great to see it released.
    keep up the great work.

    rocksteady,
    danno~

  2. Thanks for putting all this hard work into 1.4 … really exited to try it now. You guys rock!

  3. JiPiBoily

    Great news ! Thanks for all your hard work !

  4. Trong Dinh

    I cannot package my project when choosing sdk 1.4 or 1.3. The error message “Packaging error” appears (very disappointed). Anyway, thanks for your hard work.

  5. John

    Thank you Appcelerator Team, for working so hard on this release. I’m sure it’s worth the wait. Titanium DOES rock!

  6. jhill

    Time to celebrate. You guys deserve it!

  7. There is no Hallmark card to say how much we appreciate the dedication and hard work from the Appcelerator team! Keep up the great work!

  8. Congratulations!

    Except it seems that logging is still broken (API.info/debug/error/etc).

    Your API docs aren’t up to date, so I can’t see how to use Geolocation.purpose (it appears to do nothing for my app).

    Table rows don’t render at all anymore either.

    Did I get some bum build?

    • @Paul – yeah, looks like our push of docs didn’t pick up the Geo change. We’ll address that tomorrow. We’ve also had a few people report logging issues but we can’t (yet) reproduce it as it’s working with us fine. On the table rows, we’ve got many unit tests around that so most likely it could be something that got fixed and maybe broke something on your end or something weird like that. can you pastie some sample code we can test on our end?

  9. @Trong – if you look under build/iphone/build/build.log – there should be a error in that file that explains why packaging failed. You can either post the pastie to that or open Helpdesk issue.

  10. Started a new iPad project and only put an info log in app.js

    Output from debug log doesn’t show the message I expected:

    [INFO] iPhone SDK version: 4.0
    [DEBUG] executing command: /usr/bin/killall iPhone Simulator
    [DEBUG] No matching processes belonging to you were found
    [DEBUG] finding old log files
    [DEBUG] executing command: mdfind -onlyin /Users/paularms/Library/Application Support/iPhone Simulator/4.0 -name 417046da-cd7c-4c5f-bbd5-c789a424b466.log
    [INFO] Launching application in Simulator
    [DEBUG] App Spec: specified by path /Users/paularms/Documents/Projects/cubiclewindow/CubicleWindow/build/iphone/build/Debug-iphonesimulator/CubicleWindow.app
    [DEBUG] SDK Root: path=/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.0.sdk version=4.0 name=Simulator – iPhone OS 4.0
    [DEBUG] using device family ipad
    [INFO] Launched application in Simulator (3.51 seconds)
    [DEBUG] Session started
    [DEBUG] executing command: xcodebuild -version
    [DEBUG] Xcode 3.2.3
    [DEBUG] Component versions: DevToolsCore-1691.0; DevToolsSupport-1591.0
    [DEBUG] BuildVersion: 10M2262

  11. As for tables, it appears rows can’t have anything added to them anymore:

    The following will just give me a single row with nothing in it. In the previous version, it would render the label correctly into the row.
    ~~~
    var thewindow = Ti.UI.createWindow({});

    var table = Ti.UI.createTableView({
    height: 44
    });

    var row_label = Ti.UI.createLabel({
    text: ‘Foobar’
    });
    var row = Ti.UI.createTableViewRow({});
    row.add(row_label);
    table.appendRow(row);
    thewindow.add(table);
    thewindow.open();
    ~~~

  12. @paul, I just figured out the problem.

    Apple’s update for 4.0.1 seems to break their normal versioning. Everywhere for 4.0.1 reports 4.0 but for logging they now use 4.0.1. I should have a patch you can apply here in a few minutes once I can figure out how to determine if you’ve got the patch applied.

  13. For your table row, you have no “height” or “width” on your label. You’ll need to set them to “auto” if you want them to automatically use the sized width of the text. This was an error in an earlier release and I guess when we fixed this it broke any apps that incorrectly assumed auto. The assumption for positioning constraints in undefined – which in certain components would position in the “middle”. Sorry ’bout that.

  14. Thanks for the hard work, I’ll try it out soon.

  15. Here’s the hot patch for simulator logging issues specific to 4.0.1 SDK update.

    http://gist.github.com/493477

    You can drop this logger.py file into

    /Library/Application Support/Titanium/mobilesdk/osx/1.4.0/iphone

    directory. No need to restart Titanium Developer. Simply restart your application.

  16. Greg Munro

    Well done guys.
    Really glad to see you got to the bottom of the iPhone logging issue….Now go and get some much deserved sleep and dream up some more really cool ideas….

  17. Umm… sorry if this is a dumb question, but this is my first SDK upgrade.

    How does one go about upgrading to 1.4?

    I downloaded the 1.4 stuff from GitHub, and put the contents in /Library/Application Support/Titanium/mobilesdk/osx/1.4.0/

    Is that all there is to it?

    • @Clifton. Titanium Developer will automatically notify you and upgrade for you. If you look up in the top right hand window, there should be a notice and link you can click on. It only periodically checks, so if you want to force it you can restart Titanium Developer. Otherwise, you could build from github and just install the zip directly, too by extracting into /Library/Application Support/Titanium and restarting developer.

  18. Alan Bourke

    Thanks to all concerned for your hard work, it is much appreciated even though sometimes all you hear is people moaning!

  19. Lukasz

    @Jeff – I’ve copy the logging patch, but the problem still remains, no log messages in Titanium Developer (Mobile SDK 1.4.0, iOS 4.0.1, KitchenSink from source).

  20. Trong Dinh

    @Jeff. Here is the error message in build.log file

    ** BUILD FAILED **

    The following build commands failed:
    Test:
    PhaseScriptExecution Pre-Compile /omnirepos/Test/build/iphone/build/Test.build/Release-iphoneos/Test.build/Script-241EAF36118E30260081A5BE.sh
    (1 failure)

    EXIT CODE WAS: 1

    Exception detected in script:
    Traceback (most recent call last):
    File “/Library/Application Support/Titanium/mobilesdk/osx/1.4.0/iphone/builder.py”, line 1015, in main
    execute_xcode(“iphoneos%s” % iphone_version,args,False)
    File “/Library/Application Support/Titanium/mobilesdk/osx/1.4.0/iphone/builder.py”, line 758, in execute_xcode
    output = run.run(args,False,False,o)
    File “/Library/Application Support/Titanium/mobilesdk/osx/1.4.0/iphone/run.py”, line 31, in run
    sys.exit(rc)
    SystemExit: 1

    And I see that sdk 1.4 doesn’t have swipe event. Is it removed in sdk 1.4?

  21. Clem

    Hi there, thanks for this big effort to get 1.4 out !

    I got an error on a completly blank project (created before 1.4)

    ** BUILD FAILED **

    The following build commands failed:
    blank:
    CompileC build/blank.build/Debug-iphonesimulator/blank.build/Objects-normal/i386/TiMapView.o “/Users/bgp/Mobile Dev/Titanium/blank/build/iphone/Classes/TiMapView.m” normal i386 objective-c com.apple.compilers.gcc.4_0
    (1 failure)

    EXIT CODE WAS: 1

    Exception detected in script:
    Traceback (most recent call last):
    File “/Library/Application Support/Titanium/mobilesdk/osx/1.4.0/iphone/builder.py”, line 836, in main
    execute_xcode(“iphonesimulator%s” % iphone_version,[“GCC_PREPROCESSOR_DEFINITIONS=__LOG__ID__=%s DEPLOYTYPE=development TI_DEVELOPMENT=1 DEBUG=1 TI_VERSION=%s” % (log_id,sdk_version)],False)
    File “/Library/Application Support/Titanium/mobilesdk/osx/1.4.0/iphone/builder.py”, line 758, in execute_xcode
    output = run.run(args,False,False,o)
    File “/Library/Application Support/Titanium/mobilesdk/osx/1.4.0/iphone/run.py”, line 31, in run
    sys.exit(rc)
    SystemExit: 1

    Tell me if you need more details 😉

    Have a good day guys

  22. Lukas Oberhuber

    I haven’t had logging working for some time (at least since 4.0.1, but possibly earlier).

    In terms of this patch, it looks like the code in builder.py is also going for the simulator in the 4.0 directory, and I don’t see any of the print statements in logger.py appear in the console, let alone the log from the application (I’ve put in the hot patch). So the subprocess.POpen is called on logger.py (and looks like the right one is called), but then I can’t find the actually logger.py running (don’t know squat about python.

    So far I’ve been looking at the log in Console, since it seemed to be popping up there, but even that doesn’t seem to be happening right now. Very frustrating.

  23. Lukas Oberhuber

    Sorry, still investigating, but this log comment from builder.py:

    [DEBUG] executing command: mdfind -onlyin /Users/lukas/Library/Application Support/iPhone Simulator/4.0 -name edf1a787-e9e2-469b-8183-366ef6d92f79.log

    when in reality, the log is in the 4.0.1 directory:

    mdfind -onlyin /Users/lukas/Library/Application Support/iPhone Simulator/ -name edf1a787-e9e2-469b-8183-366ef6d92f79.log
    /Users/lukas/Library/Application Support/iPhone Simulator/4.0.1/Applications/B89F7020-4D55-4DA5-9D2C-018249B2017B/Documents/edf1a787-e9e2-469b-8183-366ef6d92f79.log

  24. Lukas Oberhuber

    OK, the fix works!, but!!!!

    I ended up setting the permissions on logger.py incorrectly, which was causing execution of the logger to fail. No error whatsoever is reported.

    After putting logger.py in place, you need to execute:

    chmod +x logger.py

    Also, the cleanup of old log files in builder.py needs to be patched as well.

  25. John Lullie

    Installed the 1.4 update, with the latest iOS 4.01 SDK. Tested all 4 of our Apps in the simulator and the device. Happy to report they are all running great!

    Thanks again for the hard work guys!

  26. Matt

    Thanks @Lukas Oberhuber.. that was what I’ve been trying to sort out for the last hour!

  27. Curtis

    iphone contacts still not working in 1.4. This has been a problem for several releases now, but the contact picker is broken.

    Kitchen Sink displays “[ERROR] Script Error = Result of expression ‘contacts’ [null] is not an object. at contacts.js (line 10).” Kitchen Sink is failing on this call “Titanium.Contacts.getAllContacts();” My app is failing on “Titanium.Contacts.showContactPicker()”.

    This has been a problem since at least 1.3.2 and I reported it when the 1.3.3 beta was released. I’ll investigate further and report anything I find. I’d hope bugs that break existing functionality would be high priority.

  28. Kai Pradel

    Lukas,
    thanks for the tip. Changing permissions resolved the logging issue for me.

    Kai

  29. Great work getting this out. While we can’t complain about a free product, it’s unfortunate that there is quite a large gap growing between the actual iOS API and the Titanium iPhone API. I’m not sure if it’s going to tip the scale for me yet, as Titanium makes development quite a bit easier for me personally, but the lag in features available can make or break some companies, or ideas. All the same, keep up the good work, but wanted to share my feelings on the state of Titanium for iPhone.

  30. Daniel

    Jeff,

    Https post is broken on 1.4. Any chances on a fix quick? Thanks

    Reports are rolling in here.
    http://developer.appcelerator.com/question/47241/httpclient-broken-in-14#92151

  31. I was able to install 1.4 no problem, and my app ran just fine. Unfortunately it doesn’t seem like your 200 fixes included the TableView performance bug. It still takes 12 seconds for my TableView to draw 64 rows on my iPhone 3GS. Each row just has 2 different Titanium.UI.Label objects. I know I’m not the only one who was noticing this. Is it on your radar? This fix was what I was hoping for in 1.4.

  32. Stephen Tramer

    Curtis, if you could please provide more information on your problem either via a bug report on our Lighthouse page, or send me an email directly with your sample code that you’re using (including information about how many contacts are stored on the device) I can look into your problem. Contacts has not been an issue in testing for us.

  33. Siva

    Congratulations Titanium team for the release.

    Thanks @Lukas Oberhuber for finding the permissions issue.

    @Jeff, it might be handy if you can update the blog to alert the user to give execute permissions for logging.py file.

  34. @Daniel – is this for android or iphone? we’re definitely not seeing any HTTPS issues. Can you give more details and example? are you using self-signed cert, etc.

    @Andrew – we made quite a number of performance improvements around table views. and our tests load much faster with many more elements and rows so probably something app specific. can you pastie some example of what you’re doing? are you using classNames on your rows?

  35. Bryan Jackson

    Jeff,

    There is a thread on the QA on HTTPS being broken. This broke in a fairly recent build as we were using the nightly from a week or two ago with no issue. URL formats like this: https://username:password@api.lafitness.com will fail 100% of the time. Take out https and just go with http and it works fine. Our cert is not self signed.

  36. @Bryan – thanks, we’ll looking this. this appears related to a fix for UTF-8 character escaping that was fixed in URLs but breaks this case above. I’ll open an issue and we’ll have that fixed soon. Thanks.

  37. Vasil

    Are you sure that this is the final 1.4?

    Apps that worked fine for 1.3.2 (and even some nightlies prior 1.4) worked just fine. Now they have tons of UI problems (scrolls do not work properly, some buttons too, activity indicator gets jammed) not to mention sockets on iPhone and stuff I haven’t yet tested.

    My question is, if there is going to be another update soon I would not bother trying to work around the issues. Otherwise I might have to.

    Thanks,
    Vasil

  38. José Luna

    Jeff, after i copy logger.py into users/luna/Library/Application Support/Titanium/mobilesdk/osx/1.4.0/iphone, restart Titanium and launch app in simulator, the stop button in console not have effect. I can’t stop de app from Titanium. I use iOS SDK 4.0.1 and SDK 1.4. Thanks.

  39. Kelly Redd

    Went to add the logging hot patch and found that i don’t have a /mobilesdk/osx/1.4.0 folder. i’m up-to-date on everything and the Ti 1.4 sdk is running fine. can’t figure out what i’m missing. can i just create this folder? thx!

  40. Daniel

    Jeff,

    Mine is Twitter Xauth posting implemented from Q&A link below, it looks like the end never received any post data. It’s working fine reversed back to 1.3.2/1.3.3 (early built) with iOS 4.01., just not with 1.4. I have validated all post data were there before sending.

    Thanks for looking into it. :)

    http://developer.appcelerator.com/question/4581/custom-module

  41. jd

    I agreed with Daniel posts, HTTPClient in 1.4 is broken…failed completely. Reversed back to 1.3.2 or 1.3.3 work perfectly.

  42. John Oakley

    I have just done a clean install of Titanium Developer with 1.4 sdk. I also added the logger fix AND chgmod +x logger.py.

    A clean new project ( with nothing added after create) runs fine.

    I then downloaded kitchensink, imported it and tried to build. It failed with the following in the log. It looks like build.py is looking in the wrong place.
    =====
    build.log:
    …….

    Performing clean build…

    Exception detected in script:
    Traceback (most recent call last):
    File “/Users/johnoakley/Library/Application Support/Titanium/mobilesdk/osx/1.4.0/iphone/builder.py”, line 835, in main
    shutil.copy(os.path.join(template_dir,’Classes’,’defines.h’),os.path.join(iphone_dir,’Classes’,’defines.h’))
    File “/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/shutil.py”, line 88, in copy
    copyfile(src, dst)
    File “/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/shutil.py”, line 53, in copyfile
    fdst = open(dst, ‘wb’)
    IOError: [Errno 2] No such file or directory: u’/Users/johnoakley/apps/KitchenSink/build/iphone/Classes/defines.h’

  43. John Oakley

    Ah, having scrolled right to the bottom of https://developer.appcelerator.com/doc/kitchensink?mkt_tok=3RkMMJWWfF9wsRonuqnJZKXonjHpfsX54%2BUkXaKg38431UFwdcjKPmjr1YcGSdQhcOuuEwcWGog8wRxIGeWZeZJB7vpP

    I see that this is not unexpected and there is a (working!) workaround. You might want to put that workaround above the fold as we hackers are notorious for not scrolling :-(

  44. Curtis

    Stephen,
    Contacts are working properly. I had old syntax in Titanium.Contacts.showContactsPicker() instead of Titanium.Contacts.showContacts(). I think that must have changed from 1.3.2 go 1.3.3. Not sure how I missed that or if it were in the release notes. I know I saw more than a few developers thinking it was broken in new releases.

    Thanks for the reply!

    PS. When can I get some Android love for Contacts? :-)

  45. Trong Dinh

    The tableview runs very slowly. Please fix this issue fix. Thanks.

  46. Steve

    This must have been a nightmare to do, so all your hard work is appreciated…even if my next message is to moan about something :-) LOL

Comments are closed.

Sign up for updates!

Become a mobile leader. Take the first step to scale mobile innovation throughout your enterprise.
Get in touch
computer and tablet showing Appcelerator software
Start free, grow from there.
0 Flares Twitter 0 Facebook 0 Google+ 0 LinkedIn 0 Email -- 0 Flares ×