# 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.separatorStyle
ListView.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
OptionDialog
without 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
dampingRatio
andspringVelocity
to allow iOS spring animations
- Added
TIMOB-26523 (opens new window) - iOS 11+: Support large title style (dynamic fonts)
Added support for dynamic fonts in
UIFontTextStyleLargeTitle
UIFontTextStyleLargeTitle
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
accessibilityIdentifier
which can compose views on iOS the same waycontent description
is 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.ellipsize
TEXT_ELLIPSIZE_TRUNCATE_START
,TEXT_ELLIPSIZE_TRUNCATE_MIDDLE
, andTEXT_ELLIPSIZE_TRUNCATE_MARQUEE
are 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
asset
module API
- Added Node.js-compatible
TIMOB-26670 (opens new window) - TiAPI: Create Node-compatible util module API
Added Node.js-compatible
util
module APIThis API does not include every method of
util.types
, nor does it includeutil.extends()
,util.isDeepStrictEqual()
, orutil.inspect
Currently 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
File
object support
- Parity for
TIMOB-26817 (opens new window) - Android: Add parity for Window's barColor property.
- Parity for
barColor
property 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
baseURL
to 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.playservices
to version 16.1.3
- Updated
TIMOB-27111 (opens new window) - Android: Implement async Ti.Database.DB methods
Implement asynchronous
Ti.Database.DB
methods 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
TiUIListView
andTiUITableView
- 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
urlSession
from 2.1.0 to 2.2.0ti.map
from 3.1.0 to 3.1.2ti.safaridialog
from 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.DB
methods 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.data
WebView.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
async
variants ofTi.Network.TCP
- Parity for
TIMOB-26855 (opens new window) - Windows: Add "baseURL" support to WebView.setHtml()
- Re-implemented
baseURL
to 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
common
JS 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.json
file withENV
variables
- 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 |