N9 Haramttan QT App does not start from Icon.
I have an QT / QML app for my Nokia N9 Harmattan (PR1.3) that I need some advice on how to troubleshoot.
- Starts on the N9 from QT Creator in SDK Mode --> OK
- Can be launched from the N9 Terminal --> OK
- Does not start from the Icon on the N9 "desktop". --> NOT OK
I suspect strongly that this is due to aegis security credential problems - starting from Creator or Terminal is presumably as user "Developer", while from the Icon is as normal "user".
The app makes use of the GStreamer api, so I have added a request for GRP::video to the aegis.manifest file.
The syslog file only has this:
Jan 25 11:14:46 (2013) applauncherd: Booster: Loading invoked application failed: '/opt/gstreamertest8/bin/gstreamertest8: cannot dynamically load executable'
The question is: How can I prove / disprove this? Are there any other logs or tools that will give me more information?
Try adding GRP::audio and GRP::pulse-access as well. Starting from terminal should start using regular user I believe (if you mean terminal that is started from icon and not ssh connection).
Yet, another tip: try removing anything what is related to GStreamer to be sure that problem is gstreamer.
By terminal I meant the SDK terminal on the device. I forgot to add that the app also starts remotely (on the N9) via SSH from OSX.
I think I tried with all GRP credentials - but I have tried so many things that I am not sure, so I will repeat this.
As I first experienced this with a full blown app once I added GStreamer functionality I am reasonably sure it is down to that. However to be sure I made a new demo QML project (which started), then adde djust the required config to the pro and main.cpp files to declare GStreamer, but nothing else - I don't actually invoke Gstreamer yet, nor does the demo app have any other functionality.
My manifest.aegis file now is:
<credential name="GRP::pulse-access" />
<credential name="GRP::video" />
<credential name="GRP::video" />
<for path="/opt/gstreamertest8/bin/gstreamertest8" />
<for path="applauncherd-launcher::/usr/bin/applauncherd.bin" id="" />
However the app still won't launch from the icon.
I found the following in the compile output.
aegis-manifest: No checksum found in 'gstreamertest8.aegis'.
aegis-manifest: The manifest file was most likely not generated by this tool.
aegis-manifest: This file will be placed to the resulting archive as-is.
aegis-manifest: Run 'aegis-manifest -f' to force overwrite.
dpkg-genchanges -b -u.. >../gstreamertest8_0.0.1_armel.changes
dpkg-genchanges: binary-only upload - not including any source code
Have you really repeated GRP::video twice (audio still missing)? What really puzzles me that it works from terminal. You can type whoami (or whoiam?) in terminal to see what user runs terminal.
Use @ code @ for code.
Write new comment instead of editing older. If you edit your comment notification is not sent.
Thanks for the tips, and for spotting the double GRP::video - I was too hasty in my restest.
However, a corrected aegis file (with video, audio and pulse-access made no difference.
Whoami in terminal gives me "user".
Commenting out all Gstreamer related config in the .pro, main.cpp and aegis files - returning the project to a virgin state - still does not help.
OK. Let's look it from the back:
Project returned to "virgin" state and it still does not work from icon? In that case try creating new project and see if that works (just create app and do not add anything to it - you shouldn't spent more than 2 minutes on that). Figure out what's different between your project and newly created project.
If in terminal you are "user" and it works if started from terminal then problem most probably is in your *_harmattan.desktop file.
I have the same problem as the original poster: the default "Hello World" program from QtCreator 2.4.1 starts OK on the N9 immediately after deployment from QtCreator, and also in the terminal (on the N9) from /opt/<app-name>/bin, but not from the icon. Can anyone help? Do I need to configure the .desktop or manifest.aegis files in a certain way? If so, what changes do I need to make?
I ran in this problem just some days ago...simple solution is that QtCreator create another .desktop file that is different from your own you made!
If you see in files included in the project from within Qt panel, you will see a myapp_harmattan.desktop
Your icon on desktop is attached to that file and not your one...inside the above file there is invoker and not single-instance program call.
Just change the included file or put your real .desktop contents into the above one.
Thanks AlterX. I'm not sure if this is what you mean, but for me another problem was simply the project name on QtCreator - this contained hyphens/dashes, which were not present in the names of the harmattan executables, but were present in the executable command in the .desktop file.
For example, my project name on QtCreator was madde-test-3. The files exported to the N9 were called maddetest3 (e.g. /opt/maddetest3/bin etc), but the manifest file was looking for madde-test-3. Changing the filenames in the .desktop file, and re-exporting the project to the N9 worked for me.
My .desktop file Exec line in the end was:
Exec=/usr/bin/invoker --single-instance --type=d /opt/maddetest3/bin/maddetest3