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>.

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

CAPTCHA
Этот вопрос помогает предотвратить автоматический спам
Image CAPTCHA
Enter the characters shown in the image without spaces, also respect upper and lower case.
To prevent automated spam submissions leave this field empty.