Сделай удобно: подборка UI/UX-кейсов из цифровых и нецифровых продуктов (#20)
Продолжаю изучать различные UI/UX/CX кейсы в мобильных приложениях, веб-сайтах и в реальном мире. Дизайнерам и менеджерам по продукту, чтобы вдохновиться и добавить в заметки.
Под катом: Райф, Т-инвестиции.
Читать далее
Читать: https://habr.com/ru/articles/941228/
@a_cup_of_java | Другие наши каналы
Продолжаю изучать различные UI/UX/CX кейсы в мобильных приложениях, веб-сайтах и в реальном мире. Дизайнерам и менеджерам по продукту, чтобы вдохновиться и добавить в заметки.
Под катом: Райф, Т-инвестиции.
Читать далее
Читать: https://habr.com/ru/articles/941228/
@a_cup_of_java | Другие наши каналы
Как я сделал 2Flights: кроссплатформенное приложение для отслеживания рейсов с глобальным лидербордом
Когда закрылся App in the Air, многие путешественники остались без привычного инструмента для учёта своих перелётов. Flighty — отличное приложение, но оно работает только на iOS. Мне захотелось сделать кроссплатформенную альтернативу, доступную и для Android, и для iOS, с акцентом на визуализацию и сообщество. Так появился проект 2Flights.
Читать далее
Читать: https://habr.com/ru/articles/941520/
@a_cup_of_java | Другие наши каналы
Когда закрылся App in the Air, многие путешественники остались без привычного инструмента для учёта своих перелётов. Flighty — отличное приложение, но оно работает только на iOS. Мне захотелось сделать кроссплатформенную альтернативу, доступную и для Android, и для iOS, с акцентом на визуализацию и сообщество. Так появился проект 2Flights.
Читать далее
Читать: https://habr.com/ru/articles/941520/
@a_cup_of_java | Другие наши каналы
👎2🤣2
iOS 26. Почему нативная разработка — это преимущество и необходимость
Flutter сталкивается с новыми ограничениями, а релиз iOS 26 вносит большие изменения в нативный UI. В статье расскажем, почему выбор именно нативных технологий помогут продуктам оставаться конкурентоспособными.
Читать далее
Читать: https://habr.com/ru/companies/cleverpumpkin/articles/935480/
@a_cup_of_java | Другие наши каналы
Flutter сталкивается с новыми ограничениями, а релиз iOS 26 вносит большие изменения в нативный UI. В статье расскажем, почему выбор именно нативных технологий помогут продуктам оставаться конкурентоспособными.
Читать далее
Читать: https://habr.com/ru/companies/cleverpumpkin/articles/935480/
@a_cup_of_java | Другие наши каналы
👎12👍7🤝2👏1
Stack Inspector: мониторинг стека в iOS и macOS
Сколько реально занимает стек в вашем iOS/macOS-приложении? Давайте разберёмся, как в рантайме:
контролировать использование стека,
предотвращать stack overflow,
безопасно оптимизировать рекурсию и работу фоновых потоков.
Читать далее
Читать: https://habr.com/ru/articles/941586/
@a_cup_of_java | Другие наши каналы
Сколько реально занимает стек в вашем iOS/macOS-приложении? Давайте разберёмся, как в рантайме:
контролировать использование стека,
предотвращать stack overflow,
безопасно оптимизировать рекурсию и работу фоновых потоков.
Читать далее
Читать: https://habr.com/ru/articles/941586/
@a_cup_of_java | Другие наши каналы
Tracer — инструмент для поиска и анализа ошибок: новые фичи в 2025
С первого релиза в августе 2023 года Tracer успел стать востребованным решением. Уже к концу 2024 года в нём было зарегистрировано свыше 1 500 организаций и 5 000 пользователей и ежедневно обрабатывалось более 2,5 млрд запросов. В 2025 году количество зарегистрированных организаций превысило 1 800, а число пользователей достигло отметки в 8 000. Но это не предел, ведь работа над прокачкой инструмента не останавливается.
Читать далее
Читать: https://habr.com/ru/companies/vk/articles/941972/
@a_cup_of_java | Другие наши каналы
С первого релиза в августе 2023 года Tracer успел стать востребованным решением. Уже к концу 2024 года в нём было зарегистрировано свыше 1 500 организаций и 5 000 пользователей и ежедневно обрабатывалось более 2,5 млрд запросов. В 2025 году количество зарегистрированных организаций превысило 1 800, а число пользователей достигло отметки в 8 000. Но это не предел, ведь работа над прокачкой инструмента не останавливается.
Читать далее
Читать: https://habr.com/ru/companies/vk/articles/941972/
@a_cup_of_java | Другие наши каналы
The role of a user persona in UX and how to create it
A lot of articles and guides on how to create an effective UX design for a software product mention “sticking to a user persona” in order not to waste efforts and resources on a non-target audience. What is a user persona, how to define it, and how can it help the UX team in finding the best design solutions for a product?
Читать далее
Читать: https://habr.com/ru/articles/942046/
@a_cup_of_java | Другие наши каналы
A lot of articles and guides on how to create an effective UX design for a software product mention “sticking to a user persona” in order not to waste efforts and resources on a non-target audience. What is a user persona, how to define it, and how can it help the UX team in finding the best design solutions for a product?
Читать далее
Читать: https://habr.com/ru/articles/942046/
@a_cup_of_java | Другие наши каналы
❤2🌚2
С нуля до APK: Android-приложение для озвучки новостей из Telegram с помощью ИИ
В конце июня этого года я возвращался с дачи, слушая радио в машине. Новости по радио выходят раз в час, и их разнообразие оставляет желать лучшего. Тогда я подумал: было бы здорово, если бы было приложение, которое автоматически собирало новости из Telegram-каналов и озвучивало их голосом на русском языке.
Читать далее
Читать: https://habr.com/ru/articles/942488/
@a_cup_of_java | Другие наши каналы
В конце июня этого года я возвращался с дачи, слушая радио в машине. Новости по радио выходят раз в час, и их разнообразие оставляет желать лучшего. Тогда я подумал: было бы здорово, если бы было приложение, которое автоматически собирало новости из Telegram-каналов и озвучивало их голосом на русском языке.
Читать далее
Читать: https://habr.com/ru/articles/942488/
@a_cup_of_java | Другие наши каналы
🔥9😁6
Google меняет правила игры: верификация разработчиков и ограничения APK в Android
Google анонсировал радикальные изменения в экосистеме Android, которые затронут процесс установки приложений из сторонних источников. Новая система верификации разработчиков может перевернуть привычный подход к sideload'у APK-файлов. Давайте разберёмся, что это значит для пользователей, разработчиков и всей экосистемы Android.
Что меняется?
Согласно новости от iXBT, Google вводит обязательную верификацию разработчиков для установки APK на сертифицированных устройствах Android (то есть на большинстве смартфонов и планшетов с Google Play Services). Теперь приложения, загружаемые не из Play Store, должны быть подписаны ключами разработчиков, прошедших проверку личности через новую консоль Android Developer. Это не проверка кода на вредоносность, а именно идентификация автора приложения.
Читать далее
Читать: https://habr.com/ru/articles/942522/
@a_cup_of_java | Другие наши каналы
Google анонсировал радикальные изменения в экосистеме Android, которые затронут процесс установки приложений из сторонних источников. Новая система верификации разработчиков может перевернуть привычный подход к sideload'у APK-файлов. Давайте разберёмся, что это значит для пользователей, разработчиков и всей экосистемы Android.
Что меняется?
Согласно новости от iXBT, Google вводит обязательную верификацию разработчиков для установки APK на сертифицированных устройствах Android (то есть на большинстве смартфонов и планшетов с Google Play Services). Теперь приложения, загружаемые не из Play Store, должны быть подписаны ключами разработчиков, прошедших проверку личности через новую консоль Android Developer. Это не проверка кода на вредоносность, а именно идентификация автора приложения.
Читать далее
Читать: https://habr.com/ru/articles/942522/
@a_cup_of_java | Другие наши каналы
👎12😐6👍3👀3😁1
Мобильная разработка за неделю #600 (25 — 31 августа)
В этом “юбилейном” выпуске память в Swift и ужесточение проверки разработчиков для сторонней установки приложений от Google, очередная смерть Flutter и инструмент для поиска и анализа ошибок, все != nil в коде, pixel-perfect тестирования дизайн-системы в Android, Польша как главный рынок приложений Европы и многое другое. Заходите!
Читать далее
Читать: https://habr.com/ru/articles/942534/
@a_cup_of_java | Другие наши каналы
В этом “юбилейном” выпуске память в Swift и ужесточение проверки разработчиков для сторонней установки приложений от Google, очередная смерть Flutter и инструмент для поиска и анализа ошибок, все != nil в коде, pixel-perfect тестирования дизайн-системы в Android, Польша как главный рынок приложений Европы и многое другое. Заходите!
Читать далее
Читать: https://habr.com/ru/articles/942534/
@a_cup_of_java | Другие наши каналы
Compose Multiplatform простое приложение c MVI
Статья об использовании мультиплатформенного Android и iOs решения на Compose с минимальным количеством сторонних beta библиотек
Из сторонних beta библиотек используется buildkonfig = "0.17.1"
Room - База данных
ktor - Network. Также задействован embeddedServer для эмуляции сервера
coin - Di
Coroutine Flow
Compose Navigation
Clean Architecture
Читать далее
Читать: https://habr.com/ru/articles/941196/
@a_cup_of_java | Другие наши каналы
Статья об использовании мультиплатформенного Android и iOs решения на Compose с минимальным количеством сторонних beta библиотек
Из сторонних beta библиотек используется buildkonfig = "0.17.1"
Room - База данных
ktor - Network. Также задействован embeddedServer для эмуляции сервера
coin - Di
Coroutine Flow
Compose Navigation
Clean Architecture
Читать далее
Читать: https://habr.com/ru/articles/941196/
@a_cup_of_java | Другие наши каналы
❤7
Compose Multiplatform простое приложение c MVI
Статья об использовании мультиплатформенного Android и iOs решения на Compose с минимальным количеством сторонних beta библиотек
Из сторонних beta библиотек используется buildkonfig = "0.17.1"
Room - База данных
ktor - Network. Также задействован embeddedServer для эмуляции сервера
coin - Di
Coroutine Flow
Compose Navigation
Clean Architecture
Читать далее
Читать: https://habr.com/ru/articles/941196/
@a_cup_of_java | Другие наши каналы
Статья об использовании мультиплатформенного Android и iOs решения на Compose с минимальным количеством сторонних beta библиотек
Из сторонних beta библиотек используется buildkonfig = "0.17.1"
Room - База данных
ktor - Network. Также задействован embeddedServer для эмуляции сервера
coin - Di
Coroutine Flow
Compose Navigation
Clean Architecture
Читать далее
Читать: https://habr.com/ru/articles/941196/
@a_cup_of_java | Другие наши каналы
🔥4
Где искать оплачиваемые стажировки в IT в 2025
Стажировка — это шанс получить реальный опыт и понять, как устроена работа в индустрии. Но найти оплачиваемую программу, которая даст первый полезный опыт дальше для резюме, всё ещё сложно. Мы собрали проверенные направления, которые помогают студентам, джунам и тем, кто переквалифицируется, начать карьеру в IT.
— Читать дальше «Где искать оплачиваемые стажировки в IT в 2025»
Стажировка — это шанс получить реальный опыт и понять, как устроена работа в индустрии. Но найти оплачиваемую программу, которая даст первый полезный опыт дальше для резюме, всё ещё сложно. Мы собрали проверенные направления, которые помогают студентам, джунам и тем, кто переквалифицируется, начать карьеру в IT.
— Читать дальше «Где искать оплачиваемые стажировки в IT в 2025»
👎3👍1
Упрощаем NFC: обзор нового SDK для Android разработки
Работа с NFC в Android всегда была непростой задачей. Нативный API требует от разработчика понимания низкоуровневых протоколов и механизмов обработки данных. Новый TAO NFC SDK (Android) призван решить эту проблему, предоставляя высокоуровневую абстракцию, которая значительно упрощает взаимодействие с NFC-метками.
Читать далее
Читать: https://habr.com/ru/articles/942474/
@a_cup_of_java | Другие наши каналы
Работа с NFC в Android всегда была непростой задачей. Нативный API требует от разработчика понимания низкоуровневых протоколов и механизмов обработки данных. Новый TAO NFC SDK (Android) призван решить эту проблему, предоставляя высокоуровневую абстракцию, которая значительно упрощает взаимодействие с NFC-метками.
Читать далее
Читать: https://habr.com/ru/articles/942474/
@a_cup_of_java | Другие наши каналы
❤3
Интересная «Request-Based» архитектура на примере Блокнота с открытым исходным кодом
Привет, меня зовут Саша и я Android-разработчик :)
Разрабатывая мобильные приложения я обратил внимание что все операции которые делает приложение - это по сути запросы данных от разных источников.
Часто источниками данных являются: человек, сервер и устройство (User, Server, Platform).
Приложение принимает данные от какого-то источника, преобразует их и выдает преобразованные данные другому источнику и так пока не дойдет до корня дерева запросов.
Подобно тому как вызовы функций вкладываются друг в друга:
Читать далее
Читать: https://habr.com/ru/articles/942762/
@a_cup_of_java | Другие наши каналы
Привет, меня зовут Саша и я Android-разработчик :)
Разрабатывая мобильные приложения я обратил внимание что все операции которые делает приложение - это по сути запросы данных от разных источников.
Часто источниками данных являются: человек, сервер и устройство (User, Server, Platform).
Приложение принимает данные от какого-то источника, преобразует их и выдает преобразованные данные другому источнику и так пока не дойдет до корня дерева запросов.
Подобно тому как вызовы функций вкладываются друг в друга:
Читать далее
Читать: https://habr.com/ru/articles/942762/
@a_cup_of_java | Другие наши каналы
❤2
Как я ездил в Узбекистан чтобы создать юрлицо и почему IT Park в Узбекистане — это находка для айтишников?
Всем привет! Меня зовут Александр Антипин и я руковожу небольшой студией разработки. Мы разрабатываем мобильные игры и IT-решения для компаний. В этой статье я расскажу про IT Park в Узбекистане — место, которое сейчас активно обсуждают в айтишных чатах. Если вы думаете, что это просто хайп, то я попробую вас переубедить. За пару дней в Ташкенте я успел зарегистрировать компанию, открыть счёт, получить карты и даже съездить в Самарканд, чтобы проникнуться духом города с 2500-летней историей. Но обо всём по порядку: зачем вообще туда ехать, почему именно Узбекистан, какие бонусы даёт IT Park и как там живётся?
Читать далее
Читать: https://habr.com/ru/articles/942804/
@a_cup_of_java | Другие наши каналы
Всем привет! Меня зовут Александр Антипин и я руковожу небольшой студией разработки. Мы разрабатываем мобильные игры и IT-решения для компаний. В этой статье я расскажу про IT Park в Узбекистане — место, которое сейчас активно обсуждают в айтишных чатах. Если вы думаете, что это просто хайп, то я попробую вас переубедить. За пару дней в Ташкенте я успел зарегистрировать компанию, открыть счёт, получить карты и даже съездить в Самарканд, чтобы проникнуться духом города с 2500-летней историей. Но обо всём по порядку: зачем вообще туда ехать, почему именно Узбекистан, какие бонусы даёт IT Park и как там живётся?
Читать далее
Читать: https://habr.com/ru/articles/942804/
@a_cup_of_java | Другие наши каналы
👍3👎3
Flutter дайджест — Лето 2025 (июль + август)
Привет, друзья! ☀️ Лето подходит к концу, а значит самое время подвести итоги и вспомнить, что интересного произошло во Flutter-мире за два месяца.
Впереди осень 🍂 — и мы готовим ещё больше новостей, релизов и туториалов. Ну а пока наслаждайтесь нашим летним дайджестом.
А ещё — поздравляем студентов и школьников с Днём знаний! 🎓 Пусть учёба будет лёгкой, а знания по Flutter и Dart только умножаются. Канал FlutterPulse будет развиваться и расти вместе с вами 🚀
Читать далее
Читать: https://habr.com/ru/articles/942808/
@a_cup_of_java | Другие наши каналы
Привет, друзья! ☀️ Лето подходит к концу, а значит самое время подвести итоги и вспомнить, что интересного произошло во Flutter-мире за два месяца.
Впереди осень 🍂 — и мы готовим ещё больше новостей, релизов и туториалов. Ну а пока наслаждайтесь нашим летним дайджестом.
А ещё — поздравляем студентов и школьников с Днём знаний! 🎓 Пусть учёба будет лёгкой, а знания по Flutter и Dart только умножаются. Канал FlutterPulse будет развиваться и расти вместе с вами 🚀
Читать далее
Читать: https://habr.com/ru/articles/942808/
@a_cup_of_java | Другие наши каналы
👎1
Android. Glance Widgets. Начало
По разным причинам мы начинаем изучать что-то новое. Будь то углубленный курс по твоей специализации. Или это что-то стороннее, получить навык, который давно хотел освоить. И вот мы сталкиваемся с новым и попадаем в цикл понятно/ничего непонятно.
Статья для тех, кто хочет изучить Glance виджеты на Android. Посмотреть на существующие проблемы, про подводные камни и увидеть способы их решения. Полезно делиться опытом
Читать далее
Читать: https://habr.com/ru/articles/942886/
@a_cup_of_java | Другие наши каналы
По разным причинам мы начинаем изучать что-то новое. Будь то углубленный курс по твоей специализации. Или это что-то стороннее, получить навык, который давно хотел освоить. И вот мы сталкиваемся с новым и попадаем в цикл понятно/ничего непонятно.
Статья для тех, кто хочет изучить Glance виджеты на Android. Посмотреть на существующие проблемы, про подводные камни и увидеть способы их решения. Полезно делиться опытом
Читать далее
Читать: https://habr.com/ru/articles/942886/
@a_cup_of_java | Другие наши каналы
События, которым можно доверять: выстраивание процесса работы с разметкой приложения с точки зрения аналитика
Привет! Меня зовут Николай Олигеров. Сейчас я работаю аналитиком данных в Яндекс Путешествиях, а до этого я был продуктовым аналитиком в Лавке — мой рассказ будет именно про неё.
В какой‑то момент мы поняли, что больше не можем доверять своей событийной аналитике: события дублировались, параметры терялись, триггеры срабатывали не тогда, когда нужно. В статье расскажу, как мы полностью пересобрали систему разметки приложения Лавки: с автотестами, документацией, мониторингами и прозрачным процессом, где аналитики и разработка работают вместе.
Читать далее
Читать: https://habr.com/ru/companies/yandex/articles/940728/
@a_cup_of_java | Другие наши каналы
Привет! Меня зовут Николай Олигеров. Сейчас я работаю аналитиком данных в Яндекс Путешествиях, а до этого я был продуктовым аналитиком в Лавке — мой рассказ будет именно про неё.
В какой‑то момент мы поняли, что больше не можем доверять своей событийной аналитике: события дублировались, параметры терялись, триггеры срабатывали не тогда, когда нужно. В статье расскажу, как мы полностью пересобрали систему разметки приложения Лавки: с автотестами, документацией, мониторингами и прозрачным процессом, где аналитики и разработка работают вместе.
Читать далее
Читать: https://habr.com/ru/companies/yandex/articles/940728/
@a_cup_of_java | Другие наши каналы
🤨2
Проверил график изменения цен и увидел совсем не то, что показывал маркетплейс
Вы заглядываете в историю изменения цены на вайлдберриз? Кстати, раньше она и на Яндекс Маркете была, но они её убрали..
Так вот, я частенько смотрел раньше на этот график с историей цены, пока не сделал свой мониторинг цен, а как сделал - естественно меня пробрало любопытство проверить, сойдутся ли данные.
Однако график, что показывает Вб, не учитывает персональные цены для конкретных пользователей с учётом доставки. А ещё, история агрегируется за неделю, то есть по дням её посмотреть не получится, не говоря уже о проверке цены в рамках одного дня.
Получается, они показывают нам какую-то фантомную цену за последние 90 дней?.. Нашёл пример товара с графиком (он ещё и не для всех товаров показывается), и что мы видим:
Читать далее
Читать: https://habr.com/ru/articles/942998/
@a_cup_of_java | Другие наши каналы
Вы заглядываете в историю изменения цены на вайлдберриз? Кстати, раньше она и на Яндекс Маркете была, но они её убрали..
Так вот, я частенько смотрел раньше на этот график с историей цены, пока не сделал свой мониторинг цен, а как сделал - естественно меня пробрало любопытство проверить, сойдутся ли данные.
Однако график, что показывает Вб, не учитывает персональные цены для конкретных пользователей с учётом доставки. А ещё, история агрегируется за неделю, то есть по дням её посмотреть не получится, не говоря уже о проверке цены в рамках одного дня.
Получается, они показывают нам какую-то фантомную цену за последние 90 дней?.. Нашёл пример товара с графиком (он ещё и не для всех товаров показывается), и что мы видим:
Читать далее
Читать: https://habr.com/ru/articles/942998/
@a_cup_of_java | Другие наши каналы
👎2
[Перевод] Claude Code: лучшие практики агентного программирования
Иногда действительно лучше промолчать, чем писать что-то ради «галочки». На днях мы в команде вспомнили о методичке Anthropic по Claude Code и поняли — добавить к ней практически нечего, конечно, кроме наших советов об использовании этого инструмента. Все подходы, которые появились у нас с помощью этой практики, теперь вошли в официальные гайды лидеров в области ИИ-агентов.
В общем, если вы хотите разобраться в агентном программировании — не проходите мимо этого перевода с комментариями руководителя отдела Flutter-разработки Surf Марка.
Читать дальше
Читать: https://habr.com/ru/companies/surfstudio/articles/943108/
@a_cup_of_java | Другие наши каналы
Иногда действительно лучше промолчать, чем писать что-то ради «галочки». На днях мы в команде вспомнили о методичке Anthropic по Claude Code и поняли — добавить к ней практически нечего, конечно, кроме наших советов об использовании этого инструмента. Все подходы, которые появились у нас с помощью этой практики, теперь вошли в официальные гайды лидеров в области ИИ-агентов.
В общем, если вы хотите разобраться в агентном программировании — не проходите мимо этого перевода с комментариями руководителя отдела Flutter-разработки Surf Марка.
Читать дальше
Читать: https://habr.com/ru/companies/surfstudio/articles/943108/
@a_cup_of_java | Другие наши каналы
👎1
Запуск бинарных файлов из data/data на Android 10+ (Обход SELinux)
Всем привет! Как многие знают, с Android 10 (Target sdk 29) google ввели новую политику безопасности. Новая политика SELinux звучит просто: "Нельзя исполнять файлы из той директории, в которую можно записывать". Всё это очень хорошо, но многие проекты сломались (В том числе и мой). Termux из google play УМЕЕТ запускать бинарные файлы на target sdk 29+. Я решил поделится как выполнить бинарный файл из data/data/com.ваш.пакет/files на новых версиях sdk БЕЗ полного клонирования Termux и БЕЗ С/C++ части. Сам метод запуска будет именно на java. Репозиторий termux, откуда был взят способ: https://github.com/termux-play-store/termux-apps
В чём суть, любой бинарный файла который вы запускаете имеет свой контекст. Если вы запускаете через нативную директорию (data/app/и так далее) перед этим положив бинарные файлы в jniLins - контекст у такого бинарного файла будет правильным и SELinux даст разрешение на запуск (Granted), но в случае с data/data другой случай, оттуда SELinux УЖЕ ОТКАЖЕТСЯ запускать бинарный файл (Denied). Разрешил SELinux запуск или отклонил можно смотреть в logcat. Однако, в системе существует системная утилита которая может запустить бинарник, а самое главное - SELinux РАЗРЕШИТ ей запустится, так как она системная. Её имя - linker или linker64 (Зависит от разрядности, 32 бита или 64)
Запустив линкер и передав ему наш бинарный файл из data/data - SELinux разрешит ему выполнится и сразу разрешит исполнение нашего бинарного файла. Тут сразу возникает вопрос, а если бинарный файл попробует подключить so библиотеку? Ей будет отказано? Здесь тоже есть решение, существует termux-exec. Это бинарный файл, который перехватывает попытку подключения чего либо и выполняет трюк с линкером. (linker или linker64 определяет автоматически). Вы можете собрать его из исходников (https://github.com/termux-play-store/termux-exec), но лично я полностью скопировал среду (Где этот уже собранный файл идёт в usr/lib) termux, так как мне нужно было запускать OpenJDK 17 под termux.
Читать далее
Читать: https://habr.com/ru/articles/943188/
@a_cup_of_java | Другие наши каналы
Всем привет! Как многие знают, с Android 10 (Target sdk 29) google ввели новую политику безопасности. Новая политика SELinux звучит просто: "Нельзя исполнять файлы из той директории, в которую можно записывать". Всё это очень хорошо, но многие проекты сломались (В том числе и мой). Termux из google play УМЕЕТ запускать бинарные файлы на target sdk 29+. Я решил поделится как выполнить бинарный файл из data/data/com.ваш.пакет/files на новых версиях sdk БЕЗ полного клонирования Termux и БЕЗ С/C++ части. Сам метод запуска будет именно на java. Репозиторий termux, откуда был взят способ: https://github.com/termux-play-store/termux-apps
В чём суть, любой бинарный файла который вы запускаете имеет свой контекст. Если вы запускаете через нативную директорию (data/app/и так далее) перед этим положив бинарные файлы в jniLins - контекст у такого бинарного файла будет правильным и SELinux даст разрешение на запуск (Granted), но в случае с data/data другой случай, оттуда SELinux УЖЕ ОТКАЖЕТСЯ запускать бинарный файл (Denied). Разрешил SELinux запуск или отклонил можно смотреть в logcat. Однако, в системе существует системная утилита которая может запустить бинарник, а самое главное - SELinux РАЗРЕШИТ ей запустится, так как она системная. Её имя - linker или linker64 (Зависит от разрядности, 32 бита или 64)
Запустив линкер и передав ему наш бинарный файл из data/data - SELinux разрешит ему выполнится и сразу разрешит исполнение нашего бинарного файла. Тут сразу возникает вопрос, а если бинарный файл попробует подключить so библиотеку? Ей будет отказано? Здесь тоже есть решение, существует termux-exec. Это бинарный файл, который перехватывает попытку подключения чего либо и выполняет трюк с линкером. (linker или linker64 определяет автоматически). Вы можете собрать его из исходников (https://github.com/termux-play-store/termux-exec), но лично я полностью скопировал среду (Где этот уже собранный файл идёт в usr/lib) termux, так как мне нужно было запускать OpenJDK 17 под termux.
Читать далее
Читать: https://habr.com/ru/articles/943188/
@a_cup_of_java | Другие наши каналы
❤7