Anatoly
Антон, если есть уже код на С++, то, конечно, не рационально его портировать.
Anatoly
Хотя ребята из Oracle из команды Netbeans для того, чтобы использовать инструменты CLang-а в своей IDE прогнали clang clang-ом, получили AST и написали кодогенератор в Java байт код.
Anatoly
отбросив вариант с JNI
Berkus
ну JNI довольно мерзкая фигня
🐙 Antony
Berkus
как апи он почти неплох, но надо всегда за всем следить, global refs там
Berkus
я его конечно в удобный c++ завернул и даже выложил этот хелпер на bintray
Andrii
нет, кода никакого нет еще. приложение совсем простое: есть веб-приложение, а это мобильное приложение просто по сути обертка + несколько функций, которые работают с подкачанными данными, сами функции посредственные, данных не предполагается слишком много. оптимизация от выбора с++, скорее будет незаметна. почему с++? просто из моих собственных предпочтений. мне нравится этот язык, и хотелось опробовать новые инструменты и платформы, но без лишней накладной боли. я так понял, что по сути писать на с++ под андроид можно, но больно. соответсвенно, для моих скромных требований это стрельба из пушки по воробьям, я правильно все понял?)
Berkus
если писать gui - то больно, следуй советам больших контор - они пишут на плюсах общую портабельную либу с бизнес-логикой, а весь гуй оставляют нативный
Berkus
как минимум dropbox про это статью накатали пару лет назад
🐙 Antony
нет, кода никакого нет еще. приложение совсем простое: есть веб-приложение, а это мобильное приложение просто по сути обертка + несколько функций, которые работают с подкачанными данными, сами функции посредственные, данных не предполагается слишком много. оптимизация от выбора с++, скорее будет незаметна. почему с++? просто из моих собственных предпочтений. мне нравится этот язык, и хотелось опробовать новые инструменты и платформы, но без лишней накладной боли. я так понял, что по сути писать на с++ под андроид можно, но больно. соответсвенно, для моих скромных требований это стрельба из пушки по воробьям, я правильно все понял?)
Под Андройдом нельзя запустить чистое C++ приложение (если ты не производитель устройств). Под Андройдом можно запускать только Яву, которая вызывает С++. Все простое взаиможействие с UI через Яву идёт.
Тоесть если приложение нужно только чтобы UI отрисовать, то просто негде будет применить C++
Stanislav
Arseny
И взаимодействие между java и c++ довольно мерзкое.
Stanislav
у тех же qt есть небольшая обертка на жабке
Stanislav
если нужны спицифик фичи платформы, добро пожаловать в жабомир
Andrii
(((
Berkus
Stanislav
ну а в целом, я тот же openhomm свой ( не касасяь деталей opegnl) вполне просто запустил на андроиде
🐙 Antony
у тех же qt есть небольшая обертка на жабке
Я про Qt на Андройде ничего не знаю. Кто-нить может вкратце рассказать как оно работает? Оно провязоно с Java, или просто отрисоввывает всё под капотом через OpenGL как игры делают?
Berkus
покажу кусочек кода
void
ClientListener::onMemberAdded(ITMemberPtr memberPtr)
{
LOGP_D(TAG) << "onMemberAdded";
ScopedLocalRefFrame localFrame;
auto clientContext = getClientContextFromNativeHandle(localFrame, chatClient_);
RETURN_IF_NULL(clientContext);
jobject member = clientContext->memberCache.getCachedOrCreate(memberPtr, clientContext);
chatClient_.call<void>(onMemberAdded_, member);
}
Berkus
вызывает джавоский листенер колбек при событии, например
Stanislav
Stanislav
а вот дальше...
Stanislav
самый простой способ как оно там работает, сделать приложуху в креаторе и под андроид компильнуть
Andrii
ну хорошо, а как дела с ios обстоят? там должно все полегче быть? или нет?
Berkus
Berkus
тоже то ещё развлечение
Arseny
Если есть C интерфейс, то вообще никаких проблем.
Stanislav
Berkus
Andrii
хорошо, я примерно понял, спасибо за ответы)
Anatoly
Крылатый
@AlexRst вакансии к @AlexFails
Крылатый
@AlexRst Читайте правила чатов в шапке!
💡Alex
Anatoly
Anatoly
http://blog.qt.io/blog/2013/07/23/anatomy-of-a-qt-5-for-android-application/
Berkus
Berkus
и давно objc умеет напрямую с++ либы вызывать?
Олександр
оборачиваешь в Qt и норм
Berkus
нде
Berkus
принести целый qt вместо того чтобы сделать тонкий бридж на objc++
Олександр
речь шла в контексте Qt, нет?
Berkus
насколько я знаю, нет, вообще использование C++ в мобильных платформах
Олександр
Олександр
https://habrahabr.ru/post/137469/
Олександр
Constantine
@webreh
Спасибо, ознакомлюсь)
Constantine
Они же не забыли предложить внедрить __super в стандарт?)
Constantine
Еще у меня был провал в реализации кода, который обязывает вызывать метод предка при override
Constantine
И я не хочу singal/slot в стандарт, вместо это есть штука лучшее
Alexey
Enable providing longstanding best practices as reusable libraries instead of English guides/books, to have an
easily adopted vocabulary (e.g., interface, value) instead of lists of rules to be memorized (e.g., remember
this coding pattern to write an abstract base class or value type, relying on tools to find mistakes).
Alexey
Интересная мысль
🦥Alex Fails
Berkus
🦥Alex Fails
Dumitru
🦥Alex Fails
Dumitru
Dumitru
🦥Alex Fails
Dumitru
Не знал что он позволяет такое
🦥Alex Fails
Вообще можно все конечно и самому создать процесс, сперев добрую часть исходников лоадера, нр это сложно
Matway
Да, наверное. Соглашусь
Хотя лучше было бы уточнить, что GUI приложение на Андроиде без джавы вроде бы никак.
Matway
Dumitru
🦥Alex Fails
Dumitru
🦥Alex Fails
Но говно с OOM, который в андроиде возведен в религию
Roman
как считаете, если секвенцию потоков запрещено раздваивать, т.е. к одному потоку присоеденять несколько других:
var streamA = QuickStreams.create(...)
var streamA_1 = streamA.attach(...)
var streamA_2 = streamA.attach(...)
и всё-же программист это сделал - он по сути внедрил undefined behavior.
Вопрос: Уместно ли будет кинуть exception во время исполнения по этому поводу?