Я должен поддержать устройство размера 16 КБ в Android 35. Чтобы поддержать устройства размера 16 КБ, мы обновили версию AGP до последнего 8.7. Последняя версия AGP требует Java 17. < /p>
Однако после обновления до Java 17 тестовые примеры сбои везде, где отражение используется для доступа к частным переменным или методам.
Так много Наследие тестовые случаи. Работа над этими тестовыми случаями потребуется много переделки и рефакторирования в коде, что невозможно из -за ограничений времени и затрат. Как я могу решить эту проблему без рефакторинга? fun getFinalPrivateVariable(clazz: Class, fieldName: String): Field {
val field = getPrivateVariable(clazz, fieldName)
val modifiers = Field::class.java.getDeclaredField("modifiers")
modifiers.isAccessible = true
modifiers.setInt(field, field.modifiers and Modifier.FINAL.inv())
return field
}
Я уже пытался добавить ниже строки в gradle.properties :
--add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED
Он не сработал.
также попытался добавить в build.gradle :
android {
testOptions {
unitTests.all {
jvmArgs += [
'--add-opens=java.base/java.lang.reflect=ALL-UNNAMED',
'--add-opens=java.base/java.lang=ALL-UNNAMED'
]
}
}
}
< /code>
также попытался рефактор: < /p>
@Throws(Exception::class)
fun getFinalPrivateVariable(clazz: Class, fieldName: String): Field {
val field = getPrivateVariable(clazz, fieldName)
field.isAccessible = true
// Obtain a VarHandle for the "modifiers" field in the Field class
val modifiersHandle: VarHandle = MethodHandles.privateLookupIn(Field::class.java, MethodHandles.lookup())
.findVarHandle(Field::class.java, "modifiers", Int::class.javaPrimitiveType)
// Remove the FINAL modifier
val mods = modifiersHandle.get(field) as Int
modifiersHandle.set(field, mods and Modifier.FINAL.inv())
return field
}
Подробнее здесь: https://stackoverflow.com/questions/794 ... ception-mo
Java 17 с модификаторами ограничения отражения java.lang.nosuchfieldexception: модификаторы ⇐ Android
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Java 17 с модификаторами ограничения отражения java.lang.nosuchfieldexception: модификаторы
Anonymous » » в форуме JAVA - 0 Ответы
- 10 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Java 17 с модификаторами ограничения отражения java.lang.nosuchfieldexception: модификаторы
Anonymous » » в форуме JAVA - 0 Ответы
- 17 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Java 17 с модификаторами ограничения отражения java.lang.nosuchfieldexception: модификаторы
Anonymous » » в форуме JAVA - 0 Ответы
- 17 Просмотры
-
Последнее сообщение Anonymous
-