Forge v2.4.1 – Intel Crosswalk, Runtime App Permissions & Android Studio support


Towards the end of last year I wrote about our upcoming 2.4 release and today I’m happy to announce its arrival!

We’ll be covering the individual features landing with v2.4.1 in more detail over the coming weeks but let’s take a quick look at the highlights:

New forge build target: Crosswalk


With the release of Forge v2.4.1 our crosswalk target has finally graduated from the beta branch and has been declared ready for production use.

Anyone developing hybrid apps for Android will be familiar with the myriad of compatibility issues that pop up when you start testing your app against different versions of Android.

Android versions before v4.4 shipped with a proprietary System WebView which lacked many basic HTML5 features, performed poorly and suffered from compatibility issues.

Android versions after v4.4 use whichever version of the Chrome-based System WebView was current when the device shipped.

The very latest versions of Android now periodically update the System WebView when newer versions of Chrome are released but this creates new problems when System WebView changes suddenly render your code inoperable.

The Crosswalk Project resolves these fragmentation issues by integrating the open-source Chromium WebView with your app.

By using our crosswalk target you can now use the latest web standards across all Android devices and control when you want to upgrade your app to support newer Chromium releases.

For more background information please read: Solving Android Fragmentation with Trigger.IO Forge and Intel’s Crosswalk

Runtime App Permissions


With the release of Forge v2.4.1 and our new forge.permissions module we fully support the new Android Runtime Permissions framework and give you complete control over when and how your app makes native permission requests.

By default, all forge module API’s will now only make a request to the user for permissions when the API is called and not during application startup.

While this has the benefit of not requiring a user to make an “all-or-nothing” decision when they install the app it still has the downside that it can quickly get quite complex to handle situations where users deny permission requests.

By using the forge.permissions module you have fine-grained control over permission management, can easily handle cases where permissions are denied and greatly increase the probability that users will grant your app the permissions it requires.

Android Studio Support


With the release of Forge v2.4.1 we have migrated our cloud compilation service to the Gradle build system and updated our Forge Native Module SDK to support the Android Studio IDE.

While we’re huge fans of the IntelliJ IDEA-based Android Studio the primary motivator for this shift came about because Google have now officially deprecated Eclipse for Android development.

This means that all development and official support for the Android Developer Tools (ADT) in Eclipse have now ended. Specifically, this includes the ADT plugin as well as the Android ant build system.

We’ll continue to support native module development with ant and Eclipse for as long as practical but you may be pleasantly surprised at how much easier Native Module development can be with Gradle & Android Studio!

Upgrade your app to Forge v2.4.1

You can find more information in the v2.4.1 release notes but the following steps should get you going:

Step 1 – Upgrade your platform version

Open your app’s src/config.json file in your favorite text editor and set the platform_version key to v2.4.1 as follows:

Step 2 – Check your module versions

Due to changes introduced by the new runtime permissions framework in Android 6.0 Marshmallow (API level 23) you may need to update your modules.

If you are using any of the following modules please ensure you are on the latest versions:

module version
contact 2.9
calendar 2.7
geolocation 2.4
camera 2.3
file 2.11

Step 3 – Develop!

To build your app against the new crosswalk target you can simply run:

Our android and ios targets remain unchanged.

Crosswalk options

We’ve also added two new optional configuration keys to src/config.json that control Crosswalk behaviour:

If you are experiencing rendering issues on some devices the disable_gpu_rasterization setting will work around bugs in their OpenGL implementations.

The disable_pull_to_refresh_effect setting allows you to disable Crosswalk’s default behaviour of refreshing the screen when the user “pulls-down’ on a page.

Check the documentation for more information.

In Conclusion

v2.4.1 is a massive release for us and represents the culmination of almost a year’s worth of engineering effort.

The complexity of integrating a new Forge runtime while simultaneously migrating our Android build system over to Gradle has been non-trivial and I’d like to give a special shout out to:

  • The v2.3beta branch testers who tirelessly hammered on each release, reported bugs and – often – contributed hours of their time to help us track down and reproduce issues. Y’all know who you are, thank you!

  • The Crosswalk team @ Intel. Crosswalk is beautifully engineered so it was rare that we got stuck, but when we did you were there with rapid responses, answers and marketing support!

Finally, if you run into any issues with v2.4.1 or have any questions about this release please don’t hesitate to get in touch with us at