Skip to content

Releases: TotalCross/totalcross

v7.1.0

27 Apr 16:54
Compare
Choose a tag to compare

Added

  • Added new build options to disable Skia and use our original graphical primitives, resulting in a very smaller libtcvm (~3MB) that also works on OpenBSD. Thanks @erathke for this contribution! #287

Usage:
cmake <source_dir> -DUSE_SKIA=OFF

Changed

  • Updated library Axtls from version 1.5.4 to 2.1.5 to include support for TLS 1.2.

Fixed

  • Android
    • Reverted Android build to target SDK 29 in order to fix support for Android 11.
  • Launcher
    • Fixed Android deploy on case sensitive systems.
  • Simulator
    • SSL: Fixed bug on some JDK implementations that would throw IOException on getInputStream after EOF.

v7.0.4

06 Apr 19:31
Compare
Choose a tag to compare

Changed

  • Simulator: Removes resizing of font on simulator for better fidelity across platforms - #293

Fixed

  • Android:
    • Fixed packaging of binaries included in the release.

v7.0.3

06 Apr 19:27
Compare
Choose a tag to compare

Highlights

  • Performance boost and reduced binary size on Linux and Android - This was actually our mistake, those targets were being built for debugging since we started using CMake. This release should have performance at least twice as better as the previous releases built with CMake.

  • Build system improvements

    • SQLite3 source code removed from our repository, downloading and patching is performed by CMake.
    • Android build improved, it should be A LOT faster for most systems.
  • Edit and virtual keyboard performance improvements

Known issues

  • Android prebuilt binaries included in this release are broken, skip this release for Android or rebuild the binaries from the sources and replace them locally.

Changed

  • Removed Cielo Lio text printing support, reducing the Android binary size. (Let us know if you need this feature back)

Fixed

  • Android:
    • Fixed launching third party apps using Vm.exec
    • Fixed permission for writing on storage for android-29

Starting from target-sdk 29 application should use scoped storage
https://developer.android.com/training/data-storage#scoped-storage

  • API:
    • MessageBox: fixed NPE during unpop when the MessageBox is created without buttons (i.e. button captions is null) - #304

v7.0.2

06 Apr 19:22
Compare
Choose a tag to compare

Added

  • String: added missing constructors that handle charset encoding.

Fixed

  • XmlReader and SOAP: Fixed bugs introduced on version 7.0.0.
  • Image: Fixed bug introduced on version 7.0.0 that caused animated images to draw only its first frame - #296

v7.0.1

06 Apr 19:16
Compare
Choose a tag to compare

Added

  • Added a few tweaks to improve drawing performance:
    • Improved color type conversion performance by using compiler specific byte swap functions.
    • 🚀 Greatly improved image drawing performance by performing color type conversion only once, instead of letting Skia handle it automatically on every draw operation.
    • 🚀 Greatly improved drawing performance for fully opaque images, by skipping alpha channel conversion on draw. Drawing JPEGs and opaque PNGs got over 10 times faster on some tested devices.
    • Improved text drawing performance by caching font objects and avoiding unnecessary font loading.

Changed

  • Force usage of software graphics on Linux/ARM systems until we find a proper way to detect support for hardware accelerated graphics - #259

Fixed

  • Class java.util.Objects would sometimes be not available on the device.
  • Segfault during SDL initialization reported in some systems - #263, #265
  • Fixed screen not updating on some devices, by refreshing the SDL_Surface on repaint.
  • XmlTokenizer was still trying to use the old byte implementation when running on device.

v7.0.0

18 Jan 15:12
0eb38c0
Compare
Choose a tag to compare

Welcome to 2021, and our first stable release! Let's get straight to the objectives:

  • Huge bug fixes - Many long-standing bugs have been resolved;
  • arm64 distribution - Now deploy TotalCross applications for linux arm64 is much easier;
  • Skia update - A new room for improvements.

Join our community on the telegram to give feedback about this release!

Huge bug fixes

Our main goal with this version is to keep it as stable as possible. We need a solid foundation for the future of the tool. With that we focus on correcting new and old problems that accompanied us in version 6. The main bugs resolved and that are very important for totalcross stackholders are:

  • VirtualKeyboard issues: this component widely used for embedded devices has some bugs that hinder the execution of applications;
  • Android black screen: now everything works correctly when running the .apk for the first time;
  • Build issues: we updated the versions of Android API, Android NDK and Gradle. Fixed bugs related to the build for legacy systems (GLIBC issue). Changes were made to implement CICD with Github Actions.

You can see the full list of issues resolved at the end of the note.

arm64 distribution

As a cross-platform tool we need to pay attention in market changes and one of those that has caught our attention is the adoption of arm64 devices. To meet this demand we are launching a new feature:

Any package made with the -linux_arm flag will also result in arm64 artifacts.

As always just transfer the files to your device! You can customize the build for your distro for now the TotalCross/totaldocker repository can help 😅

Skia update

Our Skia branch was starting to get outdated, so we upgraded to branch m87 in some platforms. They are: linux (x86_64) and linux_arm (32v7). This opened the door to a new room of enhancement that we will work along the 7.x.x lifecycle. Some bugs have already been detected and should appear as minors or patches. In the next versions we will have the new Skia on more platforms.

Fixes

We closed the following issues:

You can see all of these issues in the repository https://github.com/TotalCross/totalcross/issues.

v6.1.1

29 Oct 20:43
Compare
Choose a tag to compare

6.1.1 - October 2020

Hello! This minor release has as main objective:

  • Static SDL2 - Brings it back to work properly on Angstrom for target Linux ARM;
  • Display env-vars - Configurable displays bounds;
  • SSLSocketFactory - Change SSLSocketFactory to always yield a SSLSocket;
  • Fixes - Minor bug fixes 🔧.

Join our community on the telegram to give feedback about this release!

Static SDL2

SDL is now statically linked for Linux arm32v7. Some very simple systems do not have the possibility of installing SDL2 in an easy way. On Angström-type systems this required a certain kludge exporting the path to extern .so with LD_LIBRARY_PATH=<path-to-.so>. We didn't want it to be hard, that's why the change!

Display env-vars

We now introduce 3 environment variables for execution. Since we do not have an automatic viewport they need to be set up they are:

TC_WIDTH TC_HEIGHT TC_FULLSCREEN
Description Size of width in pixels Size of height in pixels Only do something when comes to false or 0
Values int int bool

You can use them as follows for Linux and Linux ARM platforms:

$ TC_WIDTH=1280 TC_HEIGHT=720 TC_FULLSCREEN=false ./Launcher MyApp

When the fullscreen is deactivated the TC is opened in a window and its logic like:

width -= width*0.09;
height -= height*0.09;

That should change soon. See more in #99.

The syntax #<number> is related to pull request in GitHub repository.

SSLSocketFactory

Should always yields a SSLSocket when in SSLSocketFactory. As
SSLSocketFactory extends SocketFactory and does not override the
createSocket(String, int) method, and calls from super classe. As
SocketFactory yields plain sockets...

This fix just delegates to createSocket(String, int, int) passing the default
Socket.DEFAULT_OPEN_TIMEOUT as the open timeout argument. Maybe it should be
better to call new SSLSocket(String, int), but this constructor does not
exists yet. See more in #122.

Thanks @jeffque 😃!

Fixes

Corrections were made:

  • Launch args not being parsed, i.e., ex. /density #94;
  • SDL didn't work properly in systems without libSDL2-dev, CreateRenderer() bug #99;
  • SDL use SDL_Surface instead of SDL_Renderer when hardware accelerated graphics is not available;
  • iOS: Update youtube-ios-player-helper from 0.0.16 to 1.0.2. This is required because UIWebView, a component used by this dependency, is deprecated resulting the error ITMS-90809 when uploading the app for the app store;
  • iOS: fix missing icon files when generating;
  • Remove some Sun private libraries are not guaranteed to be available to any JDK besides
    the Oracle JDK 8 or previous;
  • Fix AnonymousUserData usage;
  • StringBuffer adds missing CharSequence constructor. #135

v6.1.0

25 Jul 00:02
Compare
Choose a tag to compare

6.1.0 - July 2020

Welcome to the July 2020 release (version 6.1.0). We hope you enjoy the updates in this version. The key highlights are:

  • Maven plugin new version - your pom.xml file should change;
  • KnowCode Compatibility - It is now possible to run Android XMLs Layouts on Linux Arm;
  • Virtual Keyboard - New look and animations;
  • Using external applications - Through the runtime.exec method;
  • Anonymous user statistics - There is now an option to contribute by sending anonymous data;
  • Changing the SDL implementation - Removing the SDL code from within the TotalCross SDK and changing the static to dynamic link.

Join our community on the telegram to suggest activities and learn about development for embedded systems.

Maven plugin new version

After the latest Language Support for Java extension updates, some systems had compatibility issues with Java 11. We launched a new version of the TotalCross maven plugin to solve them, the 1.1.6. You must change the following line:

...

<plugin>
  <groupId>com.totalcross</groupId>
  <artifactId>totalcross-maven-plugin</artifactId>
  <!-- This line: -->
  <version>1.1.6</version>
  <configuration>
    <name>${project.name}</name>
    <platforms>
    
...

KnowCode compatibility

In this version, a name tag was added to ContentHandler (Pull request #20), making it possible for KnowCode, a tool that uses a neural network, to convert interface images to XML and TotalCross, allowing it to run on Linux Arm with the same performance as an application built directly with the TotalCross SDK.

Imgur

Find out how to use KnowCode by clicking here.

Virtual Keyboard

In this milestone some improvements were implemented in the keyboard, which are:

  • In Linux Arm the virtual keyboard is enabled by default. To disable it just put Settings.virtualKeyboard = false in your MainWindow class;
  • In order to improve performance and make the design cleaner, the ripple effect animation on the keyboard buttons was removed;
  • In order to obtain more effective responsiveness, the calculations of width and height were changed, leaving it less dependent on absolute values;
  • To make the interface richer, sliding animation was added to the popup and unpopup of the virtual keyboard. You can see these changes in detail in pull requests #40 and #65.

In the images below you can see the visual difference:

Before:

Imgur

After:

Imgur

External applications

To allow the use of external libraries in the simplest way possible is one of TotalCross goals. There is a branch in our repository called feature/tcni-rebased which (still a Proof Of Concept) allows the use of these external libraries

TCNI is a foreign function interface programming framework that enables TotalCross/Java code running in a Java virtual machine to call and be called by native applications and libraries written in other languages ​​such as C, C ++ and assembly.

But while TCNI is not ready to be launched, we have developed a middle ground that allows the use of external applications in TotalCross, through the method runtime.exec(). This method creates a new process and executes the command you passed in this new process (Pull request #21).

For example, create a python script to access a temperature sensor and with the runtime.exec() get the return of it, as you can see in this example:

Imgur

To better understand how it works using a sample application click here.

Anonymous user statistics:

When TotalCross decided to become a free and open source tool, the decision was made to no longer require an activation key from the user, which was previously necessary to differentiate free users from customers. As this removal would imply resolving a series of errors and making many changes, the team decided to generate an eternal and unlimited key and use it as a default, provisionally, until we resolve some pending issues and can go back to this point and withdraw it for good.

So in 6.1.0 we went back to that and removed the activation key, including the class register.java, as you can see in detail in pull request #53.

And to better track which users preferences when using the TotalCross SDK, we set up the SDK to ask if the developer wants to contribute anonymous data and if the answer is positive, we record parameters for Deploy, timezone, launchers, operating system version and version of TotalCross used.

Imgur

You can see the details of the implementation in Pull Request #66.

Change in SDL implementation

We chose to remove SDL code from the SDK TotalCross in this version to improve the build organization and allow people to customize the build of their facilities according to their hardware.

In addition, we changed the SDL link from static to dynamic because:

  • Allows the distribution to have corrections and be used without having to compile the TC again but the guy needs to install the SDL before TotalCross
  • Avoids License compliance problems as FOSSA warns about the SDL license (GPLv3).

For details, see pull requests #23, #24, and #68.

Other changes: