Здравствуйте, Cyberax, Вы писали:
D>>Вот у меня есть кроссплатформенное приложение на Win/Lin/iOS/Android. Критичное иногда к времени выполнения. С++ — единственный выбор для этого. Не то чтобы я сильно фанат С++, но другого не дают.
C>Ну так а сначала написать на Java, а потом посмотреть на скорость? Или вообще на JS с Electron.
Требовать от клиента ставить Java при установке на винду — моветон.
Как поставить джаву на iOS, и пустят ли такое приложение в аппстор — поделись.
D>>Сборка нативного кода в Студии сделана на CMake, а сборка нативного кода в репах Андроида сделана на Blueprint/Soong.
D>>Стоит совершенно непонятно зачем задача сопряжения одного и другого.
C>Ну так возьми обычный libxml2 с сайта libxml и поставь в сборку. Там будет и CMake и блэкджек.
Найти CMake мне не удалось:
https://gitlab.gnome.org/GNOME/libxml2/
To build on an Unixised setup:
./configure ; make ; make install
Меня это несколько не устраивает, потому что кросс-компиляция в аж 4 архитектуры (реально, конечно, нужны две, но всё равно кросс-компиляция).
Но и это я решу. Но хотелось-то чтобы было проще. Я тут ною не от невозможности чего-то сделать, а от того что сделано сложно ну вот просто так, без каких-либо реальных причин, просто не подумали.
C>А они точно нужны? UTF-8 уже доминирует везде.
Пользовательский контент, теоретически, может быть любым. Пока это валидный XML, надо уметь парсить. В Японии "любят" родную (JIS) кодировку до сих пор, например, это про что я точно знаю.
D>>Что "зачем"? Чтобы собрать libxml2, конечно!
C>Зачем из репозитория Андроида?
Потому что в репозитории Андроида он ровно тот, который внутри Андроида. Вообще у меня была мысль с ним слинковаться, но в бандл не пихать, чтобы библиотека пользовалась системным. Но, видимо, не судьба, я уже смирился.
С "родным" репозиторием (URL выше), впрочем, всё ровно то же самое.
D>>У меня бизнеслогика на С++, которая собирается и туда, и туда.
C>Вот тут-то и вопрос — если в С++ нужно чтение XML, да ещё с кодировками, то задача выглядит уж совсем точно не для С++.
Да XML-то пример просто. Так-то, вообще, у меня есть бизнес-логика, которая:
1. Хранит на "диске" SQLite-базы
2. "Спрашивает" и "слушает" сеть (сеть на "родных" интерфейсах, через уровень абстракции)
3. По этой сети получает (в т.ч.) XML определённого формата и JSON определённого формата. Если JSON — это всего лишь моё с сервером API, то XML он по стандарту (не внутреннему), и есть (уже внутренняя) библиотека, которая умеет парсить нужный XML-формат согласно определённому стандарту. Библиотека покрыта юниттестами и гарантированно работает в нескольких продуктах. Переписывать её на Java отдельно — отдельный геморрой и человекомесяц.
4. Предоставляет двустороннее API для "фронтенда", т.е., GUI. GUI написан на "родных" фреймворках — Cocoa для iOS, Android SDK под Android.