Kodular Eagle

Kodular Eagle

1.4 Eagle | 17 August 2019

Major Changes

  • New Ads Commission system No more fixed commissions; you will now pay for what you use: few components means lower commission

  • Web View can now upload files You will now be able to upload files within a web viewer

  • Export and import blocks via PNG files You can now right-click on any block and pick "Download Blocks as PNG". And you can just drop that PNG file into the workspace, and the blocks will appear

  • Added Android Support Libraries for SDK 28 It provides optimized compiled apps for Android 9

  • Now Projects can be renamed Just click on the projects name at the top left corner, type the new name and hit Enter

  • Loading projects now use a new JIT (just-in-time) system*, removing the old AOT (ahead-of-time) This makes loading projects from *5 to 10 times faster

  • Deleting screens/projects now involves a secondary confirmation You have to type the project/screen name before deleting it

  • Bumped Minimum SDK from 16 to 19 We needed to add more features, and it could only be possible increasing the Min SDK to Android 4.4

  • New default app icon when none is set for new projects We replaced our logo icon with a fancier one

  • You can now copy/cut and paste components in the same screen, and from one screen to another Check the UI Changes, Point 3, for more information

  • Added two new languages: Greek and Japanese Their translation progress were enough to be implemented

UI Changes

  • Kodular Creator has been fully redesigned* Now the platform sports a brand new design, adapted for the modern times. It is based on *Material Design 2

    • You can now collapse panels to provide a better experience You can now display only the Viewer and the Components Tree in demos, for example
    • Selected theme will now be saved across sessions
    • Added My Account button at Account dropdown
    • Moved Language dropdown and Theme switcher to new Settings button in Account dropdown It will open a new Creator Settings dialog º- Palette now supports nested categories to better organize components Check below where components have been moved
    • Added fancy illustrations to dialogs
    • Visibility of components can now be toggled from a button in the Viewer header It depreactes the display hidden components button at the bottom
    • Added new phone's and tablet's mocks to Viewer It deprecates the tablet preview button at the bottom
    • Components Tree and Properties have been splitted We took back the App Inventor interface, with the ability to hide any of those
    • Removed Non-Visible Components panel below phone's mock This has been deprecated in favour of the next feature
    • You can now click on All Components to switch to Visible Components or to Non-Visible Components
    • New Colour Picker It has a bunch of default colors plus a HSV color selector
    • Added Project Colours These are the colours which are being used in your project, so that you can easily select them across properties and screens
    • Height and Width selectors now sport a new layout The dialog has been removed in favour of a textbox where you type a number and "px" or "%", plus two buttons to easily switch between Automatic and Fill Parent
    • Assets selectors now support previewing files You can now preview the selected file in your Property
    • Redesigned all dialogs Brand new "Create Project", "Baking your app" dialogs, and many more
    • File uploader now accepts only legal types You won't be able to upload/select a not-supported format
    • Added more properties preview to designer You will be able to preview more properties like Checked Switches, Sliders or so in the mock; and current ones have been updated
  • You can now use shortcuts to work on the Creator Check a complete list in the dialog available at the "Help" dropdown

  • Added new right-click context menu in Designer You can now copy, cut and paste components in your project, just by right-clicking on them; and much more like Paste Properties...

  • Added new Settings Dialog under My Account dropdown It will trigger themes, switch to compact layout, display experimental properties, change preferences, show keystore hashes...

Companion

  • Companion will show a dialog when an update is available It makes usage of the In-App Updates component, and it will prevent errors for having an outdated version

  • Added new Dark Theme mode to Companion Code during nights in both Creator and Companion without harming your eyes; just press the button in the top bar

New Components

  • Added new JSON component to Storage category Useful to work with Web APIs, for example image|239x142

  • Added new Keyguard Manager component to Utilities category Require the app to be unlocked using phone's security lock image|243x161

  • Added new Dynamic Card View component to Dynamic Components category Generate dynamically beautiful cards to place more dynamic components image|252x144

  • Added new Dynamic Image component to Dynamic Components category Create more images in your apps execution image|249x141

  • Added new Dynamic Space component to Dynamic Components category Use this component to increase the separation between components image|248x140

  • Added new Google Play Games component to Google category One of the most requested components will allow you to create awesome games integrated with Play image|238x204

  • Added new Kodular Donations component to Monetization>General category A new way to donate to Kodular: this component will make commission go to 100%, so all ads will be rewarded to our account image|245x160

  • Added new AdColony Interstitial component to Monetization>Advertising category Insert AdColony ads in your apps image|239x163

  • Added new AppLovin component to Monetization>Advertising category Display AppLovin interstitials in your app image|235x141

  • Added new Facebook Rewarded Video component to Monetization>Advertising category The missing Facebook Ads component allows you to reward your users by watching ads image|241x183

  • Added new StartApp Interstitial component to Monetization>Advertising category Improving StartApp integration, this component allows you to display StartApp interstitial image|243x158

  • Added new In-App Update component to Experimental category Most people will find this component really useful, as it will automatically prompt users with a dialog when an update is available on Play Store image|247x219

Moved Components

  • Moved Push Notifications component to Social category We think it was time to move it away from Experimental

  • Moved Shell component to Utilities category This component has been working properly for months, so we placed it in its appropiate category

  • Moved List View component to new Layout>Listviews category

  • Moved List View Image and Text component to new Layout>Listviews category

  • Moved Bottom Sheet component to new Layout>Views category

  • Moved Chat View component to new Layout>Views category

  • Moved View Flipper component to new Layout>Views category

  • Moved Surface View component to new Layout>Views category

  • Moved Web Viewer component to new Layout>Views category

  • Moved Bottom Navigation component to new Layout>Navigation category

  • Moved Side Menu Layout component to new Layout>Navigation category

  • Moved Tab Layout component to new Layout>Navigation category

  • Moved View Pager component to new Layout>Navigation category

  • Splitted Lego Mindstorms category into Lego Mindstorms>Lego EV3 and Lego Mindstorms>Levo NXT

  • Splitted Monetization category into Monetization>General and Monetization>Advertising

New Events

Screen

  • Got Received Shared: triggered when shared content is received image|313x104

User Interface

  • Checkbox component

    • Click: triggered only when an user interacts with a checkbox image|276x96
  • Slider component

    • Touch Down: triggered when an user touches the slider image|236x74
    • Touch Up: triggered when an user releases the slider image|221x78

Media

  • ExoPlayer component
    • Completed: triggered when the track finishes reaches the end image|257x77

Social

  • Push Notifications component
    • Send Message Done: triggered when the message has been successfully sent image|381x105

Connectivity

  • Download component
    • On Download Progress Changed: triggered when the progress of a download changes image|400x98

Google

  • Firebase Authentication component

    • Got Id Token: triggered when Firebase gets the ID Token image|362x111
    • Reset Password Email Done: raised once the email to reset password has been sent image|476x103
  • YouTube Player component

    • Initialized: triggered when the component has been loaded and it's ready image|283x84

New Methods

User Interface

  • Snackbar component
    • Is Shown: returns true when the snackbar is on the Screen image|239x46

Layout>Navigation

  • View Pager component
    • Remove All Tabs: deletes all created tabs image|296x45

Social

  • Push Notifications component
    • Send Message: sends a push notification to the subscribed users image|340x121

Utilities

  • Device Tools component
    • Is Adb Debugging Enabled: returns true when the ADB debugging mode is active Thanks to @Cian for this block image|378x47
    • Is Emulator: returns true when the app is running in an emulator Thanks to @Cian for this block image|278x44
    • Is Installed From Play Store: returns true when the app was installed from Google Play Store Thanks to @Cian for this block image|388x48
    • Has Dangerous Apk Installed: returns true when the user has apps like Lucky Pather or Xposed Installer Thanks to @Cian for this block image|388x50

Dynamic Components

  • Dynamic Button component

    • Delete Button: deletes the given generated button image|297x68
  • Dynamic Label component

    • Delete Label: deletes the given generated label image|294x70
  • Dynamic Textbox component

    • Delete Textbox: deletes the given generated textbox image|340x68

Google

  • Firebase Authentication component

    • Get Id Token: retreives from Firebase the id for the current user image|347x45
    • Phone Number Sign In: authenticates the user using the given phone number sending an OTP code image|421x70
    • Send Reset Password Email: sends an email to the user to change the password image|458x72
    • Update Phone Number: changes the user's phone number image|421x74
    • Verify Email: sends a confirmation email to verify user's email address image|340x47
    • Verify Phone Code: checks if the given OTP code is valid image|394x66
  • Firebase Remote Config component

    • Get Boolean: returns a boolean value from Firebase image|379x75
  • Google Maps component

    • Add Polyline: inserts a polyline in the map and returns its id image|301x117
    • Get All Polyline Ids: returns all available polyline ids on the map image|328x45
    • Get Points From Json: returns an object containing all points in a JSON string, which can be used in polylines image|356x65
    • Remove Polyline: deletes the given polyline from the map and returns true if it has been removed properly image|329x75
    • Update Polyline: updates the given parameter (property Name) to the given value (points) in a polyline, such as points, width and color image|306x122

Experimental

  • Shell component
    • Is System User: returns true when phone has enabled system user permissions Thanks to @Cian for this block image|244x40
    • Has Super User Apk Installed: returns true when phone has installed super user apps, even if it is not rooted Thanks to @Cian for this block image|340x45

New Properties

Screen

  • Drawer Arrow Icon Color: sets the color of the drawer's arrow image|375x47

  • Navigation Icon Color: sets the color of the drawer's icon image|351x46

  • Options Menu Icon Color: sets the color of the option's menu icon image|373x43

  • Receive Shared Files: allow receiving a type of files Enabling this feature, your app will appear in the "Share To" menu when sharing this kind of content image|281x156

User Interface

  • Floating Action Button component
    • Call Fab Click Event When Label Clicked: enables triggering the click event when clicking on the message image|342x60
    • Call Fab Click Event When Label Long Clicked: enables triggering the click event when long-clicking on the message image|331x62
    • Hide Label When Clicked: enables hidding the message when clicking on it image|332x39
    • Hide Label When Long Clicked: enables hidding the message when long-clicking on it image|335x43
    • Show Label On Left Side: shows the text message to the left of the FAB image|345x41
    • Label Background Color: sets the background color of the text message image|347x79
    • Label Corner Radius: sets the corner radius of the text message image|345x80
    • Label Text: enables and sets the text of the FAB's text message image|348x73
    • Label Text Color: sets the text color of the text message image|347x72

Layout>General

  • Card View component
    • Stroke Color: changes the stroke's color of the card image|272x66
    • Stroke Width: changes the stroke's width of the card image|272x59

Utilities

  • Device Tools component
    • Get Device Id: returns the Android ID of the device Thanks to @Cian for this block image|282x51

Monetization

  • Admob Interstitial component

    • Interstitial Commission: specifies which ad network will be used to take the commission image|270x62
  • Amazon Interstitial component

    • Interstitial Commission: specifies which ad network will be used to take the commission image|270x62
  • Facebook Interstitial component

    • Interstitial Commission: specifies which ad network will be used to take the commission image|270x62
  • Leadbolt component

    • Interstitial Commission: specifies which ad network will be used to take the commission image|270x62
    • Rewarded Video Commission: specifies which ad network will be used to take the commission image|272x62

Deprecated Blocks

Monetization>General

  • In App Billing component
    • Initialize: with the new library, it is no longer needed image|332x124
    • Update Subscription: with the new library, there is no function associated to it image|428x81

Bugs Fixed

  • Fixed security issue* with extensions Some malicious extensions were found by some users. These extensions were distributed as "remove commission from Kodular", when they actually took 100% to the extension's developer. *Apps containing this kind of extensions will fail to build.

  • Reduced by 0.2MB the APK Size

  • Only Companion should ask for write permission on start

  • Improved Crashlytics performance

 

  • Updated Play Services libraries

  • Updated Cloudinary library

  • Updated OneSignal library

  • Updated Facebook Ads libraries Currently using latest version (5.4.1)

  • Updated StartApp library

 

  • Fixed Navigation Bar show/hide visibility bug

  • Fixed In App Billing component; it was not working

  • Fixed Notifer component which had some Null Pointer Exceptions

  • ExoPlayer component supports now loading sources from external card

  • ExoPlayer component supports now loading sources from internal app data folder /storage/emulated/0/Android/data/YOUR_PACKAGE_NAME/cache/YOURFILE

  • Fixed ExoPlayer when playing something from Audio Picker selection

  • Fixed ExoPlayer component which crashed with Loop

  • Fixed ExoPlayer issue related to sound on start

  • Fixed Image component which was not asking for Read Storage permissions

  • Fixed YouTube Player issue which was not able to play videos instantly after loading them

  • Removed not needed libraries for Google Account Picker component

  • Lots of minor bugs have been fixed, improving performance

 

1.4.1 Eagle | 25 August 2019

Major Changes

  • Commissions have been lowered down a lot for a better earning rate Use this app to check your current commission

  • Reduced APK size when using ad networks without native commissions We now use Unity Ads by default, so lots of libraries have been removed

New Methods

  • Dynamic Button component
  • Get Button By Id: returns the view containing the generated dynamic button image|429x81

  • Dynamic Card View component

  • Get Card View By Id: returns the view containing the generated dynamic cardview image|498x80

  • Dynamic Image component

  • Get Image By Id: returns the view containing the generated dynamic image image|425x83

  • Dynamic Label component

  • Get Label By Id: returns the view containing the generated dynamic label image|408x78

  • Dynamic Space component

  • Get Space By Id: returns the view containing the generated dynamic space image|426x81

  • Dynamic Text Box component

  • Get Text Box By Id: returns the view containing the generated dynamic textbox image|448x81

Bugs Fixed

  • Card View stroke has been set to 0 by default

  • Share-to-own-app should only appear once on share menu

  • ArchTaskExecutor not found error has been solved

  • Facebook Rewarded Video reports getCommission on a null object reference is now fixed

  • Unity Interstitial commission was wrongly set to a higher value than real one

  • Bug in the new Commission System has been solved

  • Bug in Admob Banner which prevented them from loading is now solved

  • ExoPlayer problems with Status Changed event and status methods have been mitigated

  • Apps crashing randomly due to java.lang.RuntimeException: Unable to start activity ComponentInfo is now resolved

  • Surface View error related with face recognition reporting wrong results is fixed

  • ExoPlayer ask for permission bug has been solved

  • Player does not need permission to read internal files, so we removed it

  • WebView (and YouTube, as it's a webview) did not work properly on Android 9 Fix from MIT App Inventor Team

  • Solved issue which prevented doing right-click in inputs to copy/paste text

  • File uploads were working incorrectly in Firefox

  • The import template option has been temporarily removed You will hear more about this soon

  • Hungarian language did not have translated blocks, even though they were translated

  • The Device Id block in Device Utilities component was not returning any value

 

1.4.2 Eagle | 22 September 2019

Major Changes

  • Improved Blockly performance We've tweaked the way Blockly compiles, so your blocks will now load and run faster

  • Treated com.appybuilder.email.app_name as default package for commission This keeps commission at 0% when using the equivalent AppyBuilder package name

New Blocks

New Events

  • Added Got Value event to Push Notifications image|380x116

New Events

  • Added Get Value method to Push Notifications image|372x106

Bug Fixes

 

1.4B.0 Eagle | 03 January 2020

Major Changes

UI Changes

Companion Changes

  • Companion now occasionally shows ads which can be removed via purchase. Removal is a one-time purchase which can be made from within the app.

  • Companion now displays its full version. The full version is now shown as opposed to only the first two digits being previously displayed.

  • Support for disabling events in the Companion has been added. Support disabling events in the REPL (#1849) · mit-cml/[email protected] · GitHub

New Components

Palette components

  • New Custom Progress component in User Interface. Screen Shot 2019-12-24 at 00.07.54|250x148

  • New Grid View component in Layout > General. Screen Shot 2019-12-24 at 00.12.05|250x148

  • New Gallery View component in Layout > Views. Screen Shot 2019-12-24 at 00.09.56|250x148

  • New Hygrometer component in Sensors. Add environment sensors · mit-cml/[email protected] · GitHub Screen Shot 2019-12-24 at 00.15.16|250x168

  • New Battery Utilities component in Utilities. Screen Shot 2019-12-24 at 00.13.48|250x148

  • New Decoration component in Utilities. Screen Shot 2019-12-24 at 00.13.00|250x168

  • New Firebase Storage component in Google. Screen Shot 2019-12-24 at 00.15.44|250x128

Parity components

Parity components will not be available in the Palette and are meant only to support projects imported from AppyBuilder.

  • Spacer component.

  • Network Manager component.

  • Google Spreadsheet component.

  • Memory Info component.

New Events

User Interface

  • Web Viewer
    • New parameter “value” in the Web View String Change event of the Web Viewer component. This parameter returns the new WebViewString value, a change of which originally invoked the event. component_event|355x85

New Methods

User Interface

  • Button

    • New Set Animation Style method. Inserts an animated image inside the component. component_method|273x129
  • Date Picker

    • New Set Animation Style method. Inserts an animated image inside the component. component_method|311x129
  • Label

    • New Set Animation Style method. Inserts an animated image inside the component. component_method|265x129
  • List Picker

    • New Set Animation Style method. Inserts an animated image inside the component. component_method|302x129
  • Textbox

    • New Set Animation Style method. Inserts an animated image inside the component. component_method|289x129
  • Time Picker

    • New Set Animation Style method. Inserts an animated image inside the component. component_method|311x129

Media

  • Audio Picker

    • New Set Animation Style method. Inserts an animated image inside the component. component_method|315x129
  • Image Picker

    • New Set Animation Style method. Inserts an animated image inside the component. component_method|319x129
  • Video Picker

    • New Set Animation Style method. Inserts an animated image inside the component. component_method|315x129

Drawing and Animation

  • Canvas
    • New Draw Polygon method. Draws an n-sided polygon in the canvas. component_method|245x204

Social

  • Contact Picker

    • New Set Animation Style method. Inserts an animated image inside the component. component_method|330x129
  • Email Picker

    • New Set Animation Style method. Inserts an animated image inside the component. component_method|316x129
  • Phone Number Picker

    • New Set Animation Style method. Inserts an animated image inside the component. component_method|381x129

Connectivity

  • Network

    • New Is Wifi Connection method. Returns true if the device is currently connected to WiFi, false otherwise. component_method|275x26

    • New Is Mobile Connection method. Returns true if the device is connected to a mobile network, false otherwise. component_method|291x26

    • New Is Fast Connection method. Returns true if the current connection speed is greater than 400kb/s. component_method|279x26

    • New Is Roaming method. Returns true if using roaming; false otherwise. component_method|231x26

New Properties

User Interface

  • Notifier
    • New Linkify property. Allows disabling auto-hyperlinking of URLs and phone numbers. blocks|239x30 component_set_get|179x26, 100%

Drawing and Animation

Maps

Connectivity

Monetization > Advertising

  • Unity Ads Interstitial
    • New Placement ID property Allows for Rewarded Videos to be placed in Unity Ads. Screen Shot 2019-12-24 at 00.06.20|295x66

Sensors

Bugs Fixed

  • Issue with Status and Navigation Bar dark icons. Status Bar dark icons and Navigation Bar dark icons can now be set simultaneously.

  • Inability to enter negative and decimal numbers. The TextBox and Notifier components now accept negative and decimal numeric inputs.

  • Issue with Background Color of Card Views. Updates to backgrounds of Card View components now reflect correctly in the display.

  • Issue with File Upload Cancel event in the Web Viewer component. Apps no longer crash when this event is invoked.

  • Lottie animations do not load. The Lottie library has been updated and animations now load as expected.

  • Issue with AES 128 and AES 256 algorithms in the Cryptography component. The algorithms now return the correct encodings regardless of the length of keys used.

  • Issue with MD5 algorithm in the Cryptography component. The MD5 algorithm has been updated and now reports the correct encoding.

  • Issue with Arduino icon in Knight and Bliss themes. The icon has been updated and now better reflects the original Arduino logo.

  • Failure to invoke the Download Progress event in the Download component. The Download component now correctly reports the progress of the download.

  • AdColony library version. The component’s library has been updated to its latest version.

  • Issue with Facebook ads and Monetization approval. All apps using Facebook ads now require approval before they can be monetized.

  • Issue with exposed API keys. The exposed API keys concerned have been removed, and the Google Play Store should no longer show API key warnings on apps made with Kodular.

  • Fabric deprecation. Fabric libraries have been removed from Kodular apps. Kodular apps are now smaller in size.

  • MIT Security vulnerability. A security hole in the MIT App Inventor system has been patched up; more details will be published soon.

  • Issue with Android Oreo Web Viewer layout size. The Web Viewer now loads with the correct sizing even after the first refresh.

1.4B.1 Eagle | 04 January 2020

Major Changes

  • Changed some links pointing to old Kodular Account They now point to My Kodular

Companion Changes

  • Added new launcher icon It now sports a fancier icon in your mobile desktop

  • Fixed ads removal purchase which were not flagged as one-time We have refunded all purchases; you can buy them again

New Events

  • Firebase Storage component
    • Upload Success: added new download Url parameter

New Methods

  • Cryptography component
    • Generate AES 128 Key: creates a random secure key to use with AES-128  
    • Generate AES 256 Key: creates a random secure key to use with AES-256

Bugs Fixed

  • Fixed naming components on their creation

  • Fixed issue with Performance mode and Blocks editor

  • Fixed adaptative icons crashing using the Task Description block

  • Fixed animation issue in Button-based components and Progress Bar component

  • Fixed NullPointerException in Card View component

  • Fixed In-App Purchases component which was not making one-time purchases

1.4C.0 Eagle | 22 March 2020

Major Changes

Companion Changes

New Components

New Methods

Storage

  • SQLite component

    • New Display Tables method.
      Retrieves the list of tables' names in the database.
      component_method|243x26

    • New Drop Table method.
      Removes the given table from the database.
      component_method (1)|227x50

    • New SQL Query method.
      Executes the given raw SQL query and returns result synchronously (same block).
      component_method (2)|229x50

New Properties

Storage

  • SQLite component
    • New Rows Affected property.
      Returns the number of rows affected by the most recent operation.
      component_set_get|232x26

Bugs Fixed


Last update: March 23, 2020