Erro ao executar programa em android virtual machine



  • Boa tarde,

    Pessoal, resolvi testar as novas funcionalidades de Qt com o android. Instalei os componentes necessários e configurei (QtSDK + Android SDK + Android NDK). Quando crio um projeto qml2 simples com um retângulo e um simples hellow world no meio da tela e mando executar na máquina virtual, só é exibido uma tela preta, quando clico no botão de voltar o aplicativo fecha normal. Ou seja, nada acontece, é como se eu não tivesse inserido nada na tela e o programa abrisse assim. Alguém está encontrando o mesmo problema?



  • micdoug,

    Eu também iniciei alguns testes.

    Como você criou o projeto qml2? Tentei usar aqui o Wizard do Qml2, mas ele não deixou criar para o Android. Acabei criando um projeto Widget , e colocando um código para abrir o Qml.

    Aqui fiz uma MainWindow com 1 QLineEdit 1 QPushButton, e 1 QDeclarativeView (para ler o Qml). Misturei de propósito para testar.

    Testei num device real e funcionou normal.... mas no emulador aconteceu a mesmo coisa.... tela preta.

    Mas percebi que o QtCreator, após o deploy para o emulador... dá erro:

    "Starting remote process.Unable to start "

    Vou checar se não é algo com o Ministro



  • Achei em outra mensagem no forum parecida (em inglês).

    Rodei o comando:

    "adb logcat"

    E acho que o problema é este:

    I/ActivityManager( 139): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=org.qtproject.example.TestAndroid/org.qtproject.qt5.android.bindings.QtActivity } from pid 312
    E/Qt ( 602): Can't create main activity
    E/Qt ( 602): java.io.FileNotFoundException: /data/data/org.qtproject.example.TestAndroid/lib/lib--Managed_by_Qt_Creator--imports_Qt_labs_gestures_libqmlgesturesplugin.so (No such file or directory)
    E/Qt ( 602): at org.apache.harmony.luni.platform.OSFileSystem.open(Native Method)
    E/Qt ( 602): at dalvik.system.BlockGuard$WrappedFileSystem.open(BlockGuard.java:232)
    E/Qt ( 602): at java.io.FileInputStream.<init>(FileInputStream.java:80)
    E/Qt ( 602): at java.io.FileInputStream.<init>(FileInputStream.java:132)
    E/Qt ( 602): at org.qtproject.qt5.android.bindings.QtActivity.createBundledBinary(QtActivity.java:366)
    E/Qt ( 602): at org.qtproject.qt5.android.bindings.QtActivity.extractBundledPluginsAndImports(QtActivity.java:386)
    E/Qt ( 602): at org.qtproject.qt5.android.bindings.QtActivity.startApp(QtActivity.java:436)
    E/Qt ( 602): at org.qtproject.qt5.android.bindings.QtActivity.onCreate(QtActivity.java:688)
    E/Qt ( 602): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    E/Qt ( 602): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
    E/Qt ( 602): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
    E/Qt ( 602): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
    E/Qt ( 602): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
    E/Qt ( 602): at android.os.Handler.dispatchMessage(Handler.java:99)
    E/Qt ( 602): at android.os.Looper.loop(Looper.java:123)
    E/Qt ( 602): at android.app.ActivityThread.main(ActivityThread.java:3683)
    E/Qt ( 602): at java.lang.reflect.Method.invokeNative(Native Method)
    E/Qt ( 602): at java.lang.reflect.Method.invoke(Method.java:507)
    E/Qt ( 602): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
    E/Qt ( 602): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
    E/Qt ( 602): at dalvik.system.NativeStart.main(Native Method)

    Mas achei muito estranho. Abri o apk (unzip), e o arquivo está lá, mas o diretório da lib era /lib/armeabi-v7a. E o emulador (API 10) estava configurado para armeabi.

    Então fiz o seguinte: abri o AVD Manager, apaguei o device que o QtCreator criou (API 10/armeabi) e criei pelo AVD (com API 17/armeabi-v7a).

    O erro não apareceu mais. Mas aqui em casa estou com problema na placa de vídeo. Como o Qt usa OpenGL, ficou dando erro direto:

    E/libEGL ( 1199): called unimplemented OpenGL ES API

    Mas acho que assim deve resolver.



  • Eu criei o projeto pelo wizard qml2, aqui no meu qtcreator aparece a opção para criar para android. Acontece o mesmo erro no emulador, a tela fica preta.
    Testei agora mesmo em um tablet e funcionou normalmente, o que é muito estranho.
    Reparei nos erros que você citou que aparecem no log do android, aqui também acontece. Apaguei a máquina que o qtcreator criou e criei uma nova também, aí o erro de "unable to start" sumiu.
    Analisando o logcat eu também obtenho diversos erros de "E/libEGL ( 1231): called unimplemented OpenGL ES API", eu estou usando um notebook com chip gráfico integrado do processador core i5 primeira geração, que acredito que suporte operações opengl. Estou usando no debian. Mais tarde vou testar na máquina do meu irmão que tem uma placa nvidia e está com windows 7.
    Estou começando a pensar que o próprio emulador não suporta estas operações opengl, será que pode ser isto? Assim que testar eu posto aqui.
    Vlw.



  • No AVD manager.... tem uma opção para usar "Host GPU" quando você cria a máquina virtual. Você chegou a criar com a opção marcada?

    !http://s17.postimg.org/o9vlwz17z/screenshot_2.png(AVD)!



  • Olá, ate que enfiem encontrei brasileiros aqui para conversar sobre o android e Qt.



  • Tenho boas experiências com o necessitas mas com Qt5.1, nossa, tenho a impressão que ainda vai demorar funcionar bem, acredito que apenas na 5.2 vamos poder realmente utilizá-lo. a integração com a digia e o bogdan tá demorando a engrenar, e ainda mais que desde rc2 eles removeram a compatibilidade com armv5 deixando apenas armv7, o que é péssimo para mim e também para que quer fazer aplicativos que funcionam em todos os aparelhos, ouvi dizer que voltará, mas não sei.



  • Vamos falar do QML se utilizar apenas o projeto em QML ele funciona muito bem os demos exemplos dele são ótimos e funciona bem no android eu teste e garanto agora. executar QML do QMainWindows ele gera falhas, e no meu caso ele sai da aplicação enquanto que no windows ele funciona, bem como dito pelo TioRoy.



  • Já trabalhar com múltiplos forms QWidget tem problemas com opções maximize e full screen o que deixa o programa muito ruim, e não adianta tentar setar a geometria, tambem, parece não funcionar. Aplicações minhas que rodam bem com a versão com necessitas não funcionaram bem com Qt5.1 os layouts não funcionaram e ficou tudo bagunçado.



  • Ate postei para tentar ter ajuda no fórum do necessitas no link, mas não tive ajuda sufuciente:
    https://groups.google.com/forum/?fromgroups=#!topic/android-qt/GTZsO5tbTso

    lá tem exatamente o problema enfrentei, também incluir os fontes, assim podem comparar.



  • Eu também fiz alguns relatos em bugreport logo depois me informação que me inclusão era repetida, o que significa que o bug existe há um tempão e dá dando trabalho para resolver, motivo pelo qual o mesmo foi lançado como preview para versões futuras.

    O erro se trata de problema com opengl no android.

    O link para bugreport é :
    https://bugreports.qt-project.org/browse/QTBUG-32490

    Se conseguirem de qualquer forma corrigir me avisem eu agradeço muito grato.



  • Após marcar aquela opção na criação da avd "use host gpu", consegui executar programas que utilizam somente widgets comuns, e mesmo assim eles se comportaram de maneira anormal com relação ao layout. Eu setei a QSizePolicy da janela principal para maximum nos dois sentidos, e algumas vezes ao abrir o aplicativo ele expandia e ocupava toda a tela, outras não, ele ocupava o tamanho requerido para boa aparencia dos elementos e se posicionava no canto superior esquerdo da tela.
    Ao utilizar qualquer elemento qml, a tela do emulador continua fica preta.



  • Você esta utilizando Qt5.1.1?

    Pois eu só consigo esse resultado no QMainWindows e se este for o MainForm, pois quando chamo outro form ele não funciona bem.



  • Isso mesmo utilizei o Qt 5.1.1, e o resultado obtido foi com um qmainwindow como widget principal. Vou fazer mais testes amanha com um emulador e um dispositivo real usando widgets e qml. Com qml nao tenho muitos testes a fazer pois iria comecar meus estudos com o mesmo agora, nao sei fazer muita coisa ainda. Alguem sabe por exemplo, como criar um elemento principal que se expanda ocupando toda a tela?


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.