Status Update
Comments
yb...@google.com <yb...@google.com> #2
For Kotlin 2.0 and KSP 2.0 the Cannot change attributes of configuration ':composeApp:debugFrameworkIosX64' after it has been locked for mutation
really seems like a KSP issue. You should file a bug in their repository with a sample app if possible.
If you downgrade to Kotlin 1.9 then things 'should' work, there are example apps out there with such configuration, like the following one:
da...@google.com <da...@google.com> #3
Will try to use the example provided by you to check if it fixes the issue.
ap...@google.com <ap...@google.com> #4
Note that this issue happens when applying the Compose, KSP and Room Plugin together in Kotlin 2.0.x, the workaround for now is to not use the Room Gradle Plugin and instead specify the schema location vis KSP arguments:
// In the build.gradle
ksp {
arg("room.schemaLocation", "${projectDir}/schemas")
}
da...@google.com <da...@google.com>
to...@gmail.com <to...@gmail.com> #5
Hi, I encountered a similar problem and was able to resolve it by updating the dependencies
room = "2.7.0-alpha08"
ksp = "2.0.20-1.0.25"
compose-plugin = "1.6.11"
kotlin = "2.0.20"
Description
Version used: 2.2.2
Devices/Android versions reproduced on: Android emulator running API 28
I've included a sample project with a MigrationTest class that fails like so when invoking MigrationTestHelper:
java.lang.IllegalStateException: Migration didn't properly handle: user_fts
Expected: FtsTableInfo{name='user_fts', columns=[name, rowid], options=[]}
Found: FtsTableInfo{name='user_fts', columns=[name], options=[]}
Yet the AppDatabase_Impl sees the schema as being correct.
The root cause seems to be that they treat the implicit `rowid` column differently: the generated schema json file includes the `rowid` field causing MigrationTestHelper to expect its presence, but AppDatabase_Impl's onValidateSchema method doesn't check for rowid.
I believe AppDatabase_Impl has the correct behaviour in this case: MigrationTestHelper uses FtsTableInfo which uses `PRAGMA table_info()` to discover the columns of the fts table, which *doesn't* return `rowid` as being one of the columns, but MigrationTestHelper is comparing that FtsTableInfo with the json data which *does* include `rowid`, so it thinks the schema doesn't match.