0.9.0
Release Notes
Update Rules Versions (#496)
Update JS Rules to latest Aspect major
Android/JVM - expose constantController (#489)
Expose the core Player constantsController to Android/JVM consumers
AndroidPlayer provides top-level api and plugins access including constantsController
with AssetContext
Sample usage:
assetContext.player.constantsController.getConstants(key, namespace)
Storybook Addon Fixes (#449)
- Re-adds the ability to render Asset properties as a tab in storybook
- Re-adds the flow-refresh addon
- Fixes the dependencies & package layout for the storybook addon
- Fix dark-mode support
[Hermes] Android integration (#410)
Initial integration with the Hermes JavaScript runtime. This shows a tremendous size improvement over the existing J2V8 integration of ~70% (7.6 MB -> 2.3 MB, architecture dependent).
Opt-in
For now, the default runtime integration provided by the Android Player will still be com.intuit.playerui:j2v8-android
, but Hermes can be opted in manually by excluding the J2V8 transitive dependency and including the Hermes artifact:
dependencies {
// Android Player dependency
implementation("com.intuit.playerui", "android", PLAYER_VERSION) {
// J2V8 included for release versions
exclude(group = "com.intuit.playerui", module = "j2v8-android")
// Debuggable J2V8 included for canary versions
exclude(group = "com.intuit.playerui", module = "j2v8-android-debug")
}
// Override with Hermes runtime
implementation("com.intuit.playerui", "hermes-android", PLAYER_VERSION)
}
// Exclude J2V8 transitive dependency for all configurations in this module
configurations {
all {
exclude(group = "com.intuit.playerui", module = "j2v8-android")
// Debuggable J2V8 included for canary versions
exclude(group = "com.intuit.playerui", module = "j2v8-android-debug")
}
}
Tip
If your application includes dependencies that may transitively depend on com.intuit.playerui:android
, you would likely need to ensure the default runtime is transitively excluded from those as well, either manually or as a global strategy.
The AndroidPlayer
will pick the first runtime it finds on the classpath - you can at least verify which runtime was used for the Player
with a new log: Player created using $runtime
. But that won't tell you for certain if the other runtimes were successfully excluded. You'll need to examine your APK, or your apps dependency tree, to tell for sure that redundant runtimes aren't unintentionally included.
Most of the setup for this integration is done simply by including the right dependency (and excluding the wrong one), however, the hermes-android
integration also relies on the SoLoader for loading the native libraries. All that's needed is to initialize the SoLoader
(should be on your classpath with the hermes-android
dependency) with an Android Context
somewhere before you use the AndroidPlayer
, potentially in your activities onCreate
:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
SoLoader.init(this, false)
// ...
}
🚀 Enhancement
- Storybook Addon Fixes #449 (@adierkens)
- [Hermes] Android integration #410 (@sugarmanz @brocollie08)
🐛 Bug Fix
- Release main #501 (@intuit-svc)
- jvm and ios-async-node-ability-to-remove-resolved-async-node #488 (@sakuntala-motukuri @cehan-Chloe)
- Update Rules Versions #496 (@KetanReddy)
- fix:no matching toolchains:ninja_toolchain #490 (@cehan-Chloe @KetanReddy @brocollie08)
- Android/JVM - expose constantController #489 (@cehan-Chloe)
- ios expose constantsController #446 #487 (@cehan-Chloe)
- On update race condition #471 (@brocollie08)
- iOS: fix memory leak issues #486 (@sakuntala-motukuri @nancywu1)
- Remove async node dsl component #484 (@sakuntala-motukuri)
- [CI] Swap release script to use
config=ci
#482 (@sugarmanz) - Async node android #469 (@sakuntala-motukuri)
🏠 Internal
- Add recipes for just #468 (@adierkens)
Authors: 8
- @brocollie08
- @intuit-svc
- @nancywu1
- Adam Dierkens (@adierkens)
- Chloeeeeeee (@cehan-Chloe)
- Jeremiah Zucker (@sugarmanz)
- Ketan Reddy (@KetanReddy)
- Niharika Motukuri (@sakuntala-motukuri)