NME на Witstech A81E, Android 2.2

Всем привет!

Нужна помощь в запуске NMETemplate на Witstech A81E.
После выполнения следующей команды:
haxelib run nme test NMETemplate.nmml android
проект полностью собирается, заливается и устанавливается на девайсе, запускается, показывает только один кадр (даже с текстурами) и вылетает :( Я не разбираюсь в отладке под андройдом :( но очень бы хотел запустить NME на девайсе... Вот тут выложил лог того, что пишется в командной строке CMD

РЕШЕНО

Ну что же, отличная новость - я запустил проект после довольно глубокой отладки :)
Проблема была в nme, в частности в файле NME_SOURCE/project/android/AndroidFrame.cpp есть следующая функция (вызываемая в методе onPoll через кучу всяких других методов, который я так и не понял к чему):

void AndoidRequestRender()
{
        jclass cls = gEnv->FindClass("org/haxe/nme/MainView");
   jmethodID mid = gEnv->GetStaticMethodID(cls, "renderNow", "()V");
   if (mid == 0)
       return;
    gEnv->CallStaticObjectMethod(cls, mid );
}

Тут явное не соответствие искомой функции, которая является static и возвращает void и того, что вызывается через JNI с помощью метода CallStaticObjectMethod, которая в качестве id вызываемого метода должна принимать статический метод, возвращающий java объект. Именно на эту штуку у меня ругался log в виде WARNINGа, но почему то я не придал этому значения, видимо не знал как всё тут устроено. И видимо из-за такого несоответствия типов на моём планшете происходил вылет виртуальной машины :( Решение простое:

void AndoidRequestRender()
{
        jclass cls = gEnv->FindClass("org/haxe/nme/MainView");
   jmethodID mid = gEnv->GetStaticMethodID(cls, "renderNow", "()V");
   if (mid == 0)
       return;
   gEnv->CallStaticVoidMethod(cls, mid);
}

Т.е. просто заменяем CallStaticObjectMethod на CallStaticVoidMethod, перекомпилируем nme и радуемся невылетающим приложением на Witsteh A81E :)

issues в трекере NME

отлично! спасибо за это исследование, может оказаться полезным.

подумал, что если это действительно причина, то ее стоит запостить в виде патча или хотя-бы просто issue в баг-трекер NME. полез туда посмотреть, нет ли уже чего-то подобного и увидел, что 30 августа некто Mihail Ivanchev уже опубликовал там связанные с этой темой сообщения 132 и 133. Если это ты и есть, то спасибо еще раз.

re

:) нет, это не я... публикация в issues как-то долго рассматривается. Я написал о решении проблемы на форуме, и Joshua уже всё поправил в svn. А вот то, что nme теперь ещё и в эмуляторе можно запустить, поправив некоторые функции в OpenGL, дак это вообще отлично! :)

Да, сейчас со

На сколько я понимаю тему - есть софтварный рендерер opengl, а так как на вашем устройстве стоит Android(основанный на Linux), то за связь с ogl должен отвечать именно он и драйвера под него. Поищите драйвера нормальные или еще что. Это мое мнение, хотя я немного и не в теме моб. устройств. Спецы на англоязычных форумах вам лучше подскажут.

re

Я тоже не особо в теме мобильных устройств :( Спецы пока молчат. И драйвера у устройства в принципе рабочие, т.к. и 3д игры запускаются с opengl и примеры из MoSync без проблем.

opengl java рендерер

nme последней версии ? Нужно смотреть исходники рендерера на яве. Попробуйте их как-то откопать и выложить сюда. Я гляну. У меня нет девайса на андроиде, поэтому только так могу помочь вам. Надо локализировать проблему, для этого сейчас попробуйте просто вывести один фрейм и все, без никаких изменений контента во фрейме, если пройдет без проблем, то попробуйте вывести линию, потом - анимацию их двух фреймов. (программную анимацию). Постепенно вы сможете выявить условия для появления ошибки. Отпишитесь. пожалуйста, о результатах. Это будет всем интересно.

Нашел инфу что

Нашел инфу что это может зависеть от кастомной темы на устройстве, попробуйте проверить на теме по дефолту.

+ в придачу

+ в придачу такое может быть если opengl поддерживается только ограниченно

re

Спасибо :) Постараюсь в ближайшее время поотлаживать приложение... тема дефолтная, насчёт полной поддержки не знаю.... результаты, какие бы они не были, выложу :) Вчера полазил по ява-коду и чуть подебажил, но так пока и не понял откуда вылетает, т.к. дебаггер для меня новый, по сравнению с VC++ показался не совсем удобным, хотя может и мало разобрался ещё. По логу дак вроде вылетает в native коде, который генерит android-ndk, вот с помощью него и надо бы научиться дебажить такие штуки

Мне эта тема

Мне эта тема очень интересна так как я собираюсь писать декстоп приложение на haxe и aswing. Так что жду результатов.

OpenGL

У меня как такового готового проекта сейчас нет, как раз ищу кроссплатформенный движок для его создания, и nme меня полностью устраивает, кроме вот такого поведения на моём девайсе :(
Возможно действительно что-то с OpenGL (хотя вот тут есть инфа о возможностях девайса: http://www.glbenchmark.com/phonedetails.jsp?benchmark=glpro20&D=Witstech... - и там вроде как приличная аппаратная поддержка). Даже все семплы с графикой из MoSync запускаются... При тестировании я ведь всё равно вижу один кадр приложения, значит, возможно, проблема при свопе буферов. Меня напрягла вот эта строчка из лога, которая регулярно повторяется:

E/libEGL  ( 1166): eglSetSwapRectangleANDROID:1759 error 3008 (EGL_BAD_DISPLAY)

Покопавшись в исходниках nme нашёл папочку SoftwareRender - вот интересно, можно ли его включить как-то ручками?
И вообще, как отлаживать приложения под андройдом, сгенеренные с помощью haxe и nme? там вроде как файла проекта eclipse даже нет.

re: OpenGL

как нет то? всегда есть. только не файл, а папка со стандартной для android-проекта структурой. в случае твоего примера с NMETemplate это ...\Export\android\bin. Из нее создаешь проект в Eclipse, запускаешь и смотришь logcat.

p.s. а под готовым проектом я имел в виду не твой личный проект, а законченный тьютор Граника. у него в zip же только темплейт, а как написать на его основе проект он в видео показывает. ты же писал что какие-то "текстуры" видишь, из чего я предположил, что ты что-то поверх этого темплейта делал.

re

О, отлично, попробую поотлаживать тогда, может накопаю чего :) спасибо :)
ps. понял :) я просто текстуры туда подобавлял чтобы рисовались, при компиляции флэш и cpp они выводятся на экран нормально; на девайсе вижу только один кадр с ними, после чего сразу вылетает... проблема явно не в них, т.к. валится даже на пустом темплейте

openGL?

исходя из того, что вылет похоже происходит вот здесь:

...
I/dalvikvm( 2379):   at org.haxe.nme.MainView$1.run((null):-1)
I/dalvikvm( 2379):   at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1295)
I/dalvikvm( 2379):   at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1116)
I/dalvikvm( 2379):
E/dalvikvm( 2379): VM aborting
**** ...

можно предположить что на твоем девайсе (никогда ранее, кстати, не слышал даже о производителе таком) что-то с поддержкой openGL (в эмуляторе ее тоже нет, по крамере по умолчанию, как я уже писал ранее). в спецификациях девайса по твоей ссылку ничего про это не сказано, но некоторые места в них усиливают подозрения.

я бы попробовал запустить завершенный проект на своем Acer, если бы он (проект) был в готовом виде (сам темплейт, как уже писал ранее запускается без проблем). на написание по этому тьютору честно говоря нет ни времени, ни особого интереса, я предпочитаю тестить на сэмплах из gm2d либо на своих тестах с его же использованием.

а вот какой вопрос вызывает интерес и я сам не знаю пока на него ответа - как выключить использование OpenGL из NME-проекта? (почти уверен что это можно сделать, как минимум в сгенеренном Android-проекте, но это было бы не гибким решением ). ответ на него, если найдется, возможно поможет и тебе запускать NME-проекты на своем девайсе.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <blockcode> <dd>
  • Строки и параграфы переносятся автоматически.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. The supported tag styles are: <foo>, [foo].
  • Use [gist:####] where #### is your gist number to embed the gist.

Подробнее о форматировании

CAPTCHA
Для отсева спамеров)
U
u
4
8
A
R
Enter the code without spaces and pay attention to upper/lower case.