JavascriptEngine

  
Enable your Android app to evaluate JavaScript.
Latest Update Stable Release Release Candidate Beta Release Alpha Release
November 1, 2023 - - 1.0.0-beta01 -

Declaring dependencies

To add a dependency on JavascriptEngine, you must add the Google Maven repository to your project. Read Google's Maven repository for more information.

Add the dependencies for the artifacts you need in the build.gradle file for your app or module:

Groovy

dependencies {
    implementation "androidx.javascriptengine:javascriptengine:1.0.0-beta01"
}

Kotlin

dependencies {
    implementation("androidx.javascriptengine:javascriptengine:1.0.0-beta01")
}

For more information about dependencies, see Add build dependencies.

Feedback

Your feedback helps make Jetpack better. Let us know if you discover new issues or have ideas for improving this library. Please take a look at the existing issues in this library before you create a new one. You can add your vote to an existing issue by clicking the star button.

Create a new issue

See the Issue Tracker documentation for more information.

Version 1.0

Version 1.0.0-beta01

November 1, 2023

androidx.javascriptengine:javascriptengine:1.0.0-beta01 is released. Version 1.0.0-beta01 contains these commits.

  • No changes since 1.0.0-alpha07

Version 1.0.0-alpha07

October 18, 2023

androidx.javascriptengine:javascriptengine:1.0.0-alpha07 is released. Version 1.0.0-alpha07 contains these commits.

New Features

  • New API introduced to allow apps to register callbacks to handle isolate crashes.

API Changes

  • Rename DEFAULT_MAX_HEAP_SIZE to AUTOMATIC_MAX_HEAP_SIZE. (I6d303)
  • Rename FileDescriptorIoException to DataInputException. (Iba4eb)
  • Rename DEFAULT_ISOLATE_HEAP_SIZE to DEFAULT_MAX_HEAP_SIZE. (Iaa16f)
  • Remove non-functional console getSource and getTrace methods. (I4b7a2)
  • Unhide FileDescriptorIoException (Ic44e6)
  • Allow apps to register callbacks to handle isolate crashes. (Iad25f)

Version 1.0.0-alpha06

October 4, 2023

androidx.javascriptengine:javascriptengine:1.0.0-alpha06 is released. Version 1.0.0-alpha06 contains these commits.

New Features

  • New API introduced to evaluate JavaScript from a ParcelFileDescriptor/AssetFileDescriptor without the need to convert the source into a String. JavaScriptIsolate class is made thread-safe.

API Changes

  • Change provideNamedData to throw exception instead of returning false. (I8909a)
  • Adding APIs for evaluating JavaScript through Afds and Pfds (I03e3a)
  • Make MemoryLimitExceededException and SandboxDeadException subclass IsolateTerminatedException (Icf359)
  • Removing public facing API evaluateJavaScriptAsync(@NonNull byte[] code) (I4b3ac)

Bug Fixes

  • Make JavaScriptIsolate thread safe. (Ib28e0)

Version 1.0.0-alpha05

April 5, 2023

androidx.javascriptengine:javascriptengine:1.0.0-alpha05 is released. Version 1.0.0-alpha05 contains these commits.

API Changes

  • Evaluation and result are no longer bound by Binder limits (I13b1d)
  • Add callback for handling isolate console messages (I11725, Ic1c11)

Version 1.0.0-alpha04

February 22, 2023

androidx.javascriptengine:javascriptengine:1.0.0-alpha04 is released. Version 1.0.0-alpha04 contains these commits.

Bug Fixes

  • Fixes a rare case of NullPointerException caused when the sandboxed process dies.

Version 1.0.0-alpha03

December 7, 2022

androidx.javascriptengine:javascriptengine:1.0.0-alpha03 is released. Version 1.0.0-alpha03 contains these commits.

New Features

  • Contain out of memory crashes to the responsible isolate instead of crashing the entire sandbox. Once the isolate goes out of memory, it cannot be used for further evaluation.
  • Currently, the resources that the isolate holds are not freed till the sandbox is closed. This resource freeing behavior might change in later versions of the library.

API Changes

  • Throw MemoryLimitExceededException when an evaluation leads to isolate going out of memory.(I336ca)

Version 1.0.0-alpha02

October 5, 2022

androidx.javascriptengine:javascriptengine:1.0.0-alpha02 is released. Version 1.0.0-alpha02 contains these commits.

New Features

  • Add JavaScriptSandbox#isSupported for checking whether the system supports JavaScript sandboxes.

API Changes

  • Throw SandboxUnsupportedException when JavaScriptSandbox cannot be created due to lack of system support. (I0dcd6)

Version 1.0.0-alpha01

August 10, 2022

androidx.javascriptengine:javascriptengine:1.0.0-alpha01 is released. Version 1.0.0-alpha01 contains these commits.

New Features

  • We’ve added experimental support for JavaScriptSandbox and JavaScriptIsolate to enable clients to evaluate JavaScript in a safe and restricted environment. This is an area of active development; the APIs are subject to change without notice.

  • Please file feature requests and bugs our JavascriptEngine component!