Мое мобильное приложение содержит довольно много жестко запрограммированных данных, которыми я хочу поделиться с нативными версиями приложения для Android и iOS.Я не хочу создавать два файла настроек для каждого приложения: я хотел бы иметь одно место, где хранится информация.
Первой мыслью было использование файла JSON, встроенного в мое приложение, и декодирование его ввремя выполнения.
Вместо этого моя цель здесь - десериализовать данные приложения во время компиляции, чтобы:
- отслеживать потенциальные ошибки в файле JSON или коде декодирования перед отправкой приложения: сборка не удастся вместо
- избежать замедления некоторой десериализацией во время запуска
- избежать сохранения незашифрованных данных приложения в виде файлов JSON (.ipa / .apk - это zip-файлы, где ресурсы могутбыть легко извлеченным), я бы лучше запутал его в коде
Я ищу инструмент командной строки, который я мог бы добавить в свои сценарии сборки, которые дали бы файлу JSON вывод схемы и таким образомКлассы AND создают объект со всеми настройками приложения.
Например, с учетом следующего файла settings.json:
{
"gravity": 9.81,
"scientists": ["Kepler", "Einstein", "Newton"],
"planets": [
{
"name": "Mars",
"radius": 3390
},
{
"name": "Venus",
"radius": 6052
}
]
}
I woВы хотели бы автоматически генерировать файл Settings.swift, который может выглядеть следующим образом:
struct Settings {
struct Planet {
var name: String
var radius: Int
}
var gravity: Double
var scientists: [String]
var planets: [Planet]
static func content() -> Settings {
return Settings(gravity: 9.81, scientists: ["Kepler", "Einstein", "Newton"], planets: [Planet(name: "Mars", radius: 3390), Planet(name: "Venus", radius: 6052)])
}
}
Затем я могу включить сгенерированный файл в мой проект и один раз вызвать Settings.content (), сохранить его в глобальной переменной ииспользуйте его в моем проекте.
Я хочу добиться того же с Android.
Такие инструменты, как quicktype или json2swift, выполняют половину работы и не генерируют бит создания объекта, который до сих порнужно сделать во время выполнения.
Есть идеи?