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> #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"
al...@gmail.com <al...@gmail.com> #6
The code in DAO:
@Query("DELETE FROM project WHERE id = :projectId")
abstract fun deleteById(projectId: String): Completable
generates the following in DAO impl:
@Override
public Completable deleteById(final String projectId) {
final SupportSQLiteStatement _stmt = __preparedStmtOfDeleteById.acquire();
int _argIndex = 1;
if (projectId == null) {
_stmt.bindNull(_argIndex);
} else {
_stmt.bindString(_argIndex, projectId);
}
return Completable.fromCallable(new Callable<Void>() {
@Override
public Void call() throws Exception {
__db.beginTransaction();
try {
_stmt.executeUpdateDelete();
__db.setTransactionSuccessful();
return null;
} finally {
__db.endTransaction();
__preparedStmtOfDeleteById.release(_stmt);
}
}
});
}
In this code, __preparedStmtOfDeleteById.acquire() is executed on main thread and crashes the app.
Description
@Query("DELETE FROM book WHERE salesCnt = 0")
fun deleteUnsoldBooksSingle(): Single<Int>
will throw a main thread DB access exception if its called from the main thread since the sql compile / acquire invocation is done immediately while the actually execution of the query and data parsing is deferred.