Titanium

GA Release for Titanium SDK 5.5.0, Appcelerator CLI 5.5.0, & Appcelerator Studio 4.7.1

Product Release

Today, we published GA Releases for Titanium SDK 5.5.0, Appcelerator CLI 5.5.0 and Appcelerator Studio 4.7.1.

The primary focus of this release is support for iOS 10 and Xcode 8 including:

  • iOS10: Support new CoreSpotlight APIs
  • iOS10: Support RefreshControl in Ti.UI.ScrollView
  • iOS10: Expose new Ti.UI.Pasteboard APIs
  • iOS10: Support for new WatchConnectivity features
  • iOS10: Expose new visual effects on Ti.UI.iOS.BlurView
  • iOS10: Support for searching indexed searchable items using the CSSearchQuery API
  • This release supports Apple’s Xcode from a minimum of 7.3.x to the maximum version of 8.0.x
  • Team id is now required in tiapp.xml when building an app with a watch extension and Xcode 8. Add the <team-id> to the <ios> section of your tiapp.xml:
    <ios>
        <team-id>YOUR-TEAM-ID</team-id>
    </ios>
  • Projects will set “SWIFT_VERSION” to a value of “3.0”
  • Migrated the watchOS template to adopt the new Swift 3 syntax
  • Minimum iOS SDK version is set to 8.0 by default if not explicitly set in the tiapp.xml when compiling using Xcode 8. This behavior is following the one Xcode 8 provides. However, you can still change your minimum iOS version to 7.1 in the tiapp.xml.

Migrate Your Apps to iOS 10

Although our SDK and CLI take care of the most of the iOS 10 changes, there are also some privacy changes that need to be done by the developer. In detail, these include the requirement of the following keys in the plist of your tiapp.xml:

  • NSContactsUsageDescription: If you use the Ti.Contacts API to access contacts from the address book
  • NSCameraUsageDescription: If you use the Ti.Media.showCamera API to capture photos and videos
  • NSCalendarsUsageDescription: If you use the Ti.Calendar API to access device calendars
  • NSPhotoLibraryUsageDescription: If you use the Ti.Media.openPhotoGallery API to access the photo gallery or Ti.Media.showCamera API to save photos
  • NSMicrophoneUsageDescription: If you use the Ti.Media.AudioRecorder API to record audio or Ti.Media.showCamera to record videos

Example:

<ios>
    <plist>
        <dict>
            <key>NSContactsUsageDescription</key>
            <string>Can we use to your contacts?</string>
            <key>NSCameraUsageDescription</key>
            <string>Can we use your camera?</string>
            <key>NSCalendarsUsageDescription</key>
            <string>Can we use your calendar?</string>
            <key>NSPhotoLibraryUsageDescription</key>
            <string>Can we save to your library?</string>
            <key>NSMicrophoneUsageDescription</key>
            <string>Can we use your microphone?</string>
        </dict>
    </plist>
</ios>

If you test your application on iOS 10, we will log an error in case you don’t have the permissions included, so you know when an API requires a certain permission. On devices earlier than iOS 10, the privacy-keys are not required, but recommended. So adding them does not have a bad side-effect for older devices.

Using Facebook Module with iOS 10 and Xcode 8

To log in using Facebook on iOS Simulator, you now must include an entitlements file that enables Keychain Sharing Capabilities. While the entitlements file is not necessary for device build (it is self-generated), it won’t affect anything in your build. To do so, create a `/platform/ios/<name>.entitlements` file (replace <name> with the name element in tiapp.xml) with this content:

< ?xml version="1.0" encoding="UTF-8"?>
< !DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"https://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>keychain-access-groups</key>
    <array>
        <!-- APP_ID same as the id value in the tiapp.xml file -->
        <string>$(AppIdentifierPrefix)APP_ID</string>
    </array>
</dict>
</plist>

Using iOS Hyperloop with More Than One Version of Xcode Installed

If you use Appc CLI for development and have more than one version of Xcode installed, make sure your Xcode ActiveSDK is consistent with the iOS SDK you build against. For example:

  • sudo xcode-select --switch /Applications/Xcode8.app
    followed by appc run -p ios -I 10.0
  • sudo xcode-select --switch /Applications/Xcode731.app
    followed by appc run -p ios -I 9.3

Release Notes

These releases include 30 bug fixes, 4 improvements and 9 iOS 10 new features. For a more detailed overview, known issues and closed tickets see the following links:

Update Appcelerator Studio

If you changed the update type to Release Candidate Build to get the RC, then you can switch back to Stable Release now and check for updates.

Update Appcelerator CLI

Studio will update the CLI and SDK for you. To update them from the command line:

appc setup

Known Issues

  • Hyperloop (1.2.7) does not support debugger at this time (TIMOB-23628).
  • When building https://github.com/appcelerator/hyperloop-examples on Windows the build process fails (TIMOB-23613)
    More details: When building a project on Windows using appc run from the same directory as an appc.js file the build process will not begin and instead you will be prompted to select the application to open the appc.js in or the file will automatically open depending on your settings (CLI-1038)

Report Bugs

If you run into any issues that seem related to the updates, please report them on JIRA.

First, check if it’s a known issue you can watch. If you can’t find an existing ticket, then create one in the Appcelerator Community (AC) project and add as much relevant information as you can, including the release version you are using.

You can leave general comments as a reply to this blog post.