# Titanium SDK 8.1.0.RC - 22 July 2019
# About this release
Titanium SDK 8.1.0 is a minor release of the SDK, addressing high-priority issues from previous releases.
As of this release, Titanium SDK 8.0.x will not receive updates more than six months after the release of 8.1.0 (current) (2020-01-22). Any needed fixes will be in 8.1.x or later supported releases within the 8.x branch. See Axway Appcelerator Deprecation Policy and Nominal Lifetimes documents for details.
❗️ Warning
With the release of Titanium SDK 9.0.0, we will no longer support Node.js 8.X. Node.js 10.13.0 will be the new minimum supported version with SDK 9.0.0.
# Notice of feature and behavior Changes
TIMOB-27250 (opens new window) - Add Node 8 deprecation warning for SDK 9.0 release
- With the release of Titanium SDK 9.0.0, users should see a deprecation notice for Node.js if they are using a version lower than 10.13
# New features
# Android platform
TIMOB-4041 (opens new window) - Android: Add "separatorStyle" property to Ti.UI.ListView
Added support for
ListView.separatorStyleListView.separatorStyle
var win = Ti.UI.createWindow({ backgroundColor: 'black', fullscreen: true }); var listView = Ti.UI.createListView({ separatorStyle: Ti.UI.TABLE_VIEW_SEPARATOR_STYLE_NONE, }); var section = Ti.UI.createListSection(); var sectionData = ; var i = 25; for (var k = 0; k < 25; k++) { sectionData.push({ properties: { title: 'Row ' + (k + 1) } }); } section.setItems(sectionData); listView.sections = section; win.add(listView); win.open();
TIMOB-14460 (opens new window) - Android: Add Ti.Platform.canOpenURL() support
- Added support for Ti.Platform.canOpenURL()
TIMOB-26793 (opens new window) - Android: Hide radio buttons OptionDialog
Added support to use
OptionDialogwithout radio buttonsOptionDialog
var win = Ti.UI.createWindow({ title: 'Click window to test OptionDialog', backgroundColor: 'white' }); var opts = { title: 'Select an option', options: 'Option 1', 'Option 2', 'Option 3', 'Option 4', buttonNames: 'Cancel' } var dialog; win.addEventListener('click', function() { dialog = Ti.UI.createOptionDialog(opts); dialog.addEventListener('click', onSelectDialog); dialog.addEventListener('cancel', function(e) { alert('Dialog canceled! e.cancel = ' + e.cancel + ', e.index = ' + e.index); }) dialog.show(); }); function onSelectDialog(e) { console.log(e); } var btn = Ti.UI.createButton({ title: "toggle selected index", bottom: 5 }); btn.addEventListener("click", function() { if (opts.selectedIndex == 0) { opts.selectedIndex = -1; } else { opts.selectedIndex = 0; } }); win.add(btn); win.open();
# iOS platform
TIMOB-18421 (opens new window) - iOS: Add animation properties "springVelocity" and "dampingRatio"
- Added
dampingRatioandspringVelocityto allow iOS spring animations
- Added
TIMOB-26523 (opens new window) - iOS 11+: Support large title style (dynamic fonts)
Added support for dynamic fonts in
UIFontTextStyleLargeTitleUIFontTextStyleLargeTitle
var win = Ti.UI.createWindow({ backgroundColor: '#fff', extendSafeArea: false }); var scrollView = Ti.UI.createScrollView({ layout: 'vertical', top: 50 }); var textStyles = Ti.UI.TEXT_STYLE_HEADLINE, Ti.UI.TEXT_STYLE_SUBHEADLINE, Ti.UI.TEXT_STYLE_BODY, Ti.UI.TEXT_STYLE_FOOTNOTE, Ti.UI.TEXT_STYLE_CAPTION1, Ti.UI.TEXT_STYLE_CAPTION2, Ti.UI.TEXT_STYLE_CALLOUT, Ti.UI.TEXT_STYLE_TITLE1, Ti.UI.TEXT_STYLE_TITLE2, Ti.UI.TEXT_STYLE_TITLE3, Ti.UI.TEXT_STYLE_LARGE_TITLE, ; for (var i = 0; i < textStyles.length; i++) { var textStyle = textStylesi; scrollView.add(Ti.UI.createLabel({ top: 20, text: textStyle, font: { textStyle: textStyle } })); } win.add(scrollView); win.open();
TIMOB-26599 (opens new window) - iOS: Add "allowTranscoding" option to Ti.Media.openPhotoGallery()
- Added option to disable video compression when importing video
TIMOB-26973 (opens new window) - iOS: Add accessibilityIdentifier
- Added
accessibilityIdentifierwhich can compose views on iOS the same waycontent descriptionis composed on Android
- Added
TIMOB-27124 (opens new window) - iOS 13: Support running on Xcode 11 Simulators
- Added support for Xcode 11
# Windows platform
TIMOB-25778 (opens new window) - Windows: Implement Ti.UI.Label.ellipsize
Implemented
Ti.UI.Label.ellipsizeTEXT_ELLIPSIZE_TRUNCATE_START,TEXT_ELLIPSIZE_TRUNCATE_MIDDLE, andTEXT_ELLIPSIZE_TRUNCATE_MARQUEEare not supported on Windows because platform component doesn't support them
# Multiple platforms
TIMOB-26571 (opens new window) - TiAPI: Global process object compatible with Node.js
- Expanded the global process object to be more compatible with Node.js
TIMOB-26669 (opens new window) - TiAPI: Create Node-compatible assert module API
- Added Node.js-compatible
assetmodule API
- Added Node.js-compatible
TIMOB-26670 (opens new window) - TiAPI: Create Node-compatible util module API
Added Node.js-compatible
utilmodule APIThis API does not include every method of
util.types, nor does it includeutil.extends(),util.isDeepStrictEqual(), orutil.inspectCurrently supports
depth,showHidden, and to some degreebreakLength
TIMOB-27150 (opens new window) - Add ability to alias required modules in Titanium
- Added ability to alias required modules
# Community credits
Prafulla Bansode - TIMOB-24415 (opens new window)
Sandro Lain - TIMOB-24418 (opens new window), TIMOB-24423 (opens new window), TIMOB-24443 (opens new window)
Hans Knöchel - TIMOB-26101 (opens new window), TIMOB-26854 (opens new window), TIMOB-26862 (opens new window), TIMOB-26885 (opens new window), TIMOB-26946 (opens new window), TIMOB-27049 (opens new window), TIMOB-27082 (opens new window), TIMOB-27089 (opens new window), TIMOB-27090 (opens new window), TIMOB-27100 (opens new window), TIMOB-27103 (opens new window), TIMOB-26523 (opens new window), TIMOB-26566 (opens new window), TIMOB-26509 (opens new window), TIMOB-26686 (opens new window), TIMOB-26770 (opens new window), TIMOB-27155 (opens new window), TIMOB-27210 (opens new window)
kedomuz - TIMOB-26326 (opens new window)
Michael Gangolf - TIMOB-26456 (opens new window), TIMOB-26993 (opens new window), TIMOB-25556 (opens new window), TIMOB-26793 (opens new window)
Sergey Volkov - TIMOB-26973 (opens new window)
shumne - TIMOB-26795 (opens new window)
alessandro la rocca - TIMOB-26829 (opens new window)
Andreas Pingas - TIMOB-26878 (opens new window), TIMOB-27188 (opens new window), TIMOB-27232 (opens new window)
Arbind - TIMOB-26898 (opens new window)
grebulon - TIMOB-26954 (opens new window)
Muhammad Ahmed Fahad - TIMOB-26986 (opens new window)
Adam Armstrong - TIMOB-27087 (opens new window)
Tim Poulsen - TIMOB-14460 (opens new window)
Richard Lustemberg - TIMOB-26599 (opens new window)
Mark Henderson - TIMOB-27098 (opens new window)
# Fixed issues
# Android
TIMOB-24415 (opens new window) - Android: Listview not able to add accessibility label in the ListItem components
TIMOB-24881 (opens new window) - Android: Label ellipsize modes START and MIDDLE don't work if "autoLink" is true
TIMOB-26456 (opens new window) - Android: Optimize TiBlob.imageAsResized
TIMOB-26650 (opens new window) - Android: Using toImage on views with border properties not added to UI results in empty blob
TIMOB-26841 (opens new window) - Android: Reading TextField "backgroundDisabledColor" will crash if background/border color is assigned
TIMOB-26862 (opens new window) - Android: TextField/TextArea within a TableView can have performance issues with some keyboards
TIMOB-26869 (opens new window) - CLI: Android build fails with cannot find module error
TIMOB-26878 (opens new window) - Android: Ti.Database.install() fails if destination directory does not exist
TIMOB-26954 (opens new window) - Android: Reading a JSON file fails on Android Q
TIMOB-26993 (opens new window) - Android: WebView sometimes crashes on window close after zooming content
TIMOB-27087 (opens new window) - Android: ShortcutItem not being updated based on "id"
TIMOB-27100 (opens new window) - Android: TabGroup labels not displayed anymore (SDK 8.1.0+)
TIMOB-27153 (opens new window) - Android: Prevent multiple exception logs
TIMOB-27188 (opens new window) - Android: TabGroup crashes if tab "title" property is not set as of 8.0.2
TIMOB-27232 (opens new window) - Android: Setting Window "barColor" while using a theme without an ActionBar/TitleBar will cause a crash as of 8.1.0
# iOS
TIMOB-26795 (opens new window) - iOS: Event listener on overlay is not working for camera when camera is kept idle for a few minutes
TIMOB-26829 (opens new window) - iOS: Titanium.Media.openMusicLibrary returns empty items on iOS 9.3.5
TIMOB-26833 (opens new window) - iOS: Two startup log messages are output
TIMOB-26838 (opens new window) - iOS: the openWindow() method of NavigationWindow does not work when called from base window open event
TIMOB-26854 (opens new window) - iOS: Crash when handling user-activities
TIMOB-26885 (opens new window) - iOS: Crash when trying to push a window twice (e.g. on slow devices)
TIMOB-26946 (opens new window) - iOS: Launch screen shows last screen when quickly relaunching the app
TIMOB-27049 (opens new window) - iOS: Simulator can crash because of the "trackUserInteraction" feature
TIMOB-27074 (opens new window) - IOS: Rebuilding the app with simulator fails with due to log port being occupied
TIMOB-27082 (opens new window) - iOS: Modules using TiBlob and built before SDK 8.1 causing app crash
TIMOB-27089 (opens new window) - iOS: App crashes when asking for location permissions (SDK 8.1.0+)
TIMOB-27090 (opens new window) - iOS: Using a non-string value in alert() causes app to crash in SDK 8.0.0+
TIMOB-27098 (opens new window) - iOS: debugger does not show all app files loaded
TIMOB-27103 (opens new window) - iOS: Native extensions without sources are crashing build
TIMOB-27155 (opens new window) - iOS: Incremental builds broken
TIMOB-27175 (opens new window) - iOS: Ti.Platform.id (opens new window) changes when updating to SDK 8.0.0
TIMOB-27202 (opens new window) - IOS:Rebuilding app on device throws Couldn't find module error
TIMOB-27203 (opens new window) - iOS: no apiversion validation performed on application build
TIMOB-27210 (opens new window) - iOS: Cannot find iOS 13 simulators in Xcode 11 Beta 3
TIMOB-27230 (opens new window) - iOS: CLI prefers Xcode 11/iOS 13 even though Xcode 10.2.1 is selected
# Windows
TIMOB-24418 (opens new window) - Windows Phone: OptionDialog undefined error
TIMOB-24423 (opens new window) - Windows Phone: TableViewRow and Label layout not respected
TIMOB-24443 (opens new window) - Windows Phone: Progressbar not respect width and not resize
TIMOB-25134 (opens new window) - Windows: Mocha test Titanium.UI.TextField padding test failure
TIMOB-26550 (opens new window) - Windows: Add support for file property to HTTPClient
TIMOB-26664 (opens new window) - Windows: Ti.Geolocation.lastGeolocation should return string
TIMOB-26689 (opens new window) - Windows: Wrong height for TableViewRow with Label
TIMOB-26690 (opens new window) - Windows: TabGroup does not fire open/close events
TIMOB-26791 (opens new window) - Windows: Ti.UI.View reports top/left/bottom/right values as Strings always
TIMOB-26797 (opens new window) - Windows: removeEventListener removes wrong callback
TIMOB-26969 (opens new window) - Windows: Codec encodeNumber/decodeNumber should throw Error on invalid setup
TIMOB-27257 (opens new window) - [Windows] Error is shown when packaging a windows module
# Multiple platforms
- TIMOB-27204 (opens new window) - CLI: apiversion validation always fails for native modules installed via npm
# Improvements
# Android
TIMOB-26686 (opens new window) - Android: Allow Ti.Network.HTTPClient "file" parameter to be set to Ti.Filesystem.File object like iOS
- Parity for
Fileobject support
- Parity for
TIMOB-26817 (opens new window) - Android: Add parity for Window's barColor property.
- Parity for
barColorproperty of Ti.UI.Window
- Parity for
TIMOB-26848 (opens new window) - Android: Re-add "baseURL" support to WebView.setHtml() that was removed in 6.0.3
- Re-implemented
baseURLto supportWebView.setHtml
- Re-implemented
TIMOB-26877 (opens new window) - Android: Ti.Database.install() should throw exception like iOS if source db file not found
- Modified
Ti.Database.install()to throw an exception if given source database file was not found
- Modified
TIMOB-26909 (opens new window) - Android: Improve V8 cold start performance
- Updated V8 to 7.3.492.26 which provides performance updates
TIMOB-26957 (opens new window) - Android: Update V8 runtime to 7.3.492.26
- Updated V8 to 7.3.492.26 which provides performance updates
TIMOB-27042 (opens new window) - Android: Update ti.playservices to 16.1.3
- Updated
ti.playservicesto version 16.1.3
- Updated
TIMOB-27111 (opens new window) - Android: Implement async Ti.Database.DB methods
Implement asynchronous
Ti.Database.DBmethods for executing SQL queriesTi.Database.DB.executeAsync(query, parameters[], callback)Ti.Database.DB.executeAllAsync(queries[], callback)
Implement method for executing multiple queries in one request
# iOS
TIMOB-26509 (opens new window) - iOS: Allow Ti.UI.SearchBar to be displayed in navigation-bar
- Added support to show search bar navigation for
TiUIListViewandTiUITableView
- Added support to show search bar navigation for
TIMOB-26770 (opens new window) - iOS: Use Swift 5 by default
- Added support for Swift 5
TIMOB-27043 (opens new window) - Cache JS processing between builds
- Improved incremental app build times
TIMOB-27047 (opens new window) - iOS: Version of SDKs default modules are not up to date
Updated the following modules
urlSessionfrom 2.1.0 to 2.2.0ti.mapfrom 3.1.0 to 3.1.2ti.safaridialogfrom 1.1.1 to 3.1.0ti.identity from 1.0.5 to 1.0.6
TIMOB-27164 (opens new window) - iOS: Implement async Ti.Database.DB methods
Implement asynchronous
Ti.Database.DBmethods for executing SQL queriesTi.Database.DB.executeAsync(query, parameters[], callback)Ti.Database.DB.executeAllAsync(queries[], callback)
Implement method for executing multiple queries in one request
# Windows
TIMOB-19965 (opens new window) - Windows: Implement WebView.data
Implemented
WebView.dataWebView.data
var win = Ti.UI.createWindow({ backgroundColor: 'green' }); var blob = Ti.Filesystem.getFile('app.js').read(); var webview = Ti.UI.createWebView({ data: blob, height: Ti.UI.FILL, width: Ti.UI.FILL }); webview.addEventListener('load', function () { Ti.API.info(typeof webview.data); }); win.add(webview); win.open();
TIMOB-26575 (opens new window) - Windows: Support async variants of Ti.Network.TCP #read and #write
- Parity for
asyncvariants ofTi.Network.TCP
- Parity for
TIMOB-26855 (opens new window) - Windows: Add "baseURL" support to WebView.setHtml()
- Re-implemented
baseURLto supportWebView.setHtml
- Re-implemented
# Multiple platforms
TIMOB-26574 (opens new window) - TiAPI: Implement set/clearImmediate
- Implemented
process.nextTick()and the globalsetImmediate/clearImmediate
- Implemented
TIMOB-26729 (opens new window) - TiAPI: Ship baseline polyfills in built SDK
- This update injects the core-js/regenerator polyfills into the bundle
commonJS SDK code we ship when we build
- This update injects the core-js/regenerator polyfills into the bundle
TIMOB-27045 (opens new window) - Pass along ENV variables to process.env on development builds
- Write
env.jsonfile withENVvariables
- Write
TIMOB-27182 (opens new window) - Update Hyperloop to 4.0.3
Android: Debugging in Hyperloop enabled projects
iOS: Debugging in Hyperloop enabled projects
iOS: Correctly require minimum SDK 8.0.0
# API changes
# New APIs
# SDK modules versions
# Android and iOS
| Module | Android version | iOS version |
|---|---|---|
| urlSession | n/a | 2.2.0 |
| 8.0.0 | 6.0.0 | |
| ti_coremotion | n/a | 2.0.1 |
| ti_map | 4.3.1 | 3.1.2 |
| ti_safaridialog | n/a | 1.1.1 |
| ti_webdialog | 1.1.0 | 1.1.0 |
| ti_touchid | 3.0.1 | 2.1.4 |
| ti_identity | 2.1.0 | 1.0.6 |
| ti_cloudpush | 6.0.1 | n/a |
| ti_playservices | 16.1.3 | n/a |
# CommonJS
| Module | Version |
|---|---|
| ti.cloud | 3.2.11 |
# Hyperloop
| Module | Version |
|---|---|
| Hyperloop | 4.0.3 |