Android Tutorial B4A Change Log (versions history)

v12.2 - January 23, 2023 -

  • Receivers:
  • Home screen widgets and firebase notifications updated to work with receivers.
  • StartReceiver, StartReceiverAt methods.
  • Run without ADB - when B4A-Bridge is connected, the compiler will not fail if ADB is missing or throwing an error.
  • Ctrl + Alt + W closes the current code window.
  • OBFUSCATED automatic conditional symbol - note that it is set at compilation time, never during editing.
  • Bug fixes and other minor improvements.

v12.0 - November 17, 2022 -

  • This version brings an updated Android, Google, AndroidX and Firebase SDKs.
  • Follow these instructions to update the various components:
  • Updated libraries: B4XTable v1.23, B4XPages template, FirebaseAdmob2 v3.0, FirebaseAnalytics v3.0, FirebaseAuth v3.0, FirebaseStorage v3.0, FirebaseNotifications v3.0, AppCompat v4.02, USB v1.01, BCTextEngine v1.94, Phone v2.53, GooglePlayBilling v5.0, Core v11.81, NFC v2.02, DesignerUtils v1.04, Facebook v2.01 (external library.
  • Bug fixes and minor improvements.
v11.8 - July 5, 2022 -

  • Designer script extensions:
  • This is the first 64 bit version of B4A IDE, which means that it will handle better large projects.
    It will be installed by default under Program Files\Anywhere Software\B4A.
    It will not run on 32 bit Windows. Note that the CPU architecture doesn't affect the compiled apps.
  • RUNTIME conditional symbol - an automatic symbol that is added during compilation. It can be used to exclude code from the IDE case-corrector.
  • Updated libraries: B4XPages v1.11, XUI Views v2.55, BCTextEngine v1.92, XUI v2.2, SMM v1.13.
  • New DesignerUtils (DDD) library with a new designer script framework.
  • Bug fixes and other minor improvements.

v11.5 - March 21, 2022 -
  • Optimized dexer replaced with D8 tool.
  • Support for targetSdkVersion=31.
  • New #ExcludedLib attribute that is required in some cases when multiple native libraries with different versions are referenced.
  • Updated internal libraries: OkHttp v1.50, OkHttpUtils2 v3.00, PreoptimizedCLV v1.21, Network v1.53, B4XTable v1.22, KeyValueStore v2.31, SMM v1.12, NB6 v1.02, FirebaseNotifications v2.01, B4XCollections v1.13
  • #ExcludedClasses attribute removed.
  • Bug fixes and other minor improvements.

v11.2 - December 14, 2021 -
  • Long hex literal numbers: 0xff00ff00ff00
  • New methods: Bit.OrLong / AndLong / XorLong / ShiftLeftLong / ShiftRightLong / NotLong / UnsignedShiftRightLong / ParseLong
  • Fix the "incompatible types" warning with the relatively new Json type.
  • Json.ToCompactString method.
  • Several debugger fixes: crash on startup, missed assignments in some cases, single field objects were not always observable.
  • Code editor jumps to a sub when adding an event with the designer, including when the sub already exists.
  • Fix issue with compilation of large projects.
  • More descriptive errors when a maven artifact is missing, including the artifact origin.
  • bundleconfig.json - configuration file that is used when building an AAB package, can be overridden by putting such file in the project folder (you can find the default one in the installation folder).
  • SimpleMediaManager (v1.09) is included as an internal library.
  • Updated internal libraries: B4XCollections (v1.10), B4XTable (v1.21), B4XPreferencesDialog (v1.75), XUI Views (v2.54), JSON (v1.21), BCTextEngine (v1.92), Core (v11.2), KeyValueStore (v2.31).
  • Bug fixes and other minor improvements.
v11.0 - July 13, 2021 -

This update adds two new language features: IIf and As (inline casting)

v10.9 - June 16, 2021 -
  • IDE performance - several cases where the typing speed became slow were fixed. The speed difference in those cases is significant.
  • B4A SdK Manager v4.0 - bug fixes and minor improvements. It is configured to download a specific set of Firebase libraries.
  • The additional resources package was updated. If you encounter any compilation issues, especially related to Firebase, then it is recommended to delete your current Android SDK and download a new one:
  • FirebaseAdMob is deprecated and will not work with the updated resources. Google started to reject apps with the old user consent form in some cases. Time to switch to the new FirebaseAdMob2 library:
  • New private signing keys are created with the RSA algorithm, as required by Google.
  • The app bundle feature detects the key signing algorithm and will sign with the correct one. You can explicitly set the algorithm with #SignKeyAlgorithm but in most cases it is no longer required.
  • "after packager" custom build action step.
  • The bridge indicator in the bottom left corner shows the device name.
  • Copying of labels between B4A and B4i preserves the single line property (will work when pasting in B4i once a new version of B4i is released).
  • Add existing modules dialog - option to copy module(s) to parent folder.
  • New and updated internal libraries: XUI Views (2.50), X2 (2.0), Phone (2.51), XUI (2.1), FirebaseAdMob2 (2.13), B4XPreferencesDialog (1.73), OkHttpUtils2 (2.96), B4XPages (1.09), BCTextEngine (1.87), FirebaseAuth (2.01)
  • Recommended targetSdkVersion set to 30. Warning will appear if it is 28-.
  • Bug fixes and minor improvements.

v10.7 - March 17, 2021 -
  1. New toolchain.
  2. Support for app bundles.
  3. Support for targetSdkVersion=30
v10.6 - February 11, 2021 -

  1. Latest version of each library is displayed in the libraries tab. Clicking on the version will take you to the library thread.
  2. New %PROJECT_NAME% file variable for comment links and custom build actions.
  3. Updated internal libraries: XUI Views and B4XPages.
  4. Bug fixes including a fix to a debug issue where process global variables in code modules, packed as b4xlibs, weren't initialized properly.

v10.5 - January 4, 2021 -

  1. New libraries tab.
  2. Find all references feature was rewritten. Previously it couldn't handle more complex cases, where a sub or field are called indirectly.
  3. The various IDE notifications also appear in the logs.
  4. #CustomBuildAction - direct support for jar files, including Java 11+ UI jars.
  5. Default manifest updated. This allows resetting the manifest by removing the manifest text and saving.
  6. Dexer optimization can be disabled through the ini file.
  7. Updated or new internal libraries: XUI, XUI Views, B4XDrawer, BCTextEngine, OkHttpUtils2, GooglePlayBilling, KeyValueStore, B4XPages template, GooglePlayBIlling and FileProvider.
  8. Bug fixes and other minor improvements. This includes a long-standing bug where the wrong context was used after a resumed sleep in some edge cases (fix is relevant to B4XPages).

v10.2 - September 15, 2020 -

  • B4ASdkManager updated to support latest version of Android SDK command line tools.
  • Firebase libraries updated to support latest version of Firebase SDK.
  • OkHttp updated based on OkHttp 3.12.12.
  • Support for latest version of Crashlytics. Previous version will stop tracking crashes on November 2020:
  • B4X version of KeyValueStore added as an internal library.
  • Internal libraries updated: B4XPages, B4XDrawer, B4XCollections, XUI Views and BCTextEngine.
  • Deprecated libraries removed: CustomListView (replaced with xCustomListView), Http and HttpUtils2 (replaced with OkHttp and OkHttpUtils2).
  • B4XPages template updated.
  • IDE performance improvements related to projects which use many b4xlibs.
  • New indicators to help understand the code flow with resumable subs.

v10.0 - July 15, 2020 -

v9.90 - June 15, 2020 -

  • B4XPages - Cross platform and simple framework for managing multiple pages
  • Add new module - Option to add the new module to the parent folder. This is useful in cross platform projects where the modules are shared between the different platforms.
  • Fix for a design issue that existed since B4A v1.0 where in some cases assignment of an object to a variable can also change other variables that point to the same "wrapper".
  • New warning:
    "Comparison of Object to other types will fail if exact types do not match.
    Better to put the object on the right side of the comparison. (warning #35)"
    See this post for more information:
  • Support for Java 14 (must use the one downloaded from B4X).
  • Fix for empty description windows in some cases.
  • Several debugger fixes.
  • New "contribute" menu item.
  • Current selected line, in the search results and other syntax colored lists, is displayed.
  • New internal libraries: B4XPages, B4XTurtle, BCTextEngine, B4XPreferencesDialog, PreoptimizedCLV, X2, @agraham's Gestures, @corwin42's AppCompat, NB6 and B4XDrawer.
  • Network v1.52 - UDPSocket.GetBroadcastAddress method.
  • The code editor cursor color can be changed in the INI file. It uses the same 0xAABBGGRR format as in the theme files (CursorColor=0x000000FF).
  • Template of XUI custom views was updated. The convention explained here is implemented:
  • Fix for compilation error when compiling projects with many modules.
  • Latest versions of all internal libraries are included.Other bug fixes and minor IDE improvements.

v9.80 - January 29, 2020 -

  • Find all references, quick search and find subs / modules tool windows were rewritten and are now syntax colored, the text is selectable and you can jump directly to the selected position.
  • Subs code appears in the quick info windows.
    This code is also selectable and clickable.
  • Show Sub in window.
    Allows showing subs in a floating windows. The text is selectable and clickable.
    This can be triggered from all kinds of places including.
  • Positions and layouts of all windows are preserved.
  • Search results font can be configured from Tools - IDE Options - Font Picker.
  • IDE shows available updates.
  • Recommended targetSdkVersion is set to 28.
  • Alpha value of text colors can be set in the designer.
  • Fix for a crash related to B4XView.Color with Android 10 and targetSdkVersion >= 29.
  • Better handling of errors in the IDE.
  • Deprecation warnings for modal Msgbox.
  • Animation to zero size no longer causes an exception in new versions of Android.
  • Starter service subs can be accessed directly without using CallSub.
  • Warning and errors do not hide other information
  • Copy warnings from list of warnings.
  • Generate 'Create Type' Sub.
  • Copy events.
  • Modules list is saved in lexicographic order to avoid unexpected changes with source control tools.
  • Resources in implicitly referenced b4x libs are now accessible.
  • Other minor improvements and bug fixes.

v9.50 - September 11, 2019 -

Developers who are eligible for a free upgrade will receive an email with installation instructions. Other developers will receive a discount offer.

Note that B4J v7.80 was released as well:

v9.30 - July 8, 2019 -

I'm happy to release B4A v9.30. This update adds support for the new AndroidX SDK.

AndroidX SDK replaces the Android Support Library SDK. Android Support Library is no longer maintained and new resources such as the latest versions of Firebase libraries depend on AndroidX.

With B4A v9.30 you can continue to use the old Android Support Library or switch to AndroidX. Switching to AndroidX is simple:

  • Support for AndroidX SDK.
  • Jetifier tool that creates AndroidX versions of libraries. Note that this step isn't needed for most libraries.
  • Auto bookmarks feature:

    • Recent code positions and designer layouts appear as tabs in the window title.
    • The IDE decides on the list of tabs based on several factors (recency, modifications and others).
    • The list is saved together with the project and restored when the project is loaded.
  • Ctrl + Click on layout files from the code.
  • B4A Sdk Manager v3.50 is included. It supports AndroidX resources.
  • Issue with BaseFolder in command line builder fixed.
  • Latest versions of internal libraries are included. TabStripViewPager is an internal library now.
  • Bug fixes and other minor improvements.

v9.01 - April 17, 2019 -

This is a small update that includes support for Java 11 and bug fixes related to the performance optimizations added in v9.00.

v9.00 - March 26, 2019 -

  • Compilation performance (about 2 times faster for first compilation and up to 4 times faster on following compilations).
  • Bookmarks and breakpoints are listed in the modules tree:
  • Auto backup improvements:
    • Project is saved before backup, based on the auto save option.
    • Project name added to the backup file.
    • The project folder is configurable (AutoBackupFolder in the ini file).
  • Warning for unused parameters in private, non-event, subs.
  • Additional library folder can be configured with a B4X folder for cross platform libraries:
  • #Event declarations appear in the autocomplete list.
  • Fix for a long standing issue that caused scope changes of global variables to not always be detected.
  • Workaround for Android issue ( that caused services to fail to start in some edge cases. This is based on the automatic foreground mode feature.
  • Copy to clipboard option in the permissions dialog.
  • Missing maven resources can be added to the internal or additional libraries folders.
  • added as an internal library. This is a missing maven resource that required by Firebase libraries.
  • B4XCollections, B4XFormatter, B4XTable, XML2Map and XUI Views are internal libraries.
  • Foreground services permission is added automatically. Required when setting targetSdkVersion to 28.
  • CreateResourceFromFile(Macro, Core.NetworkClearText) - Required when setting targetSdkVersion to 28 when communicating with non-SSL servers.
  • Application.Icon works with adaptive icons.
  • FirebaseAdMob v1.54 - Fixes an issue related to targetSdkVersion 28. ReceveAd event is raised when the activity resumes (if it fired while the activity was paused).
  • Files are listed in the removal dialog.
  • OkHttpUtils2 v2.81 - Includes a call to Service.StopAutomaticForeground (related to the workaround discussed above).
  • Other bug fixes and minor improvements.

v8.80 - December 31, 2018 -

v8.50 - September 13, 2018 -
  • Debugger performance optimizations and bug fixes.
  • #CustomBuildAction:
    • Support in all modules.
    • Support for environment variables.
    • New "folders ready" cross platform compilation step. Useful for updating files.
  • The list of subs above the code editor was rewritten. It behaves better (doesn't miss key inputs and always jumps to the clicked sub).
  • file:// links can be ctrl + clicked.
  • B4A Sdk Manager v3.29 included.
  • BitmapCreator v4.18
  • XUI2D v0.99
  • OkHttpUtils2 v2.70
  • The WRITE_EXTERNAL_STORAGE permission removed from the debugger.
  • Code editor jumps to the error line when there are Java compilation errors.
  • Bug fixes.
Last edited:


B4X founder
Staff member
Licensed User
Longtime User
v8.30 - June 12, 2018:

  • Resumable subs in debug mode are optimized in the same way other subs are optimized. You can see the difference in this video:
  • Starter service is never destroyed until the process is killed - if you carefully read the automatic foreground notifications tutorial then you should be aware to a significant behavioral change in Android 8+. The OS kills services while the app is in the background. In previous versions the OS never killed specific services (only the complete process). This change made it much more difficult to work with the starter service as you could no longer assume that the starter service is running.
    Starting from B4A v8.3 the starter service will never be paused until the process is killed. Internally it switches from the service context to the application context.
  • Several other important debugger optimizations.
  • Bit.ArrayCopy method. Same as ByteConverter.ArrayCopy.
  • New File methods: CopyAsync, Copy2Async, ReadBytes, WriteBytes and ListFilesAsync.
  • Support for Java 8 jars and AARs.
  • Ctrl + Click on class types and custom types.
  • Autocomplete improvements.
  • Autocomplete in CallSub methods:


  • B4A Sdk Manager v3.27 - Supports Java 10.
  • Files can be added to groups directly.
  • For loops optimization (in release mode).
  • BitmapCreator v3.60 is included as an internal library.
  • xCustomListView v1.63 is included as an internal library.
  • XUI v1.70 is included as an internal library. This is a large update to XUI library with support for text measurements and other features.


  • Phone.ShellAsync - Asynchronous version of Phone.Shell.
  • Bug fixes and other minor improvements.

v8.00 - March 20, 2018:

I'm very happy to release B4A v8.0. This update includes many important improvements and makes it simpler to target the latest versions of Android.


(image source:

As explained in this tutorial, all apps will soon need to target sdk version 26 (Android 8). This is a new policy of Google and it has many consequences for app developers. Many of the improvements in B4A v8.0 help developers with this task.

  • The process of starting the app from the background was rewritten to comply with targetSdkVersion 26 requirements.
  • Push notifications and other features that cause apps to start from the background should be more reliable due to changes in the way services are started. A wake lock is automatically held when a receiver receives an intent. The wake lock is released when the service starts.
  • Automatic foreground mode:
  • Notification object rewritten to work with targetSdkVersion 26. In most cases you don't need to change anything. Notification.SetInfo or Notification.SetInfo2 should be the last calls before you show the notification.
  • Notification.SetInfo / SetInfo2 accept CharSequences so it can work with CSBuilder.
  • StartServiceAt / StartServiceAtExact rewritten to work with targetSdkVersion 26 and they are now more reliable.
  • Notification.Initialize2 - Allows to set the notification channel importance level.
  • Better support for AAR libraries: jni folders (native libraries) are handled properly, assets and resources from internal jars are added to the project.
  • #AdditionalJar with ReferenceOnly - Allows referencing jars that are only used as a reference during compilation. This is required for more complex libraries such as DJI library.
  • Signing key size is explicitly set to avoid issues with newer versions of Java.
  • B4A Sdk Manager v3.25 - Bug fixes and support for Google based AVDs.
  • Screenshot tool modified to work with latest versions of Android SDK.
  • MediaPlayer.IsInitialzied method.
  • Manifest editor macros - Macros can be added to libraries or zip files. For example to set a light theme based on Android version:
    CreateResourceFromFile(Macro, Themes.LightTheme)
    Unless you are setting a custom theme then it is recommended to use either Themes.LightTheme or Themes.DarkTheme.

    Firebase push notifications:
    CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)
    CreateResourceFromFile(Macro, FirebaseAnalytics.Firebase)
    CreateResourceFromFile(Macro, FirebaseNotifications.FirebaseNotifications)

  • Custom class templates - Class templates can be added to libraries.
    For example if you add the XUI library to your project then you will have an option to add a custom view based on XUI:


    Libraries can include multiple templates and any library can include templates.
  • #SignKeyAlias attribute - Allows overriding the default signing key alias.
  • Firebase, xCustomListView and KeyValueStore (2) are internal libraries.
  • Libraries deprecation messages in the IDE:


  • Fix for a very long standing issue where the activity code could have been executed while the activity is paused which leads to a hard to reproduce NullPointerException.
  • BADoclet (tool to generate libraries XML) v1.07 - adds support for custom class templates.
  • Other bug fixes and minor improvements.

Backward compatibility notes
  • Notification.SetInfo or SetInfo2 should be the last calls before you use the notification. Note that standard notifications created with previous versions of B4A will not work at all on Android 8+ when targetSdkVersion is 26+.
  • Adding a service, other than the Starter service, will add the WAKE_LOCK permission. This is a non-dangerous permission.
    As mentioned above a wake lock is held automatically when a service is started from the background and until Service_Start is called. You can remove this permission with:
    Everything will still work, however the service might fail to start from the background in some cases.

v7.80 - December 20, 2017:

Several important components were rewritten to provide more features and better performance:
  • Visual designer properties grid
  • Visual designer views tree
  • Modules tree (new component)
  • Files tree
The major improvements are:
  • Code modules can be loaded from other folders and can be easily shared between projects (including projects targeting other platforms):
  • Modules and file tree support grouping:


  • Modules are monitored for external changes.
  • Files tree shows the files icons and allows opening the files with external editors:


  • Modules, files and views can be renamed directly from the relevant tree.
  • Full support for drag and dropping files and modules, including support for dragging multiple items.
  • B4A services and activities can be shared with B4J.
  • New options when adding modules:


    Copy to folder: Copies the module to the project folder (same as the current behavior).
    Link - relative path: Adds a link to the module with a relative path. Useful when the folder is under or close to the project folder.
    Link - absolute path: Adds a link to the module with an absolute path.

  • Deleted files are moved to the recycle bin.
  • Properties grid and views tree can be filtered.
  • Properties grid is much faster and includes new types of editors:



  • B4A Sdk Manager is included in the IDE:


  • Support for downloading maven resources from Google online repositories. This is an important improvement as Google no longer updates the offline repositories.
  • Java 9 is supported.
  • WebView.ZoomEnabled hides or shows the zoom controls.
  • Better error handling in CallSub calls.
  • Fix for potential race condition in AsyncStreams.
  • Better handling of edge cases where the Activity life cycle events are called multiple times.
  • CallSubDelayed doesn't raise an error if the target sub is missing. This makes it safer to use CallSubDelayed for raising events,
  • Better support for version control. Files are only written when the contents are actually changed.
  • The modules internal attributes are sorted in lexicographical order to reduce random changes.
  • XUI library is now an internal library.
  • Debugger hover window is resizable.
  • Add New Modules / Existing modules menu items in modules tree.
  • Code editor color picker is based on the designer color picker.
  • Open file with default program in Files tree. Also works with double click.
  • Support for opening multiple files at once.
  • Better handling of locked files.
  • Manifest editor replacements are applied to resources created with CreateResource.
  • Bug fixes and other minor improvements.

v7.30 - August 21, 2017:

  • Localizable IDE. Currently available in 23 languages.
  • Bitmap type:
  • New ResumableSub type. Makes it simple to return values from resumable subs and to wait for resumable subs to complete.
  • EditText - SelectionLength and SetSelection methods.
  • SingleLine property added to Label, Button and other views that inherit from Label.
  • Ellipsize property:


  • View.SetVisibleAnimated affects the alpha level and the Visible property.
  • Warnings for illegal methods in Process_Globals.
  • Async dialogs are supported in classes.
  • Compiled libraries can reference AAR libraries.
  • Icon picker - aliases added to FontAwesome icons.
  • Auto complete and auto format improvements.
  • PhoneCalls (Phone library) - READ_CALL_LOG permission removed. It was added by mistake in a previous update.
  • Canvas.AntiAlias property to enable or disable antialiasing.
  • View.SetBackgroundImage returns a BitmapDrawable object. This allows changing the Gravity to CENTER instead of the default FILL value.
    'load a background image while maintaining its aspect ratio.
    Dim bd As BitmapDrawable = Activity.SetBackgroundImage(LoadBitmapResize(File.DirAssets, "bg.png", Activity.Width, Activity.Height, True))
    bd.Gravity = Gravity.CENTER
  • OkHttpUtils v2.61 - Job.GetBitmapResize and PATCH, HEAD and DELETE requests.
  • Improvements to the layouts loader engine. It is more flexible with the variables types and a bit faster. This feature will allow to add cross platform views types.
  • Administrator v1.10 - Adds support for owner apps. This update requires a change in the manifest editor. Instructions and copy of previous version are available here:
  • Bug fixes, including an important debugger bug, and other minor improvements.

v7.00 - May 24, 2017:

This update includes the new resumable subs feature. This is the most important programing language improvement since the addition of classes in B4A v2.
It makes it much simpler to manage asynchronous tasks.

Quoting @johndb :
This version sure does clean up the code without jumping from sub to sub to sub to ... to handle asynchronous processing in a very clean manner. This and the previous "multi-dex" features in my opinion are game changers for B4X.


- B4A compiled libraries with service modules need to be recompiled.
- Java 8 is required (Tools - Configure Paths).

v6.80 - March 1, 2017:

  • CharSequence as internal type. Allows showing rich text in many places such as: Labels, toast messages, dialogs, ListView and others.


  • CSBuilder - Simplifies the creation of rich text CharSequences:
  • Support for MultiDex - With MultiDex enabled there is no limit to the number of methods or fields. This issue is important for large projects that reference many third party libraries.
  • OkHttp updated and is now based on OkHttp v3.50.
  • Many improvements to B4A-Bridge:

    • Auto discovery - Devices running B4A-Bridge are discovered automatically and are listed in the devices list with their names.
    • Logs - The logs implementation was rewritten. Logs reading with B4A-Bridge is more stable and it is also possible to read the unfiltered logs (limited to the running process).
    • #BridgeLogger attribute - When set to true, logs will be available in release mode as well as debug mode.
    • Landscape layout.
    • Download progress bar.
    • File Explorer menu shortcut.
  • Find all references (F7) finds references in layout files and CallSub methods.
  • Typeface.FONTAWESOME / MATERIALICONS constants.
  • Icon picker - Filter field and icons tool tips:


  • CallSubUtils is included as a library.
  • Menu click event implementation changed to avoid issues with modal dialogs.
  • Release and Debug compilation symbols are supported in the manifest editor and designer script.
  • Export as zip keeps the original dates.
  • Other minor improvements and bug fixes.
1. Make sure to update to B4A-Bridge v2.30+:
2. If you are using the Dialogs library then you need to update to v2.94:

v6.50 -
December 12, 2016:
FontAwesome and Material Icons fonts with more than 1500 icons are now integrated in the IDE:


You can see more information here:

- New auto format feature:


The formatting happens when you paste code (can be disabled) or when clicking on Alt + F. In the later case the enclosing sub will be formatted or the selected code if the selected text is not empty.

Other improvements:

  • Block autocomplete improved. It better handles nested blocks and also completes #If and #Region keywords.
  • Manifest editor support for #Region blocks.
  • Service can extend custom classes with the #Extends attribute. This makes it simpler to create libraries that extend services. A modified version of NotificationListener library is attached as an example.
  • View.Padding property. Sets the distances between the view's borders and the content. It can also be set in the designer.


  • PhoneSensors.Accuracy and TimeStamp properties. Return the values of the current event.
  • OkHttp v1.02 - Fixes an issue where headers were not available when the response status code was not 2xx.
  • Application.Icon property - Returns the application icon as a bitmap.
  • Jumping to a bookmark moves the bookmark to the center of the editor.
  • B4ABuilder - The output parameter supports passing the full path instead of just the APK name.
    Note that you need to quote the parameter like this if there is space in the path:
    B4ABuilder -task=Build "-output=C:\APK Folder\MyApp.apk"
  • Bug fixes and other minor improvements.

There were changes in the layout files format. Layouts saved in v6.50 cannot be loaded in previous versions of B4A.

v6.31 - November 1, 2016:
  • Minor update with bug fixes.
v6.30 - September 21, 2016:

There are many IDE related improvements in this update.
  • The docking and layout features are based on a new and improved framework. Floating code editors behave as regular windows.
  • Documentation tool tips while hovering over code elements:

    View attachment 48045

  • Copy links in the tool tips that allow copying code examples.
  • Support for bookmarks:


  • New themes.
  • URLs in comments and strings are ctrl-clickable.
  • Class and module level documentation (taken from Process_Globals or Class_Globals subs).
  • Quick search shows a list of recent searches.
  • Designer uses the multiline text editor for text properties.
  • Unused libraries warning.
  • Debugger related improvements.
  • Custom views support "nullable colors". The default value of such fields looks like:


    This is an important feature as in many cases it is better not to set any color and use the system default.
  • Rect.Width and Height properties.
  • Service_TaskRemoved event added to the Starter service. This event is raised when the user closes the app from the recent apps list. This is an Android 4+ event.
  • FloatLabeledEditText - Text and hint colors can be set in the designer.
  • Regex.Replace / Replace2 - Regular expression replacement.
  • (Java) The Tag property is set when calling CustomView.replaceBaseWithView2 (replaceBaseWithView is deprecated).
  • _onkeydown and _onkeyup inline Java hooks.
  • Other bug fixes and minor improvements.

- June 20, 2016:

New features and improvements:
This version is backwards compatible with older versions of B4A.
It is recommended to switch from referencing the complete google play services to referencing the required features. Overall it is simpler as the #AdditionalRes and #ExcludeClasses are no longer required.
Google Maps:

Android SDK repositories should be installed:

- February 22, 2016 -

  • Custom views: [B4X] Custom Views with Enhanced Designer Support
    With this feature it is much easier to add and configure custom views.
  • #ExcludeClasses:
    This attribute makes it simple to exclude classes not required from libraries such as google play services.
  • CreateResource manifest editor keyword:
    Allows creating XML resource files from the manifest editor.
    For example with this code we can use the native light theme based on the Android version:
    SetApplicationAttribute(android:theme, "@style/LightTheme")
    CreateResource(values-v20, theme.xml,
      name="LightTheme" parent="@android:style/Theme.Material.Light">
    CreateResource(values-v14, theme.xml,
      name="LightTheme" parent="@android:style/Theme.Holo.Light">

  • Debugger improvements and fixes. Mostly related to larger projects.
  • Coarse location permission added to BluetoothAdmin. Required for discovery in Android 6.
  • The default setting of the holo theme in the manifest editor was removed.
    It is recommended to use a custom theme or the device default theme.
    The compiler will issue a warning about explicit usage of the holo.theme.
  • The WYSIWYG designer defaults to material theme on Android 5+.
  • The READ_LOGS permission was removed from LogCat object. It is not useful since Android 4.1.
  • The compiler will issue a warning if the targetSdkVersion is missing or if the value is not between 14 to 22.
  • ViewsEx library - Includes two views implemented as custom views (Switch and RatingBar). The source code of this library is available in the custom views tutorial.
  • View.Parent - Returns the view's parent.
  • OkHttp and OkHttpUtils2 libraries are included.
  • Other minor IDE improvements and bug fixes.

v5.50 -
November 11, 2015 -

Advanced optimizations were made to the debugger which make the debugger significantly faster.
Complete features list:
  • Debugger improvements.
  • Better handling of uncaught exceptions (Application_Error). See this tutorial:
    Uncaught Exceptions
    This feature allows developers to provide alternative ways to handle crashes. For example, to send the crash logs by mail.
  • Material themes were added to the WYSIWYG designer.


  • Panel.Elevation / SetElevationAnimated methods (and designer property) - These methods allow setting the panels elevation. This is a new feature added in Android 5. The methods will do nothing on prior versions. See the following video:

  • #DebuggerDisableOptimizations attribute:
  • $AdditionalLibs$ and $AndroidSDK$ shortcuts. These shortcuts can be used in the #AdditionalRes path. They will replaced with the full path to the additional libraries folder or Android SDK folder.
  • Buttons text is no longer upper cased when the material theme is used.
  • Bug fixes and other minor improvements.

v5.20 -
August 25, 2015 -
  • Starter Service: Starter Service - Consistent & Single Entry Point
  • Blocks completion:
  • The backwards / forward navigation feature was improved and there is a new list with the recent locations (Alt + N).
  • The Logs font can be changed.
  • Sub names are bold.
  • RingtoneManager.Play method.
  • New Designer navigation pad.
  • Warnings engine improved.
  • #SignKeyFile / SignKeyPassword attributes. Allow using a different signing key based on the build configuration.
  • Colors list in the designer color picker.
  • Bug fixes and other minor improvements.

v5.00 - June 8, 2015 -

  • New IDE with many improvements.

v4.30 - February 10, 2015

v4.00 -
December 11, 2014
  • Rapid debugger memory handling was rewritten to provide better performance and to avoid memory leaks.
  • 5 new View methods: SetLayoutAnimated, SetVisibleAnimated, SetColorAnimated, SetTextColorAnimated and SetTextSizeAnimated. With these methods it is very simple to add nice animations effects to your app.
    See this thread for more information: Simple animations in B4A v4.00
  • Designer animations - Layouts added with the designer are (optionally) animated.
  • Support for constants: Dim Const x As Int = 2.
    Constant variables are assigned when declared. Their value cannot be later changed (enforced by the compiler).
  • Screen video capture - Requires Android 4.4+. Very useful for demonstrations.
  • Activity_ActionBarHomeClick event - Handles the action bar icon click event. This event replaces the event from StdActionBar library which doesn't work on Android 5 devices.
  • Better handling of the internal message queue on Android 5 devices.
  • Visual designer supports custom fonts.
  • Visual designer supports adding borders to views that use ColorDrawable. Borders can also be added with ColorDrawable.Initialize2.


  • New Application object with the following properties:
    • LabelName
    • VersionName
    • VersionCode
    • PackageName
  • Activity.DisableAccessibility - Workaround for this Android bug:
  • IsDevTool keyword - Useful when reusing code with B4J / B4i.
  • Designer - Select all files option.
  • Designer - Double click on view's name to add to the script.
  • Libraries list - Checked libraries are listed at the top of the list.
  • Duplicate line shortcut - Ctrl + D.
  • AutoComplete shortcut - Ctrl + \ (same as Ctrl + Space).
  • Hide other modules option when right clicking on the module header.
  • Clear logs when program starts option.
  • 3 new warnings related to the manifest editor:
    • No android:targetSdkVersion.
    • targetSdkVersion is lower than 20 and no theme is explicitly set.
    • AndroidManifest.xml is read only
  • New logo.
  • CurrentStatement and breakpoints colors are configurable in the xml file.
  • B4A-Bridge was updated with several fixes and the PHONE_READ_STATE permission was removed (it was used in the past to show the device id).
  • Bug fixes.

v3.82 -
July 3, 2014

  • Support for Android L (preview version).
  • Support for the files structure of latest Android SDK.
  • Sender keyword - correctly manages events from multiple threads.
  • Optimized dexer supports Java 7 classes. This is required in order to compile apps with the latest Google Play Services version.
  • Rapid debugger - several bug fixes and improvements to error reports.

v3.80 -
May 18, 2014

    • #AdditionalJar attribute - Allows adding jar files to the compilation. Together with JavaObject library it is now possible to use 3rd party libraries without a wrapper (not in all cases).
    • Project meta file - This file stores "dynamic" project state: modules visibility and order, collapsed nodes, bookmarks and breakpoints. This file should be excluded from source controls.
    • Bit.InputStreamToBytes - Reads all the data from an input stream and returns an array of bytes with the data. The input stream is closed automatically.
    • JSON generator supports arrays as well as lists.
    • CreateMap keyword - A shorthand method for creating and filling Maps. For example:
      Dim m1 AsMap = CreateMap("Key1": 10, "Key2": 20)
    • Array keyword - The type can be omitted. In that case the array type will be Object. The Array keyword now supports creating empty arrays.
    • Spinner.DropDownBackgroundColor property
    • Debugger can optionally show hexadecimal values.
    • Auto complete for layouts and assets files:

    • Libraries filter box:

    • Add existing modules supports multiple selection.
    • New configurable color: ToolTipDefaultText (color of non-code tool tips text)
    • Other minor improvements and bug fixes.

Basic4android v3.50 -
March 10, 2014

  • Rapid debugger runtime performance is now close to non-debugged applications.
  • Watch Expressions feature (see screenshot above).
  • The rapid debuggers uses a virtual assets folder. This makes it possible to redeploy only the modified files. This feature makes deployments of large projects with many files much faster.
  • Visual designer - Views tree performance is significantly better. Views preserve their names when pasting views between layouts.
  • #AdditionalRes attribute can be used multiple times.
  • ScrollView.ScrollToNow method (available in HorizontalScrollView as well). Immediately scrolls the ScrollView to the new position.
  • Quick Search tool (Ctrl + I) - An index based search tool for quick searching (in all modules):

  • Regions were added to the Find Sub (Ctrl + E) tool.
  • New attributes: #DebuggerForceFullDeployment and #DebuggerForceStandardAssets.
  • Other minor improvements and bug fixes.
Basic4android v3.20 - January 13, 2014

  • Visual designer
    • Anchors feature - makes it easier to target multiple screen sizes. See this short video.
    • Copy & paste - work both inside the layout or between different layouts.
    • Undo / redo feature.
    • The views are organized in a tree for easier navigation.
    • AutoScaleAll keyword now works with all variants, not just the "standard" variant.
    • Colors fields can be copied and the colors values can be pasted or directly typed.
    • Designer script find / replace dialog.
    • The grid is saved in the layout file.
    • Landscape / Portrait designer keywords to test the current orientation.
    • UI Cloud threshold reduced to 10 seconds.
  • #AdditionalRes attribute - Makes it possible to wrap Android library projects (projects with resources). See this example: jfeinstein10 SlidingMenu library
  • Sync button in the Files tab - Syncs the project files with the Files folder.
  • Modules added to the Find Sub / Module tool (Ctrl + E).
  • Tabs order in the IDE is preserved.
  • Modules files that were not modified will not be saved thus preserving the correct time stamp.
  • DateTime.SetTimeZone now accepts a Double instead of Int.
  • Shortcuts: F11 - Restart (rapid debugger), F2 in the designer connects to the device.
  • JavaObject v1.00 - new RunMethodJO / GetFieldJO methods.
  • Bug fixes and other minor improvements.
Basic4android v3.00 - October 13, 2013

  • Rapid Debugger - Powerful debugger, hot code swapping, quick deployment and more.
  • Better support for large number of background tasks. This update (together with an update to the Http library) allows you to send hundreds of requests at once.
  • B4A-Bridge - Last 5 IP addresses are stored. F2 connects to the last one. Some other small improvements in the connection process.
  • For loop performance improvement.
  • Activity / Panel.GetAllViewsRecursive. Provides a simple way to iterate over all views.
  • Color picker. Right click in the code editor to show it.
  • List.SortTypeCaseInsensitive method.
  • PhoneSms.Send2 - send sms without notifications.
  • Screenshots tool - Copy to clipboard.
  • Spinner.DropDownTextColor property.
  • Compilation window closes automatically when it loses focus.
  • Bug fixes and other minor improvements (including the fix for Android 4.3 back key issue and the IDE scrolling issue).

Basic4android v2.70 - May 12, 2013
  • Compiler warnings - A new warning engine that helps finding common errors as soon as possible.
  • Custom views with designer support - Developers can create custom views (with classes or libraries) that can be added with the visual designer. This feature makes it possible to build the complete layout with the designer and designer scripts.
  • Classes properties - a long-awaited feature.
  • Bitmaps handling improved - LoadBitmap / LoadBitmapSample internally handle out of memory errors by down-scaling the image. The visual designer loads images based on the target size to preserve memory.
  • DateTime.ListenToExternalTimeChanges - raises an event when the device time is set or when the time zone changes (and updates the internal time zone used).
  • CallSub keyword improvements:
    Returns Object instead of String.
    Sender is set when calling from a class. This is useful for events implementation.
    Significant performance improvements when calling subs in classes.
    No error is raised if the target sub is not found when calling from a class. This is useful for events implementation.​
  • #LibraryName attribute. Sets the compiled library name.
  • Libraries dependencies resolver was improved and it can now handle cases such as described here.
  • Logs are colored based on the message type.
  • LogColor keyword - Similar to Log. The message will be displayed in the IDE with the specified color.
  • Screenshot tool improved.
  • HttpUtils2 and DateUtils are now included as libraries in the IDE.
  • Bug fixes and other minor improvements (including "run last deployment" feature).
Basic4android v2.50

Performance improvements

  • Compilation time in debug mode is similar to compilation in release mode.
  • Many performance and memory related improvements in the IDE. The IDE should be much more responsive (some of the improvements will only be applied after you first save the project with the new version).
New features
  • Compile to library. This feature allows you to reuse components and break large projects into smaller projects.
  • Module attributes.
  • Custom build actions - See the attributes tutorial.
  • Native support for Google maps (requires Android 3+).
  • Sign key signatures are displayed in the key dialog.
  • List Permissions button in compilation window - Lists the permissions and the objects that added them.
  • Quotes in string literals - Double quotes in string literals will be treated as a single quote:
    Log("Hello ""world""") 'Will log: Hello "World"
  • RemovePermission keyword in the manifest editor.
  • DateTime.DateTimeParse keyword - Combination of DateParse and TimeParse.
  • SQL - Asynchronous queries and asynchronous batch inserts.
  • Contacts2.GetContactsAsync - Asynchronously retrieve contacts information.
  • Accessibility library.
  • Bug fixes and other minor improvements.

Basic4android v2.30

This version gives access to the new UI Cloud service.

This service will make it much simpler to test how your user interface scales on different types of devices.

New features:
  • Basic4android UI Cloud
  • Designer script supports conditions (If blocks)
  • Designer script - ActivitySize keyword - returns the approximate size of the activity measured in inches
  • 7" tablet default layout values changed to match the Nexus 7 values
  • AutoScale scales Spinner text size
  • GPS library - NMEA event

Link - basic4android-v2-30-released.html

Basic4android v2.20

This version includes the following improvements:
  • For Each blocks
  • Declaration and assignment in the same statement - Two new language features in the next version
  • B4A-Bridge - many stability improvements related to both Bluetooth mode and wireless mode
  • B4A-Bridge supports logging on all devices including Android 4.1+. Requires B4A-Bridge 2.07
  • Menu items will now appear in the action bar on Android 3.0+ devices
  • Default target level set to 14
  • WYSIWYG designer uses device default theme. Supports changing themes: New feature: better support for modern Android themes
  • Designer includes a new color value: DEFAULT. The meaning of this value is that the theme default color will be used.
  • Designer script new keywords make it easier to build user interfaces that scale correctly on all phones and tablets: Min, Max, AutoScale, AutoScaleAll and AutoScaleRate: New feature: AutoScale and other new designer script keywords
  • Optimized designer layout files - loading time is 3 - 4 times faster
  • MediaPlayer can play files from File.DirInternal
  • Map.Keys / Values - allows iterating over map entries with For Each
  • Panel / Activity.RemoveAllViews
  • LayoutValues.ApproximateScreenSize - returns the approximate device physical screen size
  • Sign key alias key can be changed (requires editing the settings file)
  • Activity/Panel.LoadLayout can now be used from classes
  • Camera_Preview event

Many bugs were fixed including:
  • Recycle error in ListView_ItemClick event
  • TabHost.AddTabWithIcon / AddTab - correctly calculate the width and height
  • Code documentation should be updated almost immediately
  • Upper casing of single letter variables
  • Memory leak when opening large projects
  • Non activity classes can call code modules
  • WYSIWYG Designer and B4A-Bridge listen to an alternative port if the main one is already bound.
  • Fixed debugger error related to complex objects with circular references

  • Layout files saved in the new version cannot be loaded on older versions of the IDE - It is therefore recommended to backup existing projects before loading them in the new version.
  • Libraries in the internal libraries folder have first priority (changed from previous versions)
  • B4A.xml file was updated. If you are using a custom color scheme then you can copy the relevant section to the new file.
Link - basic4android-v2-20-released

Basic4android v2.02

This version fixes several issues related to CallSub and CallSubDelayed keywords.

Basic4android v2.00

The major new feature is support for class modules. With support for classes Basic4android now allows you to write both procedural code and object oriented code.
Object oriented code makes it easier to write and maintain large projects.

Basic4android v2.00 improvements:

- Classes
- Public and Private access modifiers
- Built-in documentation
- Better handling of tasks in the internal thread pool
- CallSubDelayed keywords - These keywords significantly simplify the interaction between services and activities.
- Building process improved and it now supports libraries with embedded resources (such as PayPal, Zooz, Samsung Pen and others).
- Bug fixes and other minor improvements.

Note that B4A.xml was modified in this version. The highlighting styles section was not modified.
The Reflection library was updated to support the new version internal changes.

Link - basic4android-v2-00-released.html

Basic4android v1.92

This update fixes the following issues:
- DoEvents / Msgbox crash the application on Android 4.0.3 and above when used inside Panel_Touch event and some other touch related events.
- Starting the Bluetooth bridge hangs the IDE.
- HorizontalCenter returns the wrong value in the designer script.
- The designer script variant code is not executed if there is no general code.
- Basic4android is now compatible with Designer4android layout files.
- (Libraries developers) BA.raiseEventFromUI - new method to raise events from inside a native UI. The event is raised by posting a message to the message queue. This fixes the DoEvents / Msgbox issue in Android ICS.
- Other minor fixes.

- Panel_Touch event return value is now ignored.

If you have customized B4A.xml then do not forget to backup it before installing the new version.

Link - basic4android-v1-92-released.html
Last edited:


Active Member
Licensed User
Longtime User
Very informative - Thank you.



Active Member
Licensed User
Longtime User
Great idea. Thank you for taking the time to collect this information.

You are missing v1.90

Thank you all.

Now added and version 1.90. Thanks Erel for tip :sign0098:


Active Member
Licensed User
Longtime User

So what magic do I need to work on my download link to actually FIND the 2.02 version ?

I'm actually running a 2.01 at the moment 201 Capture.JPG


Active Member
Licensed User
Longtime User
Ya tanks

I saw that thanks but somewhere else I notice people were having to EDIT the link to get the current version

my link still says its for 2.00 exe and it downloads 2.01 so thanks again but not what I'm looking for ..

for that matter my same link grabbed the 1.95 version before 2.0 was out so
aslong with what your saying you'd think the link would remain the same and just point to the new version.. Who knows 2.01 might even be 2.02 at this point I don't know...


Active Member
Licensed User
Longtime User
Thank you for the information!


Active Member
Licensed User
Longtime User
According to the above, Version 3.8 introduced

  • Array keyword - The type can be omitted. In that case the array type will be Object. The Array keyword now supports creating empty arrays.
However when I declare an array without specifying the type, eg
Dim arr(3)
I get the warning: Variable declaration type is missing. String will be used. (warning #5)
In fact I can store different types of data in different elements of the array, so I guess the warning is wrong.

I wonder also what is the point of creating an empty array, since one cannot then assign any data to it...


Active Member
Licensed User
Longtime User
In version 4.0 is claimed about New Appication object and its properties:
  • New Application object with the following properties:
    • LabelName
    • VersionName
    • VersionCode
    • PackageName
How to access this object and its properties?