Library Version
2.2.0
React Native Version
0.86.2
React Version
19.2.3
Expo Version
57.0.14
Minimal Reproduction
- Create an Expo SDK 57 app using its default Android
minSdk 24.
- Install
@use-voltra/android-client@2.2.0.
- Configure a payload-driven Android widget with multiple size variants.
- Install a release build on Android 10 / API 29.
- Add the widget and call
updateAndroidWidget.
Actual behavior:
The process terminates with:
NoSuchMethodError: No direct method <init>(Ljava/util/Map;)V in class Landroid/widget/RemoteViews
Expected behavior:
API 31+ should use RemoteViews(Map<SizeF, RemoteViews>). API 24–30 should receive a compatible single RemoteViews, or the plugin should reject and clearly document applications whose minSdk is below 31.
Additional Information
android/build.gradle currently declares:
minSdkVersion safeExtGet("minSdkVersion", 31)
An Expo root project supplies minSdkVersion = 24, so the fallback value is overridden. The module builds and installs successfully but crashes when the Android 12-only constructor is reached.
The unguarded constructor currently appears in three paths:
VoltraWidgetManager.updateWidgetDirect
VoltraWidgetUpdateWorker.doWork
VoltraRefreshActionCallback.onAction
A tested compatibility approach is:
- API 31+: keep
RemoteViews(sizeMapping)
- API 24–30: choose the generated
RemoteViews closest to the widget bounds from AppWidgetManager.getAppWidgetOptions
Running Android Lint with the effective minSdk 24 also reports additional NewApi findings involving API 26, API 31, and API 36 APIs. Some are feature-specific or may already have guarded reachability, but they suggest the package would benefit from an explicit supported-minSdk contract and CI coverage for API 24–30.
Library Version
2.2.0
React Native Version
0.86.2
React Version
19.2.3
Expo Version
57.0.14
Minimal Reproduction
minSdk24.@use-voltra/android-client@2.2.0.updateAndroidWidget.Actual behavior:
The process terminates with:
NoSuchMethodError: No direct method <init>(Ljava/util/Map;)V in class Landroid/widget/RemoteViewsExpected behavior:
API 31+ should use
RemoteViews(Map<SizeF, RemoteViews>). API 24–30 should receive a compatible singleRemoteViews, or the plugin should reject and clearly document applications whoseminSdkis below 31.Additional Information
android/build.gradlecurrently declares:minSdkVersion safeExtGet("minSdkVersion", 31)An Expo root project supplies
minSdkVersion = 24, so the fallback value is overridden. The module builds and installs successfully but crashes when the Android 12-only constructor is reached.The unguarded constructor currently appears in three paths:
VoltraWidgetManager.updateWidgetDirectVoltraWidgetUpdateWorker.doWorkVoltraRefreshActionCallback.onActionA tested compatibility approach is:
RemoteViews(sizeMapping)RemoteViewsclosest to the widget bounds fromAppWidgetManager.getAppWidgetOptionsRunning Android Lint with the effective
minSdk24 also reports additionalNewApifindings involving API 26, API 31, and API 36 APIs. Some are feature-specific or may already have guarded reachability, but they suggest the package would benefit from an explicit supported-minSdk contract and CI coverage for API 24–30.