After checking the compiled AbstractORM
class I found the problem: newer Kotlin versions generate a different code for that line
getId().hashCode()
Kotlin 1.1.2 generates the following code:
Long.valueOf(this.getId()).hashCode()
while newer versions of Kotlin generate this other code:
Long.hashCode(this.getId())
The problem is that this static method Long.hashCode(long)
in Android is only available since API 24 (Android 7.0), while I'm testing on an Android device that has version 4.1 (API 16).
I'm temporarily fixing by calculating the hash code manually although I've opened an issue here.
override fun hashCode() = (getId() xor getId().ushr(32)).toInt()
As commented on the issue, switching to Java 1.6 target for the Kotlin compiler generates the old compatible code.
PS: I'm not 100% sure about those Kotlin versions, please take with a grain of salt.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…