Status Update
Comments
bi...@google.com <bi...@google.com>
jv...@google.com <jv...@google.com>
ga...@google.com <ga...@google.com>
au...@google.com <au...@google.com> #2
Thanks for trying out Room KMP! This looks like an issue with Android 9+ and armv7 and the way we compile sqlite3.c, specifically linking to the atomic library in C. We'll try to get this fix as soon as possible.
bi...@google.com <bi...@google.com> #3
au...@google.com <au...@google.com> #4
bi...@google.com <bi...@google.com> #5
Branch: androidx-main
commit cf121571aac008a756b64cda13f76ae4db3e85a6
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Wed May 29 11:14:42 2024
Link to Android's atomic lib in bundled SQLite
Fix Bundled SQLite loading for devices with older ARM architecture by linking to Android's atomic library instead of relying on Clang's extension (c_atomic) or GCC's built-ins as used in sqlite3.c.
Also add support for passing linker args to androidx's native compilation infra.
See also discussion in
Bug: 341639198
Test: Locally tested via BundledSQLiteDriverTest in a Nexus 5 on API 23
Change-Id: Ia818b7c4f1a990a1b5e35f4c7a3c89694aee0503
M buildSrc/private/src/main/kotlin/androidx/build/clang/ClangSharedLibraryTask.kt
M buildSrc/private/src/main/kotlin/androidx/build/clang/KonanBuildService.kt
M buildSrc/private/src/main/kotlin/androidx/build/clang/MultiTargetNativeCompilation.kt
M buildSrc/private/src/main/kotlin/androidx/build/clang/NativeTargetCompilation.kt
M sqlite/sqlite-bundled/build.gradle
ga...@google.com <ga...@google.com> #6
I'm using androidx.room:room-runtime-android:2.7.0-alpha01.
This is the log:
Fatal Exception: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.myproject-ssibkzVuLAo7tvV0puYoEg==/base.apk"],nativeLibraryDirectories=[/data/app/com.myproject-ssibkzVuLAo7tvV0puYoEg==/lib/x86, /system/lib, /vendor/lib]]] couldn't find "libsqliteJni.so"
at java.lang.Runtime.loadLibrary0(Runtime.java:1011)
at java.lang.System.loadLibrary(System.java:1657)
at androidx.sqlite.driver.bundled.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.android.kt:1)
at androidx.sqlite.driver.bundled.BundledSQLiteDriver.<clinit>(BundledSQLiteDriver.jvmAndroid.kt:1)
Thank you!
bi...@google.com <bi...@google.com> #7
Can you try using androidx.room:room-runtime-android:2.7.0-alpha04
and confirm if the issue is still present?
sp...@google.com <sp...@google.com> #8
sp...@google.com <sp...@google.com> #9
Ideally you could use AndroidSQLiteDriver
but Room has a bug with the AndroidSQLiteDriver
that is fixed in version 2.7.0-alpha05 that will be released in July 10 so I recommend that if you do switch to using AndroidSQLiteDriver
wait for the alpha05 release.
xa...@google.com <xa...@google.com> #10
I just received two errors from Crashlytics using androidx.sqlite:sqlite-bundled version 2.5.0-alpha06 and BundledSQLiteDriver for both Android and iOS.
Fatal Exception: java.lang.UnsatisfiedLinkError
dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/app/com.example.app-ACdqnxIlCwzIlzMdaeegRw==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.app-ACdqnxIlCwzIlzMdaeegRw==/lib/x86, /system/lib, /vendor/lib]]] couldn't find "libsqliteJni.so"
And the exception is in .setDriver(BundledSQLiteDriver())
Both crashes were from a Nexus 5X running Android 8.1.0
I would say it is the same exception as in
sp...@google.com <sp...@google.com> #11
sp...@google.com <sp...@google.com> #12
Same crash on Pixel 6 Pro(android12),Nexus 5X(android8.1) on androidx.sqlite:sqlite-bundled version 2.5.0-alpha11 with room version 2.7.0-alpha11.
sp...@google.com <sp...@google.com> #13
androidx.sqlite:sqlite-bundled version 2.5.0-alpha11 with room version 2.7.0-alpha11
au...@google.com <au...@google.com> #14
For those experiencing this issue, can you provide any more detail: stacktrace, bug report, trends (specific API versions, specific manufacturer)?
Usually with UnsatisfiedLinkError
there is more in the logs / error mentioning why the native library couldn't be used, specifically the missing symbol. I have so far validated we are
au...@google.com <au...@google.com> #15
Same crash on Pixel 6 pro
androidx-room = "2.7.0-alpha11"
androidx-sqlite = "2.5.0-alpha11"
Attached a stack trace
ga...@google.com <ga...@google.com> #16
Does anyone knows if it's safe to use AndroidSQLiteDriver for android as a backup plan?
We also released the iOS app some weeks ago and until know we didn't catch any issue related to this.
bi...@google.com <bi...@google.com> #17
For the stacktrace in jni/<abi>/libsqliteJni.so
ga...@google.com <ga...@google.com> #18
We have the structure like in the screenshoot
je...@google.com <je...@google.com> #20
bi...@google.com <bi...@google.com> #21
In terms of #20, I think that is expected because we normally see config cache miss if a file is created during configuration. However, if a file get modified, I assume it would say xxx has been modified.
je...@google.com <je...@google.com> #22
This debugging change says that:
analytics.settings was written at:
2023-08-30 20:08:54.977482090 +0000
first Gradle start at Wed Aug 30 20:03:28 UTC 2023
first Gradle end at Wed Aug 30 20:09:35 UTC 2023
It looks like something in the first build wrote this file somewhat near the end of the build
Specifically, about 5m26s - 5m27s after the start of the build and 40s-41s before the end of the build
Resulting scan:
I see a few tasks that started in this build scan at approximately 5m26s, mostly lint-related.
I'll see if I can get more details
je...@google.com <je...@google.com> #23
I checked some timestamps again in aosp/2731437
Gradle started at 21:01:18 UTC 2023
Gradle completed at 21:07:21 UTC 2023
analytics.settings created at 21:05:35.748195543
4m17s after Gradle started
1m46s before Gradle ended
Uploaded the scan to
I see a few tasks running in that scan around 4m17s, mostly but not exclusively lint
je...@google.com <je...@google.com> #24
I just tried this command:
OUT_DIR=../../out DIST_DIR=../../out/dist ./busytown/androidx_compose_multiplatform.sh
and found that that reproduced the error on my computer. Maybe we can simplify it from there
sp...@google.com <sp...@google.com> #25
I see a few tasks running in that scan around 4m17s, mostly but not exclusively lint
I took a look at my previous lint fix after seeing this.
I think the problem might be that LintClient.isGradle
might not always be true when running the lint tasks, in which case
LintClient.isGradle
should be true when running lint tasks from Gradle because we invoke lint with --client-id gradle
, but when I run grep -r "client=\""
on the AndroidX codebase, I see a mix of client="gradle"
and client="cli"
, which suggests to me that the client id is being reset in some cases.
je...@google.com <je...@google.com> #26
I ran this command:
rm ../../out -rf && OUT_DIR=../../out DIST_DIR=../../out/dist ./gradlew lintAnalyzeDebug -Pandroidx.verifyUpToDate
and it created ../../out/.gradle/.android/analytics.settings
but when I ran this command
rm ../../out -rf && OUT_DIR=../../out DIST_DIR=../../out/dist ./gradlew lintAnalyzeDebug -Pandroidx.verifyUpToDate --max-workers 1
it didn't create ../../out/.gradle/.android/analytics.settings
so it could be that reproducing the error requires running certain tasks at the same time
je...@google.com <je...@google.com> #27
Combining
I think lint runs inside the Gradle Daemon JVM process - is that right?
I notice LintClient.kt mentions “@JvmStatic lateinit var clientName: String”. I think that means multiple lint clients might be able to overwrite each others’ values?
Maybe I can figure out which tasks set the lint client to something else
bi...@google.com <bi...@google.com>
je...@google.com <je...@google.com> #30
Thanks!
I investigated a little bit more into the plausibility of our guess (parallel lint invocations causing incorrect client) and it seems to be holding up:
1: I notice that aosp/2724176 changes some clients from "cli" to "gradle" for example
2: I regenerated all of the lint baselines via echo | tee
find -name lint-baseline.xml && ./gradlew updateLintBaseline --max-workers=1
and found that it put 'client="gradle"' into the resulting files
I'll check again later after updating to the corresponding AGP
sp...@google.com <sp...@google.com> #31
Thanks again Jeff!
Reassigning back to Bingran assuming the lint issue has been resolved.
In our integration tests, there are cases(e.g. AnalyticsConfigurationCachingTest) we need to create this file, therefore you would get config cache miss. So it is intended that we still have an entry in ConfigurationCacheReportChecker.
Unfortunately, yes, AnalyticsSettings
is still interacting with the file in a way that is not compatible with configuration caching.
sp...@google.com <sp...@google.com>
an...@google.com <an...@google.com> #33
Thank you for your patience while our engineering team worked to resolve this issue. A fix for this issue is now available in:
- Android Studio Hedgehog | 2023.1.1 Beta 4
- Android Gradle Plugin 8.2.0-beta04
We encourage you to try the latest update.
If you notice further issues or have questions, please file a new bug report.
Thank you for taking the time to submit feedback — we really appreciate it!
an...@google.com <an...@google.com> #34
The fixes for this issue are now also available in:
- Android Studio Iguana | 2023.2.1 Canary 4
- Android Gradle Plugin 8.3.0-alpha04
We encourage you to try the latest update.
If you notice further issues or have questions, please file a new bug report.
jf...@block.xyz <jf...@block.xyz> #35
In Gradle 8.3 we are ignoring this file with the following in gradle.properties
:
org.gradle.configuration-cache.inputs.unsafe.ignore.file-system-checks=**/.gradle/.android/analytics.settings
However, the AnalyticsService still breaks configuration on demand for some people:
> Failed to apply plugin 'com.android.internal.library'.
> Accessing GradleBuildProject.Builder through AnalyticsConfiguratorService is not allowed after AnalyticsService is created.
We've found that setting "hasOptedIn":false,"
in ~.gradle/.android/analytics.settings
fixes the issue.
sp...@google.com <sp...@google.com> #36
Re: #35, that looks like
mf...@gmail.com <mf...@gmail.com> #37
وجيهكم خلوني في حالي ..ماهو مقر.طالب
Description
DESCRIBE THE ISSUE IN DETAIL:
STEPS TO REPRODUCE:
./busytown/androidx_device_tests.sh
Expected
Our build is run twice (for up to dateness validation). Second run uses configuration cache
Actual
Second build does not use configuration cache, it is dropped due to