Форум программистов, компьютерный форум, киберфорум
8Observer8
Войти
Регистрация
Восстановить пароль

SDL3 на Android: Сборка C/C++ проекта из консоли

Запись от 8Observer8 размещена 14.08.2025 в 19:44. Обновил(-а) 8Observer8 01.04.2026 в 14:31
Показов 9640 Комментарии 3

Содержание блога

Если у вас не установлены Android SDK, NDK, JDK, и т.д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т.д.

Сборка примера



  • Скачайте этот пример (с SDL3 Renderer API, который показывает квадраты при касании экрана на месте касаний) или этот пример (с OpenGL ES 2.0, который рисует простой треугольник) с GitHub. Распакуйте архив в удобную директорию (например, E:\Projects). Вы можете скачать эти zip-файлы одним кликом:
  • Скачайте SDL3-devel-3.4.0-android.zip. Извлеките файл SDL3-3.4.0.aar и поместите его в папку "app\libs"
  • Откройте файл app/build.gradle. Выберите, какой ABI вы хотите использовать. Например, "arm64-v8a" — для новых устройств, "armeabi-v7a" — для старых, "x86" и "x86_64" — для Android-эмулятора. Раскомментируйте строку abiFilters 'arm64-v8a' вот так:
    Code
    1
    2
    3
    4
    5
    
    cmake {
        arguments '-DANDROID_STL=c++_shared', '-DWITH_IMAGE=OFF', '-DWITH_MIXER=OFF'
        // abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
        abiFilters 'arm64-v8a'
    }
  • Замените версию SDL в файле app/build.gradle вот так:
    • До:
      Code
      1
      2
      3
      4
      
      dependencies {
          implementation files('libs/SDL3-3.1.3.aar')
          implementation 'androidx.appcompat:appcompat:1.5.1'
      }
    • После:
      Code
      1
      2
      3
      4
      
      dependencies {
          implementation files('libs/SDL3-3.4.0.aar')
          implementation 'androidx.appcompat:appcompat:1.5.1'
      }
  • Откройте терминал командной строки в корневой папке примера
  • Скопируйте и вставьте в CMD следующую команду:
    Bash
    1
    
    gradlew assembleDebug
  • Первая сборка у меня проходит за 20 секунд. В следующий раз, когда вы измените код, например, в src/main.c (или main.cpp), сборка будет очень быстрой - от менее секунды, до нескольких секунд
  • Вы найдёте APK-файл (app-debug.apk) в папке: app\build\outputs\apk\debug
  • Вы можете загрузить этот APK на Google Drive с ПК, чтобы установить его на Android-устройство
  • Либо вы можете установить APK к компьютера если подключите телефон USB-кабелем. Нужно будет активировать режим разработчика - спросите у ИИ как активировать режим разработчика и нужно активировать опцию должна быть активирована опция "Install via USB". Потом введите команду для проверки для установки APK из папки с файлом app-debug.apk:
    Bash
    1
    
    adb install -r app-debug.apk
  • Примечание. Для проверки подключения телефона можно ввести команду:
    Bash
    1
    
    adb devices
  • Результат команды "adb devices" примерно следующий:
    Performing Streamed Install
    Success
  • У меня приложение заняло 7.84 MB, а сам APK весит 4.21 MB
  • Попробуйте теперь что-то изменить в программе src/main.c и снова выполнить команды сборки:
    Bash
    1
    
    gradlew assembleDebug
  • И установки. Лучше открыть вторую консоль в папке app\build\outputs\apk\debug и выполнить команду:
    Bash
    1
    
    adb install -r app-debug.apk
  • Сборка и установка приложения займёт несколько секунд
  • Запускайте приложение на телефоне и смотрите на результат изменений в программе

Использование SDL3-callbacks вместо функции main



Инструкция находится здесь: Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly

Результаты запуска на телефоне



Пример SDLCross с рисованием квадратов месте касаний:



Пример на чистом OpenGL ES 2.0, который рисует треугольник зелёного цвета:



Экран телефон можно выводить на компьютере с помощью программы https://github.com/Genymobile/scrcpy через USB-кабель
Миниатюры
Нажмите на изображение для увеличения
Название: sdlcross-SDL3-Aug-14-2025.gif
Просмотров: 2796
Размер:	112.0 Кб
ID:	11049   Нажмите на изображение для увеличения
Название: 63888209f1b343c5ad007f4030afd622a7f763f3.png
Просмотров: 2771
Размер:	7.7 Кб
ID:	11051  
Вложения
Тип файла: zip sdlcross.zip (108.4 Кб, 627 просмотров)
Тип файла: zip simple-triangle-android-opengles20-sdl3-cpp.zip (110.5 Кб, 362 просмотров)
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 3
Комментарии
  1. Старый комментарий
    Инструкция для Си-проекта для Android выше базируется на этом примере одного из ключевых разработчиков SDL с ником madebr. Это достаточно простой, но базовый пример, который запускается на Android без проблем. Пример показывает, как работать с некоторыми базовыми вещам:
    • обработка касаний нескольких пальцев
    • рисование квадратов разных цветов в месте касаний
    • воспроизведение звуков при касании с помощью отдельной библиотеки SDL3_mixer
    • использование четырёх callback-функций SDL3 вместо main(), таких как: SDL_AppInit(), SDL_AppEvent(), SDL_AppIterate(), SDL_AppQuit(), как показано в базовых примерах из репозитория SDL3, например: examples/renderer/01-clear/clear.c, что позволяет использовать один и тот же код проекта для запуска на разных платформах, например: Android, Desktop, Web и т.д.
    • подключение библиотеки физики Box2D v3, написанной на Си, для определения коллизий, движения объектов и т.д.
    • использование механизма Box2D для отображения коллайдеров (физических объектов Box2D), то есть рисование прямоугольников и колец с помощью линий на SDL3

    У меня появилась идея написать инструкцию, как воссоздать подобный пример с нуля из консоли без использования IDE, а для написания кода использовать Sublime Text 4 и какой-то другой редактор. В качестве начала можно использовать команду:

    Code
    1
    
    gradle init --type java-application
    Которая создаёт консольное Desktop-приложение Java из консоли с помощью Gradle. Детальная инструкция по созданию приложения Java с нуля:
    • Скачиваем и устанавливаем JDK 17 или более новую версию
    • Скачиваем архив с Gradle 8.5 и перемещаем папку "gradle-8.5", например, на диск С.
    • Добавляем путь к Gradle (C:\gradle-8.5\bin) в переменную окружения PATH
    • Создаём новую папку для Java-проекта и запускаем CMD в этой папке
    • Набираем команду создания нового проекта в CMD:
      Bash
      1
      
      gradle init --type java-application
    • Gradle в консоли предоставит выбор: "Select build script DSL". Нажимаем клавишу 2, чтобы выбрать Groovy
    • Gradle в консоли предоставит выбор: "Select test framework". Нажмите клавишу 1, чтобы выбрать JUnit4 (это сейчас неважно)
    • Gradle в консоли спросит об имени проекта: Project name (default: my-example). Нажмите Enter
    • Gradle в консоли спросит об имени пакета: Source package (default: my.example). Нажмите Enter
    • Gradle в консоли спросит о версии JDK: Enter target version of Java (min. 7) (default: 17). Нажмите Enter
    • Gradle в консоли спросит об использовании нового API: Generate build using new APIs and behavior (some features may change in the next minor release)? (default: no) [yes, no]. Нажмите Enter
    • Проект создат. Gradle покажет сообщение "BUILD SUCCESSFUL"
    • Для запуска проекта нужно ввести команду: gradle run

    После этой команды создаётся набор папок и файлов, например: app/build.gradle, то есть это уже близко к базовому примеру на Си для Android. Остальные файлы и изменения в файлах нужно добавлять вручную из базового примера: https://github.com/madebr/sdlcross или из моего упрощённого: https://github.com/ivan-enzhae... -example-c
    Запись от 8Observer8 размещена 08.12.2025 в 14:59 8Observer8 вне форума
    Обновил(-а) 8Observer8 29.07.2026 в 18:19
  2. Старый комментарий
    Обновил самую первую инструкцию до текущей на данным момент версии SDL 3.4.0
    Запись от 8Observer8 размещена 24.01.2026 в 05:34 8Observer8 вне форума
    Обновил(-а) 8Observer8 24.01.2026 в 06:27
  3. Старый комментарий
    Запись от 8Observer8 размещена 24.01.2026 в 19:56 8Observer8 вне форума
 
Новые блоги и статьи
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru