Repository navigation
android-compat: Room, WorkManager, location, sensors, services and Keystore - #6098
Conversation
…ystore Adds the Android APIs over their Codename One equivalents, the iOS location hints an imported manifest implies, and fixes Location.setAccuracy, which only ever stored NaN. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
GCM refuses a second encryption under one IV; service stop/unbind/stopSelf are judged in order with their start/bind; removed location and sensor listeners hear nothing more; SQLite waits for another thread's transaction instead of failing; Room observers and live queries follow AndroidX's threading; migrations are checked against the entity columns; WorkStore saves survive a cut-short write and are merged before the first enqueue. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Service request sets are atomic copy-on-write and survive a stopSelf that races a new start; a failed bind is forgotten; GCM refuses the last key and IV on init; an unreadable saved work queue loads as empty, never partial; the main thread does not busy-wait on another thread's transaction. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A destroyed service leaves no start request behind; a failed bind keeps a live binding's record; GCM records the key and IV at init; the main thread waits two seconds for another thread's transaction instead of failing. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Developer Guide build artifacts are available for download from this workflow run:
Developer Guide quality checks: |
|
Compared 191 screenshots: 191 matched. Native Android coverage
✅ Native Android screenshot tests passed. Native Android coverage
Benchmark ResultsDetailed Performance Metrics
|
|
Compared 227 screenshots: 227 matched. |
Cloudflare Preview
|
✅ Continuous Quality ReportTest & Coverage
Static Analysis
Generated automatically by the PR CI workflow. |
|
Compared 206 screenshots: 206 matched. Benchmark ResultsDetailed Performance Metrics
ParparVM vs HotSpot (JDK 25): Windows x64Runner CPU: AMD64 Family 25 Model 1 Stepping 1, AuthenticAMD (baseline Ratios are ParparVM / JDK 25: below 1.00x ParparVM is faster (time) or smaller (RAM). Median of 5 interleaved, paired rounds; every run's output was verified. A ratio more than 20% (time) / 25% (RAM) above its baseline in
Result: no regression |
|
Compared 206 screenshots: 206 matched. ParparVM vs HotSpot (JDK 25): Linux x64Runner CPU: AMD EPYC 7763 64-Core Processor (baseline Ratios are ParparVM / JDK 25: below 1.00x ParparVM is faster (time) or smaller (RAM). Median of 5 interleaved, paired rounds; every run's output was verified. A ratio more than 20% (time) / 25% (RAM) above its baseline in
Result: no regression |
|
Compared 206 screenshots: 206 matched. ParparVM vs HotSpot (JDK 25): Linux arm64Runner CPU: Neoverse-N2 (baseline Ratios are ParparVM / JDK 25: below 1.00x ParparVM is faster (time) or smaller (RAM). Median of 5 interleaved, paired rounds; every run's output was verified. A ratio more than 20% (time) / 25% (RAM) above its baseline in
Result: no regression |
|
Compared 206 screenshots: 206 matched. Benchmark ResultsDetailed Performance Metrics
ParparVM vs HotSpot (JDK 25): Windows arm64Runner CPU: ARMv8 (64-bit) Family 8 Model D49 Revision 0, MICROSOFT CORPORATION (baseline Ratios are ParparVM / JDK 25: below 1.00x ParparVM is faster (time) or smaller (RAM). Median of 5 interleaved, paired rounds; every run's output was verified. A ratio more than 20% (time) / 25% (RAM) above its baseline in
Result: no regression |
✅ ByteCodeTranslator Quality ReportTest & Coverage
Benchmark Results
Static Analysis
Generated automatically by the PR CI workflow. |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Flutter vs Codename OneSame application, built both ways: Flutter's AOT compile of the gallery, and the identical Dart source transpiled to Java on Codename One. Lower is better for every metric, so a ratio above 1.00x means Codename One is ahead by that factor. android9 interleaved rounds; host load 0.86, 2.38, 1.73
Compute -- the VM workloads (
Gate: within tolerance against
ios9 interleaved rounds; host load 23.93, 27.22, 19.41
Compute -- the VM workloads ( Not measured: iOS compute is not measured: a device build needs signed hardware, and on the simulator Flutter runs its JIT debug engine rather than AOT code. The macOS row runs the same ParparVM and Dart AOT compilers on the same Apple silicon. Gate: within tolerance against
javascript9 interleaved rounds; host load 1.82, 1.04, 0.44
Compute -- the VM workloads (
Gate: within tolerance against
linux9 interleaved rounds; host load 0.21, 2.88, 2.49
Compute -- the VM workloads (
Gate: within tolerance against
macos9 interleaved rounds; host load 1.59, 8.23, 13.91
Compute -- the VM workloads (
Gate: within tolerance against
windows9 interleaved rounds
Compute -- the VM workloads (
Gate: within tolerance against
Codename One wins 26 of 26 measured metrics across 6 platform(s). |
…le's AES Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ompat-testing Resolves the conflicts with the Swing/JavaFX compatibility layers: the Keystore shims join ANDROID_JDK_SHIMS, the Room and WorkManager generators use the composed relocator, and RoomGeneratorTest runs its relocated app with a Codename One of its own so another test's Display cannot reach it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Compared 192 screenshots: 192 matched. Benchmark Results
Detailed Performance Metrics
ParparVM vs HotSpot (JDK 25): macOS arm64Runner CPU: Apple M1 (Virtual) (baseline Ratios are ParparVM / JDK 25: below 1.00x ParparVM is faster (time) or smaller (RAM). Median of 5 interleaved, paired rounds; every run's output was verified. A ratio more than 20% (time) / 25% (RAM) above its baseline in
Result: no regression |
|
Compared 189 screenshots: 189 matched. Benchmark Results
Build and Run Timing
Detailed Performance Metrics
|
|
Compared 189 screenshots: 189 matched. Benchmark Results
Build and Run Timing
Detailed Performance Metrics
|
|
Compared 188 screenshots: 188 matched. Benchmark Results
Detailed Performance Metrics
|
|
Compared 249 screenshots: 249 matched. |
|
Compared 184 screenshots: 184 matched. |
Adds the Android APIs that imported Android applications use most and that
the compatibility runtime lacked, each over its Codename One equivalent:
_Implclasses (no annotationprocessor, no reflection) over a SupportSQLite runtime; migrations are
checked against the entity columns; live queries follow AndroidX threading.
LiveData queries, persisted queue; constraints go to
BackgroundWork.com.codename1.location, SensorManager overMotionSensorManager(rotation math rewritten from AOSP, Apache-2.0, inNOTICE).
IntentService,startForegroundas a
ForegroundService, notifications and channels as localnotifications; manifest
<service>entries generate their factory.SecureStorage(keychain / platform keystore).locationbackground mode areadded to
codenameone_settings.propertieswhen the manifest asks forlocation and the project doesn't set them.
Also fixes a core bug:
Location.setAccuracystored only NaN (inverted by anearlier cleanup), so
getAccuracy()answered 0 on every port; covered byLocationExtrasTest.Limitations are listed in the developer guide's Android chapter.
🤖 Generated with Claude Code