Android: ненависть, выраженная словами
От: Dair Россия https://dair.spb.ru
Дата: 21.07.18 08:30
Оценка: +12 -2 :))) :)
Нет сил держать в себе.
Содержит субъективную ненависть к платформе Android вообще и создателям её отдельных частей в частности.


Я с 2008 года пишу под iOS, с 2009 — под ОС Андроид.
До этих мобильных был embedded c, C++ под десктопный Линукс, Windows Mobile, документооборот "тяжёлым клиентом" под Windows.

Возможно, именно этот порядок — сначала iOS, потом Android, и определил моё восприятие.


Нет такой вещи, которая бы в инфраструктуре ОС Андроид не вызывала бы ненависти и раздражения.
Начиная с чудесной, казалось бы, IDE Android Studio, которая запускается в два раза медленнее Xcode, на нажатия клавиш реагирует в два раза медленнее, иногда попросту отказывается выполнять какие-либо действия, мотивируя необходимостью внутренней индексации. Два раза на дню Андроид Студия говорит что есть обновления чиха того или чиха того. Под macOS в этом поделии даже клавиши не подумали сделать, приходится самостоятельно назначать, например, Cmd-Up для перехода в самый верх исходника.

NDK спасибо что есть, иначе пришлось бы писать на нелепых языках Java и Kotlin, а они, кроме как в Андроид, нужны вот где:.

Да, у iOS есть нелепые Objective-C и Swift, но С++ там компилируется на "родном" уровне.
В отличие от Android.

От чего, собсно, накатило:

Есть у меня библиотека, которая парсит специфического вида XML. На С++. Зависит, как ни странно, от libxml2. Этот libxml2 внутри Андроида есть, НО его нельзя использовать в NDK, потому что нет ни заголовочных файлов, ни нужной .so
И так с десятком библиотек общего назначения (ещё мне нужен SQLite, например), которые есть внутри Андроида как операционки, потому что это виртуальное поделие ART всё равно использует опенсорсные де-факто стандарты для своей работы.

В результате мне приходится тащить libxml2 отдельно (из репы опенсорсной части Андроида, хаха), думать, как его собирать. Android Studio предлагает все нативные сорцы собирать CMake (о, я знаком с CMake, писал на нём довольно развесистую систему сборки в своё время, под linux), НО в клоне libxml2 в репах Андроида нет поддержки CMake!!! Есть "родные" automake/autoconf. Спасибо, очень помогло.

Ещё в libxml2 есть файл Android.bp, про который гуглится, что это файл для blueprint, который как-то связан с сборочной системой с именем "soong". В документации на этот соонг написано как писать сборочные скрипты, но НИГДЕ не написано, как собрать сам, написанный на очередном нелепом языке go, этот соонг.

В состав NDK система сборки блюпринт/соонг не входит, конечно! Пишут "начинали мы с одного и того же ndk-build, но потом в NDK внедрили cmake, а в самом Андроиде soong. Криворукие дебилы, которые не могут выработать единый стандарт инфраструктуры для платформы. Free as in free fuck.

This Makefile-based system is in the process of being replaced with Soong, a new build system written in Go. During the transition, all of these makefiles are read by Kati, and generate a ninja file instead of being executed directly. That's combined with a ninja file read by Soong so that the build graph of the two systems can be combined and run as one.


StackOverflow вообще не в курсе что бывают такие проблемы. Ну, то есть, там пишут "вот cmake для libxml2", но (а) без поддержки Юникода (у меня легко могут быть нац-языковые XML в UTF-8 или даже в UTF-16, чем чёрт не шутит) (б) предлагают подправить в некоторых местах конфигурационные файлы, чего я делать не хочу, я хочу подключить libxml2 из репы Андроида как git submodule и добавить его в сборочный CMakeLists.txt выше каталогом. Но нет, фигтамбыл.

Ещё пишут "так откатись на несколько ревизий назад, там есть Android.mk, а это обычный мейкфайл!"
Нет, сука, если я откачусь на несколько ревизий назад, то я могу получить не ту библиотеку.

Как такое дичайшее, лютейшее говно собрало на себя имеющиеся 80% рынка — понимать отказываюсь.


--

Да-да, напишите мне, что я криворукий дебил и не разобрался.
Я-то разберусь, не сегодня-завтра.
А кривым в Андроиде всё останется.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.