Release Notes, 7.3.2
🚧 Minimum required:
@smartface/native v5.1.2 🚀
Android -> v7.3.2 🚀
iOS -> v7.3.2 🚀
Smartface IDE -> 0.12.1 🚀
Updated Modules
In order to fully migrate to the new version, you should update these packages:
- Builder -> 0.12.0
- Dispatcher -> Latest Version: 0.12.0
- Library Reader -> Latest Version: 0.12.0
- Marketplace Service -> Latest Version: 0.12.0
- TSC Watch -> Latest Version: 0.12.0
- You have to restart builder after updating the dependencies.
- To restart the builder, select Run Builder from the Run menu.
In root
of the project run the following command:
yarn install
- Native -> Latest Version: 5.1.2
- Core -> Latest Version: 5.1.6
- Styling Context -> Latest Version: 5.1.6
- Mixins -> Latest version: 5.1.6
- Source-map -> Latest version: 5.1.6
- RTL -> Latest version: 5.1.6
- WebviewBridge -> Latest version: 5.1.6
- Security -> Latest version: 5.1.6
In /scripts
folder run the following command:
yarn install
For further information about versions, check the boilerplate project of Smartface for updated versions and match yours with the new ones:
https://github.com/smartface/helloworld-boilerplate
Native and Framework Changes
Svg Support
We have added the SvgImageView
component to the framework. You can use it to display SVG files in your project. For more information, you can refer to the SvgImageView documentation.
Upgrade to Xcode 14
Note: From now, as minimum version, project builds requires to run on Xcode 14
How to upgrade Xcode on AppCircle
AppCircle Simulator builds are required some additional steps to upgrade Xcode. You can follow the steps below to upgrade Xcode on AppCircle:
- Inactive current Simulator build step
- Add a
Custom Script
and rename it toCustom build for iOS Simulator
or whatever you want - Select language to
Ruby
onEXECUTE WITH
configuration - Paste belove code to
Script
section
require 'yaml'
require 'json'
require 'open3'
require 'pathname'
###### Enviroment Variable Check
def env_has_key(key)
return (ENV[key] != nil && ENV[key] !="") ? ENV[key] : abort("Missing #{key}.")
end
options = {}
options[:repository_path] = ENV["AC_REPOSITORY_DIR"]
options[:temporary_path] = ENV["AC_TEMP_DIR"] || abort('Missing temporary path.')
options[:temporary_path] += "/appcircle_build_ios_simulator"
options[:outputh_path] = env_has_key("AC_OUTPUT_DIR")
options[:project_path] = ENV["AC_PROJECT_PATH"] || abort('Missing project path.')
options[:scheme] = ENV["AC_SCHEME"] || abort('Missing scheme.')
$configuration_name = "Debug"
#compiler_index_store_enable - Options: YES, NO
$compiler_index_store_enable = "NO"
options[:extra_options] = ['ONLY_ACTIVE_ARCH=NO','CODE_SIGN_IDENTITY=""', 'CODE_SIGNING_REQUIRED=NO', 'CODE_SIGNING_ALLOWED=NO', '-sdk iphonesimulator']
if ENV["AC_XCODE_BUILD_EXTRA_FLAGS"] != "" && ENV["AC_XCODE_BUILD_EXTRA_FLAGS"] != nil
options[:extra_options] = options[:extra_options].concat(ENV["AC_XCODE_BUILD_EXTRA_FLAGS"].split("|"))
end
options[:xcode_build_dir] = "#{options[:temporary_path]}/SimulatorBuildDir"
def archive(args)
repository_path = args[:repository_path]
project_path = args[:project_path]
scheme = args[:scheme]
extname = File.extname(project_path)
command = "xcodebuild -scheme \"#{scheme}\" BUILD_DIR=\"#{args[:xcode_build_dir]}\" -derivedDataPath \"#{args[:temporary_path]}/SimulatorDerivedData\""
if $configuration_name != nil
command.concat(" ")
command.concat("-configuration \"#{$configuration_name}\"")
command.concat(" ")
end
if $compiler_index_store_enable != nil
command.concat(" ")
command.concat("COMPILER_INDEX_STORE_ENABLE=#{$compiler_index_store_enable}")
command.concat(" ")
end
project_full_path = repository_path ? (Pathname.new repository_path).join(project_path) : project_path
if args[:extra_options].kind_of?(Array)
args[:extra_options].each do |option|
command.concat(" ")
command.concat(option)
command.concat(" ")
end
end
if extname == ".xcworkspace"
command.concat(" -workspace \"#{project_full_path}\"")
elsif extname == ".xcodeproj"
command.concat(" -project \"#{project_full_path}\"")
end
runCommand(command)
end
def runCommand(command)
puts "@@[command] #{command}"
status = nil
stdout_str = nil
stderr_str = nil
Open3.popen3(command) do |stdin, stdout, stderr, wait_thr|
stdout.each_line do |line|
puts line
end
stdout_str = stdout.read
stderr_str = stderr.read
status = wait_thr.value
end
unless status.success?
raise stderr_str
end
end
archive(options)
#Move app file to AC_OUTPUT_DIR
simulator_dir = "#{options[:outputh_path]}/build_simulator"
create_simulator_folder_command = "mkdir -p #{simulator_dir}"
runCommand(create_simulator_folder_command)
ac_simulator_app_path = "#{simulator_dir}/build_simulator.app"
puts "AC_SIMULATOR_APP_PATH : #{ac_simulator_app_path}"
if $configuration_name != nil
options[:xcode_build_dir] = "#{options[:xcode_build_dir]}/#{$configuration_name}-iphonesimulator"
else
options[:xcode_build_dir] = "#{options[:xcode_build_dir]}/Debug-iphonesimulator"
end
target = Dir["#{options[:xcode_build_dir]}/*.app"].select{ |f| File.exists? f }.map{ |f| File.absolute_path f }[0]
move_command = "mv \"#{target}\" \"#{ac_simulator_app_path}\""
runCommand(move_command)
puts "AC_SIMULATOR_APP_PATH : #{ac_simulator_app_path}"
#Write Environment Variable
open(ENV['AC_ENV_FILE_PATH'], 'a') { |f|
f.puts "AC_SIMULATOR_APP_PATH=#{ac_simulator_app_path}"
}
exit 0
🆕 What's New
- Maintenance: The default value for
autoSizeEnabled
property ofScrollView
has been changed totrue
. - Feature: [Android] If an
image
does not have awidth
orheight
value, theimage
is does not display. Now, theimage
is displayed with auto-size. - Feature: [iOS] Implemented
SSL Pinning
forloadFromUrl
andfetchFromUrl
methods ofImageView
. - Feature:
disableCertificateVerification
property has been added toXHR
forSSL Pinning
.
🐞 Bug Fix
- Fixed [Android] The
multiSelectEnabled
property ofSelectablePicker
does not work. - Fixed [Android] The
HeaderBar
throws an error when theiOS.systemIcon
property is set. - Fixed [Android] If the
rowMoveEnabled
property ofListView
is set onconstructor
, the property does not work. - Fixed [Android] The
onScroll
method ofListView
does not work. - Fixed [Android] The
setMessage
method ofEmailComposer
does not work. - Fixed [iOS] If the
tabbarItem
does not have an icon, thebadge
is not displayed. - Fixed [iOS] The
Splash Screen
does not resize on iPad devices. - Fixed [iOS] Screen dimensions calculates incorrectly on iPhone 14 Pro devices.
- Fixed [iOS] The
onCreate
method does not work forMapView
. - Fixed [iOS] The
isPassword
property ofMaterialTextBox
returnsnull
. - Fixed If a
color
value withalpha
is set to thebackgroundColor
property of thePage
, thebackgroundColor
property of thePage
is not applied.
📑 Documentation
The following docs are updated, you can have a look to see what's new:
- The code snippets have been updated for all the components under the UI Elements section.
- ActivityIndicator
- AlertView
- Animator
- BlurView
- BottomTabBar
- Button
- Color
- DatePicker
- EmailComposer
- Font
- GifImageView
- GridView
- HeaderBar
- Icon
- ImageView
- Label
- ListView
- LiveMediaPlayer
- LiveMediaPublisher
- MapView
- MaterialTextBox
- Menu
- Page
- Picker
- Quiclook
- ScrollView
- SearchView
- SelectablePicker
- SpriteView
- StatusBar
- SwipeView
- Switch
- TabbarController
- TextArea
- Textview
- Toast
- VideoView
- View
- WebBrowser
- WebView
- ZoomableImageView
IDE Changes
IDE Releases are held in its respective place. You can reach it under:
https://github.com/smartface/smartface-ide-releases/releases
For IDE Documentation & Usage, you can refer to this documentation:
UI Editor Basics🆕 What's New
- Feature: The
SvgImageView
component has been added to theComponent Panel
. - Maintenance: The cosmetic aspect of the
Theme Panel
has been improved.
🐞 Bug Fix
- Fixed The
backgroundColor
value of theCustom Headerbar
is not applied. - Fixed Some display issues have been fixed.
- Fixed Adding new component with drag & drop on
Library Page
.