Я создаю приложение Android с нуля, которое будет принимать данные JSON из HTTP API, преобразовывать их в POJO, а затем использовать эти POJO во всем приложении для различной логики.
Поскольку я начинаю с нуля, я провел некоторое исследование, чтобы выяснить, что я считаю лучшей библиотекой для обработки этих запросов API. Не стесняйтесь исправлять меня, если я совершенно не прав , потому что у меня было много проблем с поиском более свежей информации, но мне кажется, что Модернизация является одним из более быстрые библиотеки для этого (я знаю, это ссылка 2013 года, но я не нашел много "недавней" информации по этому вопросу)
Заглядывая в Retrofit, он использует «конвертеры» для анализа необработанного текста ответа в POJO. По умолчанию они включают такие вещи, как GSON, Джексон, Моти и некоторые другие вещи, о которых я не слышал. Некоторое дальнейшее прибегание к гуглу предполагает, что jsoniter - самый быстрый вариант (это фактически с 2018 года)
Оглядываясь вокруг, я нашел кого-то, кто создал конвертер для Retrofit, который использует jsoniter (последнее обновление в декабре 2017 года)
В README для этого проекта упоминается, что режим декодирования по умолчанию - DecodingMode.REFLECTION_MODE
. Глядя на собственные документы jsoniter по теме , режим отражения звучит так, как будто он самый медленный . Для производительности они рекомендуют либо динамическую генерацию кода, либо статическую генерацию кода. Прочитав документацию по генерации статического кода, они предоставят ссылку на пример для Android
Последняя демонстрация была обновлена в декабре 2017 года, поэтому она не , что старая. Но я не могу заставить код работать в моем собственном проекте. Я скопировал следующее в мой build.gradle
файл (из их build.gradle
файла):
afterEvaluate {
android.applicationVariants.all { variant ->
variant.javaCompiler.finalizedBy(jsoniterStaticCodgen)
}
}
task jsoniterStaticCodgen(type:JavaExec) {
classpath configurations.getByName(android.sourceSets.main.compileConfigurationName)
classpath project.buildDir.toString() + '/intermediates/classes/release'
classpath project.buildDir.toString() + '/intermediates/classes/debug'
main = 'com.jsoniter.static_codegen.StaticCodegen'
args 'com.mycompany.myapplication.CodegenConfig'
workingDir = android.sourceSets.main.java.srcDirs[0].toString()
standardOutput = System.out
errorOutput = System.err
}
Затем я попытался нажать кнопку Sync Now
в Android Studio и встретил следующую ошибку:
ERROR: Could not get unknown property 'applicationVariants' for object of type com.android.build.gradle.LibraryExtension.
Что я делаю не так?