t
Sept. 3, 2020, 2:31 p.m.

Qt Android. Компиляция бинарного исполняемого фала простого консольного приложения

Android, Qt, NDK

Возможно ли ресурсами Qt и комплекта для Android скомпилировать консольное приложение не в apk, а в самостоятельный исполняемый файл, который можно просто вызвать из системной консоли?

2

Do you like it? Share on social networks!

4
Evgenii Legotckoi
  • Sept. 3, 2020, 2:51 p.m.
  • (edited)

Из системной консоли чего? PC или Android устройства (ну мало ли, не ясно что вы имели ввиду)?

Вообще, если хотите иметь бинарник, типо *.exe или исполняемый бинарник под Linux. То нет, не можете для этого использовать комплект для Android . Для этого нужно использовать соответствующие комплекты (MSVC, GCC и т.д.)

    t
    • Sept. 3, 2020, 3:53 p.m.

    Из системной консоли android. Чтобы я изнутри андроида мог через консоль запустить программу. Для примера, я из консоли могу запустить программу ping, которая, как раз является таким исполняемым бинарником.
    По скольку, используя напрямую компилятор NDK, я могу собрать проект в качестве исполняемого файла, который можно просто запустить из консоли андроида, и комплект android для Qt в основе использует NDK, я подумал, что возможно проект настроить как-то так, чтобы на выходе была самостоятельная программа, а не установочный пакет.
    Если же я могу менять через gradle тип собираемого проекта (apk, aar), то, возможно можно как-то указать чтобы на выходе был so-файл или ещё какой-нибудь вариант.

      Evgenii Legotckoi
      • Sept. 3, 2020, 6:15 p.m.
      • (edited)

      Это маловероятно. Сама по себе архитектура Android требует, чтобы приложения являлись GUI приложениями.
      А ping программа является настолько базовой, что было бы странно, если бы её там не было и в принципе логично, что она там является консольной.

      Но если честно, я не совсем верю, что системная консоль, о которой вы говорите, это именно классическая консоль, как в Linux. Это точно не приложение, которое скачано из Google Play, и которое эмулирует терминал?
      Ну либо у вас какая-то кастомная прошивка на разлоченном девайсе.

      Во всяком случае я не встречал ни единого упоминания о том, чтобы с использованием Qt нечто подобное делали.

        t
        • Sept. 3, 2020, 7:27 p.m.

        Ну, написать как-раз таки косольную программу посредством NDK и STL проблем не составляет. Уже много было реализовано подобных проектов у меня.
        А тут вопрос заключается в использовании Qt для этих целей.
        Что касается консоли на андроиде, то она, конечно есть, как и в любой unix-подобной системе. Это низкий уровень ОС, до любого GUI. А то что устанавливается из Google Play - это просто приложение которое может дать доступ к данной консоли, но не создаёт её.
        Местами, может не точно выразился, но суть передана верно.
        Для примера:
        Предположим, что уже есть компилятор от NDK под конкретную архитектуру. Также, есть исходный код:

        1. #include <stdio.h>
        2.  
        3. int main ()
        4. {
        5. puts("hello world");
        6. }

        Его можно скомпилировать оговоренным выше компилятором такой командой:

        1. ~/arm/bin/clang -pie hello_world.c -o hello_world

        На выходе будет обычная программа hello_world, подобная тому же ping, которая выведет в консоль "hello world".

          Comments

          Only authorized users can post comments.
          Please, Log in or Sign up
          • Last comments
          • AK
            April 1, 2025, 11:41 a.m.
            Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
          • Evgenii Legotckoi
            March 9, 2025, 9:02 p.m.
            К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
          • VP
            March 9, 2025, 4:14 p.m.
            Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
          • ИМ
            Nov. 22, 2024, 9:51 p.m.
            Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
          • Evgenii Legotckoi
            Oct. 31, 2024, 11:37 p.m.
            Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup