Anatoly
Антон, если есть уже код на С++, то, конечно, не рационально его портировать.
Anatoly
Хотя ребята из Oracle из команды Netbeans для того, чтобы использовать инструменты CLang-а в своей IDE прогнали clang clang-ом, получили AST и написали кодогенератор в Java байт код.
Anatoly
отбросив вариант с JNI
Berkus
ну JNI довольно мерзкая фигня
Berkus
как апи он почти неплох, но надо всегда за всем следить, global refs там
Berkus
я его конечно в удобный c++ завернул и даже выложил этот хелпер на bintray
Andrii
нет, кода никакого нет еще. приложение совсем простое: есть веб-приложение, а это мобильное приложение просто по сути обертка + несколько функций, которые работают с подкачанными данными, сами функции посредственные, данных не предполагается слишком много. оптимизация от выбора с++, скорее будет незаметна. почему с++? просто из моих собственных предпочтений. мне нравится этот язык, и хотелось опробовать новые инструменты и платформы, но без лишней накладной боли. я так понял, что по сути писать на с++ под андроид можно, но больно. соответсвенно, для моих скромных требований это стрельба из пушки по воробьям, я правильно все понял?)
Berkus
если писать gui - то больно, следуй советам больших контор - они пишут на плюсах общую портабельную либу с бизнес-логикой, а весь гуй оставляют нативный
Berkus
как минимум dropbox про это статью накатали пару лет назад
🐙 Antony
нет, кода никакого нет еще. приложение совсем простое: есть веб-приложение, а это мобильное приложение просто по сути обертка + несколько функций, которые работают с подкачанными данными, сами функции посредственные, данных не предполагается слишком много. оптимизация от выбора с++, скорее будет незаметна. почему с++? просто из моих собственных предпочтений. мне нравится этот язык, и хотелось опробовать новые инструменты и платформы, но без лишней накладной боли. я так понял, что по сути писать на с++ под андроид можно, но больно. соответсвенно, для моих скромных требований это стрельба из пушки по воробьям, я правильно все понял?)
Под Андройдом нельзя запустить чистое C++ приложение (если ты не производитель устройств). Под Андройдом можно запускать только Яву, которая вызывает С++. Все простое взаиможействие с UI через Яву идёт. Тоесть если приложение нужно только чтобы UI отрисовать, то просто негде будет применить C++
Arseny
И взаимодействие между java и c++ довольно мерзкое.
Stanislav
у тех же qt есть небольшая обертка на жабке
Stanislav
если нужны спицифик фичи платформы, добро пожаловать в жабомир
Andrii
(((
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
самый простой способ как оно там работает, сделать приложуху в креаторе и под андроид компильнуть
Andrii
ну хорошо, а как дела с ios обстоят? там должно все полегче быть? или нет?
Berkus
тоже то ещё развлечение
Arseny
Если есть C интерфейс, то вообще никаких проблем.
Andrii
хорошо, я примерно понял, спасибо за ответы)
Крылатый
@AlexRst вакансии к @AlexFails
Олександр
ну хорошо, а как дела с ios обстоят? там должно все полегче быть? или нет?
нет, тонна геморроя из-за секьюрности системы(айос), но красивее выглядит + нет тысяч неизвестных устройств
Крылатый
@AlexRst Читайте правила чатов в шапке!
Олександр
там надо бриджить c++ в objc через objc++
нет, только если нужны нативные плагины. И то, обдж-си подучил и всё изи
Anatoly
http://blog.qt.io/blog/2013/07/23/anatomy-of-a-qt-5-for-android-application/
Berkus
нет, только если нужны нативные плагины. И то, обдж-си подучил и всё изи
не нужно, если интегрируешь c++ либу? спасибо, не знал
Berkus
и давно objc умеет напрямую с++ либы вызывать?
Олександр
оборачиваешь в Qt и норм
Berkus
нде
Berkus
оборачиваешь в Qt и норм
я не буду сильно ругаться, но это хуйня
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
Интересная мысль
Matway
Ложь))) мой бот написан на чистом C++, и он на андроиде крутится)
А он точно "приложение"? Может быть, это Линуксовый екзюк? :)
🦥Alex Fails
А он точно "приложение"? Может быть, это Линуксовый екзюк? :)
А разве второе не является подмножеством первого?😳
Dumitru
🦥Alex Fails
🦥Alex Fails
А как ты на Андроиде запустил его?
От тебя вообще странно слышать такие вопросы. ты тут давно сидишь, и слыхал про то, как я его пелил
Dumitru
Ты не поверишь: ./stfbot
Через рут и консоль?
Matway
А разве второе не является подмножеством первого?😳
Ну, вопрос терминологии жеж. Но в общепринятом контексте скорее Antony прав :)
🦥Alex Fails
Через рут и консоль?
Через консоль безрутную
Dumitru
Через консоль безрутную
Значит я в Андроиде вообще не шарю 😂
Dumitru
Не знал что он позволяет такое
🦥Alex Fails
Вообще можно все конечно и самому создать процесс, сперев добрую часть исходников лоадера, нр это сложно
Matway
Да, наверное. Соглашусь
Хотя лучше было бы уточнить, что GUI приложение на Андроиде без джавы вроде бы никак.
🦥Alex Fails
Хотя лучше было бы уточнить, что GUI приложение на Андроиде без джавы вроде бы никак.
можно, не очень правда пашет. См android_createDisplaySurface или мой способ с лоадером
Dumitru
Ты не поверишь: ./stfbot
А если упадет?
🦥Alex Fails
А удавалось? Я потратил полдня и забил.
Через круп пашет. Сегфолтит
🦥Alex Fails
А если упадет?
У менч есть ./inf_run_bot.sh
🦥Alex Fails
Но говно с OOM, который в андроиде возведен в религию
Roman
как считаете, если секвенцию потоков запрещено раздваивать, т.е. к одному потоку присоеденять несколько других: var streamA = QuickStreams.create(...) var streamA_1 = streamA.attach(...) var streamA_2 = streamA.attach(...) и всё-же программист это сделал - он по сути внедрил undefined behavior. Вопрос: Уместно ли будет кинуть exception во время исполнения по этому поводу?