LINUX.ORG.RU

Помогите откомпилить пример glfm

 , , ,


0

1

Продолжаю грызть кактус. Ndk-примеры гугла компилятся и запускаются на девайсе без проблем. А glfm откомпилить не получается.

Что делал:

  • скопировал из hello-jniCallback (просто первый нетривиальный пример) директорию gradle. (в gradle/wrapper/gradle-wrapper.properties указал свой локальный зип в distributionUrl=...)
  • файлики: build.gradle, gradle.properties, gradlew
  • settings.gradle, поправил чтобы было include ':example'
  • local.properties, с моими строчками ndk.dir=... и sdk.dir=...
  • создал example/build.gradle с содержимым из readme. Поменял ../../../../CMakeLists.txt на ../CMakeLists.txt (и аналогично ../example/assets)
  • Создал AndroidManifest.xml с содержимым из readme в example/src/main/ (создал эту директорию)

Ошибка:

$ ./gradlew build
...
error: resource mipmap/ic_launcher (aka com.brackeen.glfmexample:mipmap/ic_launcher) not found.
...

Дальше описывать смысла нет кмк. Пробовал подсунуть директорию res (с этими мипмапами) из hello-jniCallback (из совсем примитивного hello-jni тоже пробовал), эта ошибка исчезла, но появлялись другие, менялись когда я по-всякому ублажал грэйдл (там подкорректировать, сям удалить и т.д.). В этой директории, res, слишком много завязок на этот конкретный гугло-пример (hello-jnicallback). Вобщем, чувствую не туда куда-то я забрёл, слишком сложно...

Что не так делаю? Как следует компилить пример glfm?


Ответ на: комментарий от a1batross

Первым делом выкинуть gradle...

Я не спец, но никогда не видел чтобы Андроидовская джава GUI собиралась где-либо без gradle. Я в одной из прошлых тем поверил тебе и EXL, что прикрутить стандартную (системную) ГУИ снаружи будет проще чем рисовать внутри OpenGL окна. Так и думаю сделать тогда.

и cmake

Дай пож. ссылки на примеры, как собрать glfm без него.

Затем пытаться понять что именно ты делаешь и что хочешь получить.

Не понял. Откомпилить пример! Зачем мне смотреть на некомпиляющийся код? :)

the1 ()

Кста у меня есть небольшой проектик, там юзается SDL2, GL4ES (реализация OpenGL на OpenGL ES) и т. д. Сборка тоже через Gradle, но вместо CMake – Android Makefiles (ndk-build) Потыкай, может будет интересно: https://github.com/EXL/Gish

С glfm я не особо знаком, просто слышал про эту либу. Есть ещё такое древнее зло, оно использует самый старый и голый OpenGL ES без всяких вспомогательных либ, но в качестве простого примера может подойти.

Проекты должны импортироваться в Android Studio без особых проблем.

EXL ★★★★★ ()
Ответ на: комментарий от the1

gradle всего-лишь система сборки. ИМХО, самая неудачная из всех.

Можно и шеллскриптом при желании собирать.

Примеры уже EXL подсказал. Вместо CMake вполне нормально использовать ndk-build. Он все ещё поддерживается, но в отличии от говна на жаве так просто его сломать не получится, так как это всего-лишь набор мейкфайлов и скриптов на awk. :)

К сожалению, Google умудрился сломать Ant в угоду гредлопараше.

a1batross ★★★★★ ()
Ответ на: комментарий от EXL

https://github.com/EXL/Gish

О, мне когда-то очень понравился Гиш! Недавно вот вспомнил про него. Посмотрю! Ты там много (где по-русски) написал, прочитаю!

a1batross:

Можно и шеллскриптом при желании собирать. ... гредлопараше

Да я того же мнения. Однако грэйдл создаёт несколько тысяч файлов и директорий (для казалось бы простого примера, ). В апк-шке - сотни. Посмотрел я на это (и то что он скачивает дохрена), и, понимая что я нуб, плюнул. Может ты «шел-скриптом» и сделаешь, а я пас.

the1 ()
Ответ на: комментарий от the1

Посмотрю! Ты там много (где по-русски) написал, прочитаю!

Ага, вот статейка в блоге. Почитай, если будет интересно: https://exlmoto.ru/gish-droid/

Да я того же мнения. Однако грэйдл создаёт несколько тысяч файлов и директорий (для казалось бы простого примера, ). В апк-шке - сотни. Посмотрел я на это (и то что он скачивает дохрена), и, понимая что я нуб, плюнул. Может ты «шел-скриптом» и сделаешь, а я пас.

Я раньше тоже недолюбливал Gradle, а сейчас вроде ничего, норм заходит. Даже нравится иногда.

Что не так делаю? Как следует компилить пример glfm?

Короче, вот тебе адаптированный пример, чтобы ты не мучался:

https://github.com/EXLMOTODEV/GLFM-example

Собирать вот так:

git clone https://github.com/EXLMOTODEV/GLFM-example --recursive
cd GLFM-example/android-project/
ANDROID_HOME="/opt/android-sdk/" ./gradlew assembleDebug
/opt/android-sdk/platform-tools/adb install -r app/build/outputs/apk/debug/app-debug.apk

Потом в меню выбери GLFM Example. У меня оно работает, запускается, треугольник рисуется и двигается по прикосновению.

EXL ★★★★★ ()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от the1

А как туда исходники копировать (C++), это очевидно?

Это уже будет лежать на плечах CMake, как у тебя там проект твой будет компилироваться. Ты же с CMake знаком, верно? ИМХО, я бы для себя изменил структуру в сторону такого, если бы мне потребовалось развивать дальше проект:

GLFM-project/
├── android-project/
│   └── <android-specific-files>
└── my-app-source/
    ├── CMakeLists.txt
    ├── glfm/
    │   ├── CMakeLists.txt
    │   └── <sources>
    └── <sources>

В общем это делай так, как душе твоей угодно и удобно тебе.

В примере сделано так, чтобы example/main.c (вот по типу твоего «исходники куда копировать») компилировался при сборке библиотеки. Короче экспериментируй, подгоняй пример под удобную тебе структуру.

P.S. С наступающим Новым Годом. Счастливых праздников!

EXL ★★★★★ ()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от EXL

Так, извиняюсь, ничего никуда копировать не нужно было. Посмотрел на пути в build.gradle, увидел что glfm предполагается во внешней директории, попробовал, и всё сразу само и скомпилилось. Спасибо!!

Тоже с Наступающим! (хотя меня больше радует что дни уже начали удлиняться, а значит весна и лето ближе :) )

the1 ()