Linux arm64 support
Robolectric's native runtime now includes Linux arm64 (aarch64) native libraries, so tests that use native SQLite (the default) and native graphics (@GraphicsMode(NATIVE)) can run on Linux arm64 environments, such as GitHub's ubuntu-24.04-arm runners, AWS Graviton machines, and arm64 Docker containers on Apple silicon. No configuration is needed (#11625, #11633). As on Apple silicon, the legacy SQLite mode (SQLiteMode.Mode.LEGACY) isn't supported on Linux arm64.
What's Changed
- Sign all .module metadata files. by @brettchabot in #11327
- Fix Robolectric fontScale config being reset on SDK 24+. by @copybara-service[bot] in #11336
- Add device-specific permission support to Robolectric shadows. by @copybara-service[bot] in #11342
- Bump version to 4.18-SNAPSHOT. by @brettchabot in #11340
- Fix aggregateDocs gradle task. by @brettchabot in #11341
- Add missing
@Deprecatedannotation inSQLiteModeby @MGaetan89 in #11329 - Update AGP internals copies by @MGaetan89 in #11328
- Make
:shadows:framework:compileJavacompatible with Gradle's configuration cache by @MGaetan89 in #11314 - Let shadows for the SafetyCenterManager check permissions correctly. by @copybara-service[bot] in #11332
- Remove Conscrypt's XDH KeyPairGenerator to fix TLS issues by @copybara-service[bot] in #11349
- Update tests to run on API 24+ by @copybara-service[bot] in #11350
- Remove misleading comment from MavenArtifactFetcher by @copybara-service[bot] in #11351
- Enable Conscrypt for Mac arm64 by default by @copybara-service[bot] in #11352
- Halt resource_files.zip generation for Robolectric builds to enable skipping aapt2 convert. by @copybara-service[bot] in #11353
- feat: Support processor for KSP by @utzcoz in #10996
- fixed SIZEOF initial value in ResTable_package to avoid "RES_TABLE_PA… by @greyphoton in #11335
- ci: Increase emulator kill wait time by @utzcoz in #11355
- Make
:prefetchSdksand:prefetchInstrumentedSdkscompatible with Gradle's Configuration Cache by @MGaetan89 in #11347 - Make
:integration_tests:jacoco-offline:classescompatible with Gradle's Configuration Cache by @MGaetan89 in #11346 - Make
:preinstrumented:cleancompatible with Gradle's Configuration Cache by @MGaetan89 in #11343 - Restore some dependency downgrades by @MGaetan89 in #11334
- Fix warnings in Gradle files by @MGaetan89 in #11330
- Update dependency com.googlecode.libphonenumber:libphonenumber to v9.0.35 by @renovate[bot] in #11357
- Update dependency org.conscrypt:conscrypt-openjdk-uber to v2.6.1 by @renovate[bot] in #11358
- Update kotlin monorepo to v2.4.10 by @renovate[bot] in #11359
- Expose BouncyCastle BoM as api dependency by @SimonMarquis in #11364
- Fix
:processor:generateSdksFiletask not found by @MGaetan89 in #11356 - Make the
:preinstrumented:instrumentAlltask compatible with Gradle's Configuration Cache by @MGaetan89 in #11348 - Remove Gemini Code Assist by @MGaetan89 in #11365
- Fix the
:aggregateJavadocsnot found error by @MGaetan89 in #11366 - Delete ShadowRemoteCallbackList by @copybara-service[bot] in #11368
- Fix Javadoc for
VersionCalculatorby @MGaetan89 in #11369 - Make the
ProvideBuildClasspathTasktask compatible with Gradle's Configuration Cache by @MGaetan89 in #11370 - Fix
NoSuchFileExceptionspam in unit tests logs by @MGaetan89 in #11371 - Add cross-SIM calling support to ShadowImsMmTelManager. by @copybara-service[bot] in #11367
- Fail the build if Lint reports an error in
:integration_tests:ctesqueby @MGaetan89 in #11374 - Fix eager
sdk<api-level>configuration resolution by @MGaetan89 in #11372 - Update roborazzi to v1.70.0 by @renovate[bot] in #11378
- Simplify shared test setup with Gradle's lazy API by @MGaetan89 in #11379
- Enable strict plugins validation in
:build-logic:conventionby @MGaetan89 in #11380 - Add
ShadowProcess.setStartElapsedRealtime. by @copybara-service[bot] in #11382 - Fix jank log spam on SDK 37+ by translating FrameInfo timestamps. by @copybara-service[bot] in #11385
- Handle main looper death due to Throwable. by @copybara-service[bot] in #11384
- Fix Lint errors in
:testappby @MGaetan89 in #11375 - Tell Renovate to update
google-java-formatby @MGaetan89 in #11387 - Make Renovate update
google-java-formatby @MGaetan89 in #11390 - Downgrade Conscrypt to 2.5.2 to restore GLIBC 2.34 compatibility by @utzcoz in #11377
- Update dependency com.googlecode.libphonenumber:libphonenumber to v9.0.36 by @renovate[bot] in #11395
- Update dependency org.jspecify:jspecify to v1.0.1 by @renovate[bot] in #11396
- Update dependency google/google-java-format to v1.36.1 by @renovate[bot] in #11398
- Update dependency com.diffplug.spotless:spotless-plugin-gradle to v8.9.0 by @renovate[bot] in #11397
- Update dependency androidx.constraintlayout:constraintlayout to v2.2.2 by @renovate[bot] in #11394
- Pre-compile regex patterns in
InstrumentationConfigurationby @MGaetan89 in #11399 - Pre-compile regex pattern in
RobolectricTestRunnerby @MGaetan89 in #11400 - Merge google branch to master by @brettchabot in #11403
- Pre-compile regex pattern in
ResNameby @MGaetan89 in #11401 - Optimize
XmlResourceParserImpl.isWhitespaceperformance by @MGaetan89 in #11405 - Add appNotResponding API to ShadowActivityManager by @copybara-service[bot] in #11388
- Switch
actions/setup-javafromadopttotemurinby @MGaetan89 in #11406 - Add opt-in fix for stale screenshots on SDK 37. by @copybara-service[bot] in #11408
- Add a mechanism to ShadowSubscriptionManager to throw a RuntimeException. by @copybara-service[bot] in #11409
- Update ktfmt to its latest version by @MGaetan89 in #11411
- Use Spotless to format Java files by @MGaetan89 in #11410
- Define custom
CommandLineArgumentProviderto definejvmArgsinTestTaskConfigurationby @MGaetan89 in #11414 - Update roborazzi to v1.71.0 by @renovate[bot] in #11423
- Update Gradle to v9.7.0 by @renovate[bot] in #11422
- Update dependency org.junit:junit-bom to v6.1.3 by @renovate[bot] in #11420
- Update dependency org.bouncycastle:bc-jdk18on-bom to v1.85.2 by @renovate[bot] in #11419
- Update ksp monorepo to v2.3.11 by @renovate[bot] in #11421
- Remove the
:shadows:httpclientmodule by @MGaetan89 in #11373 - Run Android Lint last in
check_code_style.ymlby @MGaetan89 in #11412 - Enable Gradle's Configuration Cache and adjust some properties by @MGaetan89 in #10817
- Add
gradle/actions/setup-gradletocheck_code_styleby @MGaetan89 in #11424 - Optimize
AarDepsPluginusing Gradle configuration avoidance by @MGaetan89 in #11415 - Use Gradle cache in
gradle_tasks_validation.ymlby @MGaetan89 in #11425 - Add support for ActivityManager#getHistoricalProcessStartReasons. by @copybara-service[bot] in #11426
- Lower minSdk for LE PHY APIs in ShadowBluetoothAdapter by @copybara-service[bot] in #11427
- Remove blank line in ShadowImsMmTelManagerTest. by @copybara-service[bot] in #11429
- Update
tests.ymlby @MGaetan89 in #11430 - Run graphics tests on macOS 26 Intel by @MGaetan89 in #11431
- Bump Conscrypt to 2.6.2 by @utzcoz in #11433
- Update
graphics_tests.ymlto run Roborazzi tests by @MGaetan89 in #11428 - Optimize
SortedVector.indexOfusing binary search by @MGaetan89 in #11404 - Use a single Renovate group for all AGP packages by @MGaetan89 in #11435
- Update Renovate to have a single PR for AGP & Lint by @MGaetan89 in #11436
- Update dependency com.googlecode.libphonenumber:libphonenumber to v9.0.37 by @renovate[bot] in #11440
- Update dependency com.squareup.okhttp3:okhttp-bom to v5.5.0 by @renovate[bot] in #11442
- Update AndroidX by @renovate[bot] in #11441
- Add ability to override areEnvelopeEffectsSupported() in ShadowVibrator. by @copybara-service[bot] in #11445
- Remove erroneous test 'getText_withLayoutId'. by @copybara-service[bot] in #11446
- Define builder for ImsRegistrationAttributes by @copybara-service[bot] in #11443
- Add RequestProcessorBuilder for android.hardware.camera2.extension.RequestProcessor. by @copybara-service[bot] in #11447
- Shadow CameraManager.getCameraIdListNoLazy in ShadowCameraManager by @copybara-service[bot] in #11448
- Add support for configuring query results and timeouts in ShadowContextHubManager. by @copybara-service[bot] in #11449
- Make ShadowAudioManager's OnCommunicationDeviceChangedListener notification thread-safe. by @copybara-service[bot] in #11452
- Update ShadowImsMmTelManager stored callbacks to be static by @copybara-service[bot] in #11455
- Only adjust frameinfo timestamp values (including vsync). by @copybara-service[bot] in #11444
- Migrate JSR305's
@GuardedByto the equivalent one from ErrorProne by @MGaetan89 in #11407 - Sync google to master branch by @brettchabot in #11457
- Add FaceBuilder for android.hardware.camera2.params.Face. by @copybara-service[bot] in #11460
- Remove obsolete reference to robolectric.enableFrameInfoVsyncOffsetFix. by @copybara-service[bot] in #11459
- Update dependency com.diffplug.spotless:spotless-plugin-gradle to v8.10.0 by @renovate[bot] in #11467
- Update guava monorepo to v33.7.1-jre by @renovate[bot] in #11468
- Update Gradle to v9.7.1 by @renovate[bot] in #11466
- Update dependency org.conscrypt:conscrypt-openjdk-uber to v2.6.3 by @renovate[bot] in #11465
- Add custom status code return for writeCharacteristic in ShadowBluetoothGatt by @copybara-service[bot] in #11469
- Update Android Gradle Plugin by @renovate[bot] in #11360
- Cache
PluginFinderservice lookups to avoid repeated classpath scans by @AlexanderGH in #11451 - Add a perf stat metric for CppAssetManager2.ResolveReference by @copybara-service[bot] in #11471
- Update Robolectric shadows for post-Cinnamon Bun Android platform compatibility. by @copybara-service[bot] in #11472
- Deprecate VersionCalculator.CINNAMON_BUN. by @copybara-service[bot] in #11474
- Rename the root project so it doesn't collide with the
:robolectricsubproject by @AlexanderGH in #11450 - Remove pre m dead code by @utzcoz in #11477
- ci: run instrumentation tests on API 37 instead of 36 by @utzcoz in #11478
- Set the text directly in changeText_withCloseSoftKeyboard by @utzcoz in #11480
- Add a plugin to collect Error Prone issues across modules by @utzcoz in #11481
- Enable native access for the native runtime on JDK 24+ by @utzcoz in #11482
- Update detekt to 2.0.0-alpha.6 by @utzcoz in #11484
- Update roborazzi to v1.73.0 by @renovate[bot] in #11489
- Update dependency com.googlecode.libphonenumber:libphonenumber to v9.0.38 by @renovate[bot] in #11486
- Update dependency com.diffplug.spotless:spotless-plugin-gradle to v8.10.1 by @renovate[bot] in #11485
- Update dependency org.yaml:snakeyaml to v2.7 by @renovate[bot] in #11488
- Update dependency net.ltgt.errorprone to v5.1.1 by @renovate[bot] in #11487
- Show how to shadow a Kotlin companion function by @utzcoz in #11483
- Assert between the steps of changeText_addNewline by @utzcoz in #11490
- Add CameraOutputSurfaceBuilder for android.hardware.camera2.extension.CameraOutputSurface. by @copybara-service[bot] in #11492
- Add TotalCaptureResultBuilder for android.hardware.camera2.TotalCaptureResult. by @copybara-service[bot] in #11495
- Update LocaleList default on Android N and above in RuntimeEnvironment. by @copybara-service[bot] in #11389
- Instrument custom ShadowProvider package prefixes in SandboxBuilder by @copybara-service[bot] in #11491
- Add DeadObjectException simulation to ShadowTelephonyManager#createForPhoneAccountHandle. by @copybara-service[bot] in #11497
- Remove org.robolectric.annotation.TextLayoutMode and associated references. by @copybara-service[bot] in #11498
- Support copying non-system attributes in Theme.setTo() on Android R+ by @copybara-service[bot] in #11499
- Update actions/setup-java action to v6 by @renovate[bot] in #11503
- Update dependency org.conscrypt:conscrypt-openjdk-uber to v2.7.0 by @renovate[bot] in #11502
- Update dependency com.diffplug.spotless:spotless-plugin-gradle to v8.10.2 by @renovate[bot] in #11500
- Update Android Gradle Plugin by @renovate[bot] in #11501
- Remove extraneous line in RuntimeEnvironmentTest. by @copybara-service[bot] in #11507
- Fix SQLiteDatabaseTest on latest Robolectric for post-Cinnamon Bun SDK. by @copybara-service[bot] in #11508
- Reuse an already open jar filesystem when extracting fonts and hyphen data by @iFredZ in #11496
- Share the native runtime's extracted data assets between loads by @AlexanderGH in #11453
- Update dependency com.googlecode.libphonenumber:libphonenumber to v9.0.39 by @renovate[bot] in #11511
- Update kotlin monorepo to v2.4.20 by @renovate[bot] in #11512
- Add shadow for CrossProfileApps#startActivity on Android T+ by @copybara-service[bot] in #11516
- Update AndroidX by @renovate[bot] in #11514
- Update dependency com.gradle.plugin-publish to v2.2.1 by @renovate[bot] in #11515
- Update ksp monorepo to v2.3.12 by @renovate[bot] in #11513
- Update Robolectric ShadowCall to expose Call setters and add CallDetailsBuilder. by @copybara-service[bot] in #11517
- Fix API level check for CallDirection in CallDetailsBuilder by @copybara-service[bot] in #11519
- Always share the native runtime's extracted data assets by @hoisie in #11522
- Fix NoClassDefFoundError for some shadows on older SDKs by @jselbo in #11521
- Implement methods to trigger NfcEventCallback listeners for events that were not previously implemented. by @copybara-service[bot] in #11525
- Add support for FrameMetrics.FRAME_TIMELINE_VSYNC_ID to FrameMetricsBuilder by @copybara-service[bot] in #11526
- Update dependency com.google.testparameterinjector:test-parameter-injector to v1.23 by @renovate[bot] in #11530
- Keep the IME out of the Espresso typing tests by @utzcoz in #11527
- Update jlumbroso/free-disk-space action to v1.3.2 by @renovate[bot] in #11529
- Update kctfork to v0.14.0 by @renovate[bot] in #11532
- Update dependency org.bouncycastle:bc-jdk18on-bom to v1.86.1 by @renovate[bot] in #11531
- Update Android Gradle Plugin by @renovate[bot] in #11528
- Add setTransceiveResponseQueue support to ShadowIsoDep by @copybara-service[bot] in #11533
- Implement missing mouse pointer support for Robolectric ShadowMotionEvent. by @copybara-service[bot] in #11534
- Add support for presence observation and transport methods in ShadowCompanionDeviceManager. by @copybara-service[bot] in #11475
- Add support for presence observation and transport methods in ShadowCompanionDeviceManager. by @copybara-service[bot] in #11535
- Add setIsTrusted to AssociationInfoBuilder. by @copybara-service[bot] in #11536
- Update dependency com.googlecode.libphonenumber:libphonenumber to v9.0.40 by @renovate[bot] in #11539
- Update mockito monorepo to v5.24.0 by @renovate[bot] in #11541
- Update dependency com.diffplug.spotless:spotless-plugin-gradle to v8.10.3 by @renovate[bot] in #11538
- Update AndroidX by @renovate[bot] in #11537
- Update Gradle to v9.8.0 by @renovate[bot] in #11540
- Fix out-of-bounds native read in ShadowNativeImageDecoder.createFromAsset. by @copybara-service[bot] in #11542
- Install HttpResponseCache as the default ResponseCache by @utzcoz in #11493
- Force HWUI to draw frames synced within 2ms of each other by @hoisie in #11524
- Test back to back hwui frames by @utzcoz in #11543
- Shadow AccessibilityWindowInfo window control associations. by @copybara-service[bot] in #11545
- Record startStylusHandwriting calls in ShadowInputMethodManager. by @copybara-service[bot] in #11546
- Stop instrumenting org.apache.http by @utzcoz in #11544
- Make ShadowScrollViewTest more resilient to animations. by @copybara-service[bot] in #11547
- Update dependency com.google.testparameterinjector:test-parameter-injector to v1.24 by @renovate[bot] in #11550
- Update roborazzi to v1.76.0 by @renovate[bot] in #11552
- Update guava monorepo to v33.7.2-jre by @renovate[bot] in #11549
- Update jlumbroso/free-disk-space action to v2 by @renovate[bot] in #11553
- Add basic adaptive layout tests by @utzcoz in #11554
- Keep a ComposeShader from drawing a stale native shader by @utzcoz in #11556
- Set testedAbi for the Gradle managed devices by @utzcoz in #11555
- Ensure Choreographer frameDelay is consistent with ShadowChoreographer. by @copybara-service[bot] in #11558
- Prepare for FrameCompleteCallback removal. by @copybara-service[bot] in #11560
- Update Robolectric shadows and tests for Android MAIN SDK (build 16479821): by @copybara-service[bot] in #11559
- Give virtual displays the flags they have on a device by @utzcoz in #11557
- Fix presentation display flags and changeDisplay resets by @utzcoz in #11561
- Use CopyOnWriteArrayList for listeners in ShadowSubscriptionManager. by @copybara-service[bot] in #11563
- Implement ActivityManager#isActivityStartAllowedOnDisplay by @utzcoz in #11562
- Fix VirtualDeviceListener, displayIds, and reset in ShadowVirtualDeviceManager by @copybara-service[bot] in #11564
- Fix VirtualDeviceListener, displayIds, and reset in ShadowVirtualDeviceManager by @copybara-service[bot] in #11565
- Synchronize counter emission in Robolectric ShadowTrace. by @copybara-service[bot] in #11567
- Update dependency com.googlecode.libphonenumber:libphonenumber to v9.0.41 by @renovate[bot] in #11571
- Update dependency com.diffplug.spotless:spotless-plugin-gradle to v8.10.4 by @renovate[bot] in #11570
- Update Gradle to v9.8.1 by @renovate[bot] in #11573
- Update kotlin monorepo to v2.4.21 by @renovate[bot] in #11574
- Update dependency org.bouncycastle:bc-jdk18on-bom to v1.86.2 by @renovate[bot] in #11572
- Fix VirtualDeviceListener, displayIds, and reset in ShadowVirtualDeviceManager by @copybara-service[bot] in #11575
- Add ShadowCaptioningManager setFontScale/setUserStyle by @copybara-service[bot] in #11577
- Update dependency com.google.testing.compile:compile-testing to v0.24.0 by @renovate[bot] in #11581
- Update asm to v9.11.1 by @renovate[bot] in #11580
- Update dependency Kotlin/ktfmt to v0.65 by @renovate[bot] in #11582
- Support native resources mode on SDK 36+. by @copybara-service[bot] in #11578
- Update Robolectric shadows for Android MAIN SDK (build 16644958) by @copybara-service[bot] in #11584
- Cache resolved resource references in CppAssetManager2 by @copybara-service[bot] in #11586
- Make ShadowCameraManager availability callbacks thread-safe and guard by @copybara-service[bot] in #11587
- Update dependency com.googlecode.libphonenumber:libphonenumber to v9.0.42 by @renovate[bot] in #11588
- Update dependency com.google.testparameterinjector:test-parameter-injector to v1.25 by @renovate[bot] in #11592
- Update Gradle to v9.8.2 by @renovate[bot] in #11590
- Update dependency com.squareup.okhttp3:okhttp-bom to v5.5.1 by @renovate[bot] in #11589
- Update dependency com.google.code.gson:gson to v2.15.0 by @renovate[bot] in #11591
- Avoid calling hasExecutableMsg from non-looper threads in updateListener. by @copybara-service[bot] in #11598
- Add
SatelliteStateChangeListenersupport toShadowSatelliteManagerby @copybara-service[bot] in #11600 - Allow drags without ClipData in ShadowWindowManagerGlobal by @copybara-service[bot] in #11601
- Cache method lookups in delegating proxies by @zacsweers-oai in #11593
- Deliver display events once per registered callback by @zacsweers-oai in #11597
- Remove support for SDK 23 by @copybara-service[bot] in #11604
- Add MultiResolutionStreamConfigurationMapBuilder by @copybara-service[bot] in #11605
- Support UiAutomation.getRootInActiveWindow() on API 34+ in Robolectric. by @copybara-service[bot] in #11607
- Report runtime permission state for the test package in getPermissionRequestState by @rvandermeulen in #11606
- Fix
ShadowPausedLooperto not use cachedlooperModeinunPausemethod by @warnyul in #9069 - Update dependency com.ibm.icu:icu4j to v79 by @renovate[bot] in #11616
- Update roborazzi to v1.77.0 by @renovate[bot] in #11615
- Update dependency org.conscrypt:conscrypt-openjdk-uber to v2.8.0 by @renovate[bot] in #11613
- Update dependency net.ltgt.errorprone to v5.2.0 by @renovate[bot] in #11612
- Update ksp monorepo to v2.3.13 by @renovate[bot] in #11610
- Update jacoco to v0.8.16 by @renovate[bot] in #11609
- Support VirtualAudioDevice audio routing in ShadowVirtualDevice by @copybara-service[bot] in #11618
- Set up ConfigurationRegistry before class-level code runs in a sandbox by @geoadaMeta in #11599
- Update dependency google/google-java-format to v2 by @renovate[bot] in #11617
- Update Android Gradle Plugin by @renovate[bot] in #11611
- Update error-prone monorepo to v2.52.0 by @renovate[bot] in #11614
- Forward RuntimeShader scalar uniform setters to native code on SDK 33 and 34 by @LavishSonbhurra in #11619
- Never acquire jdk.* packages in the sandbox by @hoisie in #11623
- Shadow ApplicationSharedMemory.create() to avoid FileDescriptor.setInt$ by @hoisie in #11354
- Add release staging and cherry-pick workflows by @hoisie in #11624
- Enable the native runtime on Linux arm64 for SDK 34 and below by @hoisie in #11625
- Always run the release workflow from master by @hoisie in #11627
- Install prebuilt android-all jars in Maven local without mvn by @hoisie in #11626
- Skip SQLite tests on Linux aarch64 by @utzcoz in #11629
- Read plugin service files until the end of the stream by @utzcoz in #11630
- Cache service descriptor URLs on stable sandbox classpaths by @zacsweers-oai in #11594
- Enable the native runtime on Linux arm64 for SDKs 35 to 37 by @hoisie in #11633
- Cache service loader resources default by @utzcoz in #11631
- Rebalance the Robolectric GitHub unit-tests CI matrix by @copybara-service[bot] in #11635
- Stop using ActivityScenario in ShadowUiAutomationTest by @copybara-service[bot] in #11636
- Support Android MAIN SDK build 16786434 in Robolectric shadows. by @copybara-service[bot] in #11634
- Fix line continuation in the unit-tests GitHub workflow by @copybara-service[bot] in #11637
- Remove the managed device cache from the instrumentation tests by @hoisie in #11639
- Drop an unreachable assertion in SQLiteStatementTest by @dylanpulver in #11640
- Call native_tests.yml from the release workflow by @hoisie in #11642
- Format markdown files to 80-character line limit by @hoisie in #11646
- Remove the unused gradle-args from the native tests workflow by @hoisie in #11643
- Publish releases from the release workflow after approval by @hoisie in #11644
New Contributors
- @greyphoton made their first contribution in #11335
- @SimonMarquis made their first contribution in #11364
- @AlexanderGH made their first contribution in #11451
- @iFredZ made their first contribution in #11496
- @zacsweers-oai made their first contribution in #11593
- @warnyul made their first contribution in #9069
- @geoadaMeta made their first contribution in #11599
- @LavishSonbhurra made their first contribution in #11619
- @dylanpulver made their first contribution in #11640
Full Changelog: robolectric-4.17...robolectric-4.18-beta-1