Skip to main content
Version: 7.3.2

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:


  • 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

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

caution

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 to Custom build for iOS Simulator or whatever you want
  • Select language to Ruby on EXECUTE 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 of ScrollView has been changed to true.
  • Feature: [Android] If an image does not have a width or height value, the image is does not display. Now, the image is displayed with auto-size.
  • Feature: [iOS] Implemented SSL Pinning for loadFromUrl and fetchFromUrl methods of ImageView.
  • Feature: disableCertificateVerification property has been added to XHR for SSL Pinning.

🐞 Bug Fix

  • Fixed [Android] The multiSelectEnabled property of SelectablePicker does not work.
  • Fixed [Android] The HeaderBar throws an error when the iOS.systemIcon property is set.
  • Fixed [Android] If the rowMoveEnabled property of ListView is set on constructor, the property does not work.
  • Fixed [Android] The onScroll method of ListView does not work.
  • Fixed [Android] The setMessage method of EmailComposer does not work.
  • Fixed [iOS] If the tabbarItem does not have an icon, the badge 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 for MapView.
  • Fixed [iOS] The isPassword property of MaterialTextBox returns null.
  • Fixed If a color value with alpha is set to the backgroundColor property of the Page, the backgroundColor property of the Page is not applied.

📑 Documentation

The following docs are updated, you can have a look to see what's new:

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 the Component Panel.
  • Maintenance: The cosmetic aspect of the Theme Panel has been improved.

🐞 Bug Fix

  • Fixed The backgroundColor value of the Custom Headerbar is not applied.
  • Fixed Some display issues have been fixed.
  • Fixed Adding new component with drag & drop on Library Page.