Fixed
Status Update
Comments
da...@google.com <da...@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:
ap...@google.com <ap...@google.com> #3
Yes this does seem like a KSP issue however it only starts happening when room is added to the project. As the template project compiles just fine.
Will try to use the example provided by you to check if it fixes the issue.
Will try to use the example provided by you to check if it fixes the issue.
Description
Version used: 2.2.0-alpha01
Devices/Android versions reproduced on: Emulator x86_64 API level 27
I have been provided JAR with a POJO from a third party. The POJO is used extensively by the library code and it has package name such as "com.library.LibraryItem". I want to use this POJO with Room as an entity so I can save instances to a local DB.
I cannot annotate their library POJO, it is a JAR supplied to us that may change on a semi-regular basis.
I tried creating a subclass and using ignoredColumns but I still get errors because Room complains it cannot convert some of the fields I said to ignored. I created a TypeConverter to make the errors from Room go away but there are still more errors referring to the columns I am ignoring.
Here is my subclass:
/**
* I really want to save instances of LibraryItem in my database!
*/
@Entity(tableName = "items", ignoredColumns = "obj")
public class RoomItem extends LibraryItem {
// I have to put these fields here even though they aren't used to store any
// data just to make Room happy!
@PrimaryKey
@NonNull
private String id;
private String name;
private Long price;
public RoomItem(String id, String name, Long price) {
setId(id);
setName(name);
setPrice(price);
}
}
See the attached sample app that demonstrates the trouble. The output currently is:
> Task :app:compileDebugJavaWithJavac FAILED
/home/jacob/work/source/jwapp/app/src/main/java/com/library/LibraryItem.java:13: error: Cannot find getter for field.
private final JSONObject obj = new JSONObject();
^
/home/jacob/work/source/jwapp/app/src/main/java/com/jwapp/ItemDao.java:14: warning: com.jwapp.RoomItem has some fields [obj] which are not returned by the query. If they are not supposed to be read from the result, you can mark them with @Ignore annotation. You can suppress this warning by annotating the method with @SuppressWarnings(RoomWarnings.CURSOR_MISMATCH). Columns returned by the query: id, name, price. Fields in com.jwapp.RoomItem: id, name, price, obj.
List<RoomItem> getAll();
^
/home/jacob/work/source/jwapp/app/src/main/java/com/jwapp/ItemDao.java:17: warning: com.jwapp.RoomItem has some fields [obj] which are not returned by the query. If they are not supposed to be read from the result, you can mark them with @Ignore annotation. You can suppress this warning by annotating the method with @SuppressWarnings(RoomWarnings.CURSOR_MISMATCH). Columns returned by the query: id, name, price. Fields in com.jwapp.RoomItem: id, name, price, obj.
List<RoomItem> loadAllByIds(int[] ids);
^
/home/jacob/work/source/jwapp/app/src/main/java/com/jwapp/ItemDao.java:20: warning: com.jwapp.RoomItem has some fields [obj] which are not returned by the query. If they are not supposed to be read from the result, you can mark them with @Ignore annotation. You can suppress this warning by annotating the method with @SuppressWarnings(RoomWarnings.CURSOR_MISMATCH). Columns returned by the query: id, name, price. Fields in com.jwapp.RoomItem: id, name, price, obj.
RoomItem findByName(String name);
^
1 error
3 warnings