×
Namespaces

Variants
Actions
(Difference between revisions)

Creating Debian packages for Maemo 4 Qt applications and showing in the application menu

From Nokia Developer Wiki
Jump to: navigation, search
hamishwillee (Talk | contribs)
m (Hamishwillee - Addition to article of: Category:MeeGo Category:Symbian. (Add platform categories))
lpvalente (Talk | contribs)
m (Lpvalente -)
 
(2 intermediate revisions by one user not shown)
Line 1: Line 1:
[[Category:Maemo]][[Category:Qt]]
+
[[Category:Maemo]][[Category:Qt]][[Category:MeeGo Harmattan]][[Category:Symbian]]
 +
{{Archived|timestamp=20130223192038|user=[[User:Lpvalente|Lpvalente]]}}
 +
 
 +
 
 +
{{ArticleMetaData <!-- v1.2 -->
 +
|sourcecode= <!-- Link to example source code e.g. [[Media:The Code Example ZIP.zip]] -->
 +
|installfile= <!-- Link to installation file (e.g. [[Media:The Installation File.sis]]) -->
 +
|devices= <!-- Devices tested against - e.g. ''devices=Nokia 6131 NFC, Nokia C7-00'') -->
 +
|sdk= <!-- SDK(s) built and tested against (e.g. [http://linktosdkdownload/ Qt SDK 1.1.4]) -->
 +
|platform= <!-- Compatible platforms - e.g. Symbian^1 and later, Qt 4.6 and later -->
 +
|devicecompatability= <!-- Compatible devices e.g.: All* (must have internal GPS) -->
 +
|dependencies= <!-- Any other/external dependencies e.g.: Google Maps Api v1.0 -->
 +
|signing= <!-- Signing requirements - empty or one of: Self-Signed, DevCert, Manufacturer -->
 +
|capabilities= <!-- Capabilities required by the article/code example (e.g. Location, NetworkServices. -->
 +
|keywords= <!-- APIs, classes and methods (e.g. QSystemScreenSaver, QList, CBase -->
 +
|language= <!-- Language category code for non-English topics - e.g. Lang-Chinese -->
 +
|translated-by= <!-- [[User:XXXX]] -->
 +
|translated-from-title= <!-- Title only -->
 +
|translated-from-id= <!-- Id of translated revision -->
 +
|review-by= <!-- After re-review: [[User:username]] -->
 +
|review-timestamp= <!-- After re-review: YYYYMMDD -->
 +
|update-by= <!-- After significant update: [[User:username]]-->
 +
|update-timestamp= <!-- After significant update: YYYYMMDD -->
 +
|creationdate= 20091116
 +
|author= [[User:Flaviofabricioferreira]]
 +
}}
 +
 
 
{{Abstract|This article shows how to build a '''.deb''' package for Maemo 4 Qt applications, and how to deploy the Qt application so that it is visible on the device menu.}}
 
{{Abstract|This article shows how to build a '''.deb''' package for Maemo 4 Qt applications, and how to deploy the Qt application so that it is visible on the device menu.}}
  
Line 22: Line 48:
 
===Copying the Application to Scratchbox===
 
===Copying the Application to Scratchbox===
  
First , copy the sources files of application to a folder at '''Scratchbox'''. In general the address is '''/scratchbox/users/username/home/username/'''. I do this:
+
First, copy the sources files of application to a folder at '''Scratchbox'''. In general the address is '''/scratchbox/users/username/home/username/'''. I do this:
  
  flavio@flavio-desktop:~/workspace$ cp -r HelloWorld/ /scratchbox/users/flavio/home/flavio/
+
  flavio@flavio-desktop:~/workspace$ cp -r HelloWorld/ /scratchbox/users/flavio/home/flavio/
  
 
===Compiling the Application at Scratchbox===
 
===Compiling the Application at Scratchbox===
Line 40: Line 66:
 
===Creating the Tree of Debian Package===
 
===Creating the Tree of Debian Package===
  
After that , you need to create the following folders:
+
After that, you need to create the following folders:
  
 
  [sbox-DIABLO_ARMEL: ~/HelloWorld] cd ..
 
  [sbox-DIABLO_ARMEL: ~/HelloWorld] cd ..
Line 48: Line 74:
 
You'll need to create a control file for your package using a simple text edit. In this post I use the '''Vi'''.
 
You'll need to create a control file for your package using a simple text edit. In this post I use the '''Vi'''.
  
  [sbox-DIABLO_ARMEL: ~] > vi HelloWorldApplication/DEBIAN/control
+
  [sbox-DIABLO_ARMEL: ~] > vi HelloWorldApplication/DEBIAN/control
  
 
In this step we'll look at what each field in the control file means and what kind of information you need to provide.
 
In this step we'll look at what each field in the control file means and what kind of information you need to provide.
Line 63: Line 89:
 
Returns to '''HelloWorld''' Application directory and create the folders below:
 
Returns to '''HelloWorld''' Application directory and create the folders below:
  
  [sbox-DIABLO_ARMEL: ~] > cd HelloWorldApplication/
+
  [sbox-DIABLO_ARMEL: ~] > cd HelloWorldApplication/
 
  [sbox-DIABLO_ARMEL: ~/HelloWorldApplication] > mkdir usr
 
  [sbox-DIABLO_ARMEL: ~/HelloWorldApplication] > mkdir usr
  
Line 91: Line 117:
 
  [sbox-DIABLO_ARMEL: ~/HelloWorldApplication/usr/share/applications/hildon]>vi helloworld.desktop
 
  [sbox-DIABLO_ARMEL: ~/HelloWorldApplication/usr/share/applications/hildon]>vi helloworld.desktop
  
Here we'll to add the address of executable file , image icon file , etc...
+
Here we'll to add the address of executable file, image icon file, etc...
  
 
  [Desktop Entry]
 
  [Desktop Entry]
Line 102: Line 128:
 
  Icon=helloworld
 
  Icon=helloworld
  
===Copying the Application Compiled to Deb Tree===
+
===Copying the Application Compiled to Deb Tree===
  
 
  [sbox-DIABLO_ARMEL: ~] > cd HelloWorld
 
  [sbox-DIABLO_ARMEL: ~] > cd HelloWorld
 
  [sbox-DIABLO_ARMEL: ~/HelloWorld] > ls
 
  [sbox-DIABLO_ARMEL: ~/HelloWorld] > ls
  HelloWorld     helloworld.cpp main.cpp       helloworld.png   
+
  HelloWorld helloworld.cpp main.cpp helloworld.png   
  HelloWorld.pro helloworld.h   helloworld.ui ui_helloworld.h  
+
  HelloWorld.pro helloworld.h helloworld.ui ui_helloworld.h  
  
 
In this step, you will to copy the executable file to /usr/bin folder. This executable is called by helloworld.desktop at line '''Exec=/usr/bin/HelloWorld''' on the file described above.
 
In this step, you will to copy the executable file to /usr/bin folder. This executable is called by helloworld.desktop at line '''Exec=/usr/bin/HelloWorld''' on the file described above.
Line 113: Line 139:
 
  [sbox-DIABLO_ARMEL: ~/HelloWorld] > cp helloworld ../HelloWorldApplication/usr/bin/
 
  [sbox-DIABLO_ARMEL: ~/HelloWorld] > cp helloworld ../HelloWorldApplication/usr/bin/
  
Now, you will to copy the sources files to /usr/lib folder.This is recommended , but not required.  
+
Now, you will to copy the sources files to /usr/lib folder.This is recommended, but not required.  
  
 
  [sbox-DIABLOE_ARMEL: ~/HelloWorld] > cp HelloWorld.pro ../HelloWorldApplication/usr/lib/
 
  [sbox-DIABLOE_ARMEL: ~/HelloWorld] > cp HelloWorld.pro ../HelloWorldApplication/usr/lib/
Line 132: Line 158:
 
===Sending the .Deb Package to Maemo Device===
 
===Sending the .Deb Package to Maemo Device===
  
I used the '''Scp''' command with the '''IP''' address of device. The '''IP''' address of device is searched at '''Settings->Connection Manager''' , after that , click at Connection Manager at '''left-Up-Corner->internet connection->IP address'''.
+
I used the '''Scp''' command with the '''IP''' address of device. The '''IP''' address of device is searched at '''Settings->Connection Manager''' , after that, click at Connection Manager at '''left-Up-Corner->internet connection->IP address'''.
  
 
  [sbox-DIABLO_ARMEL: ~/HelloWorld] > scp HelloWorldApplication.deb root@10.0.0.13:/home/
 
  [sbox-DIABLO_ARMEL: ~/HelloWorld] > scp HelloWorldApplication.deb root@10.0.0.13:/home/
Line 154: Line 180:
  
 
[[File:Postdeb2.png||500x300px]]
 
[[File:Postdeb2.png||500x300px]]
<!-- Translation --> [[pt:Como criar Pacotes Debian para aplicações em Qt para Maemo 4 e mostrá-la no Menu]][[Category:MeeGo]] [[Category:Symbian]]
+
<!-- Translation --> [[pt:Como criar Pacotes Debian para aplicações em Qt para Maemo 4 e mostrá-la no Menu]]

Latest revision as of 22:20, 23 February 2013

Archived.pngArchived: This article is archived because it is not considered relevant for third-party developers creating commercial solutions today. If you think this article is still relevant, let us know by adding the template {{ReviewForRemovalFromArchive|user=~~~~|write your reason here}}.

The article is believed to be still valid for the original topic scope.


Article Metadata
Compatibility
Platform(s):
Symbian
Article
Created: flaviofabricioferreira (16 Nov 2009)
Last edited: lpvalente (23 Feb 2013)

This article shows how to build a .deb package for Maemo 4 Qt applications, and how to deploy the Qt application so that it is visible on the device menu.

The proposed strategy does not use dh_make to create the basic debian package structure, as described in Qt for Maemo Developers Guide.

Postdeb1.png

Contents

[edit] .Deb Packages In Brief

Deb is the extension of the Debian software package format and the most often used name for such binary packages. Like the Deb part of the term Debian. Debian packages are used in distributions based on Debian, such as Ubuntu and others.

[edit] Prerequisites

You need to have libqt4-dev ,ScratchBox and Maemo SDK installed on your Computer and libqt4-dev installed on your Scratchbox ARM target and your Maemo Device . For more information on ScratchBox Installation click here and for Qt on Maemo click here.

[edit] Creating the Application

Postdeb0.png

You need to create a simple Qt HelloWorld Project on computer. I created a project with two labels how is showed below. Remember of to set the size of QWidget to 720 of Width and 420 of Height because the resolution of Maemo Device.

[edit] Copying the Application to Scratchbox

First, copy the sources files of application to a folder at Scratchbox. In general the address is /scratchbox/users/username/home/username/. I do this:

flavio@flavio-desktop:~/workspace$ cp -r HelloWorld/ /scratchbox/users/flavio/home/flavio/

[edit] Compiling the Application at Scratchbox

At Start, you need login at Scratchbox:

~$ /scratchbox/login

If necessary select the ARM target using sb-conf se DIABLO_ARMEL . To compile do this :

[sbox-DIABLO_ARMEL: ~] > cd HelloWorld
[sbox-DIABLO_ARMEL: ~/HelloWorld] > qmake
[sbox-DIABLO_ARMEL: ~/HelloWorld] > make

[edit] Creating the Tree of Debian Package

After that, you need to create the following folders:

[sbox-DIABLO_ARMEL: ~/HelloWorld] cd ..
[sbox-DIABLO_ARMEL: ~] > mkdir HelloWorldApplication
[sbox-DIABLO_ARMEL: ~] > mkdir HelloWorldApplication/DEBIAN

You'll need to create a control file for your package using a simple text edit. In this post I use the Vi.

[sbox-DIABLO_ARMEL: ~] > vi HelloWorldApplication/DEBIAN/control

In this step we'll look at what each field in the control file means and what kind of information you need to provide. The syntax for the control fields is very simple: the name of the field, followed by a colon, and then the body or value of the field.

Package: HelloWorld
Priority: optional
Version: 1.0
Architecture: all
Maintainer: Flavio Fabricio <flaviofabricio@gmail.com>
Depends: libqt4-dev
Description: This is a HelloWorld Application

Returns to HelloWorld Application directory and create the folders below:

[sbox-DIABLO_ARMEL: ~] > cd HelloWorldApplication/
[sbox-DIABLO_ARMEL: ~/HelloWorldApplication] > mkdir usr

Creating the /usr subdirectories:

[sbox-DIABLO_ARMEL: ~/HelloWorldApplication] > cd usr/
[sbox-DIABLO_ARMEL: ~/HelloWorldApplication/usr] > mkdir bin
[sbox-DIABLO_ARMEL: ~/HelloWorldApplication/usr] > mkdir lib
[sbox-DIABLO_ARMEL: ~/HelloWorldApplication/usr] > mkdir share

Creating the /share subdirectories:

[sbox-DIABLO_ARMEL: ~/HelloWorldApplication/usr] > cd share/
[sbox-DIABLO_ARMEL: ~/HelloWorldApplication/usr/share] > mkdir applications
[sbox-DIABLO_ARMEL: ~/HelloWorldApplication/usr/share] > mkdir pixmaps

Creating the hildon subdirectory that is the folder where is the .desktop files :

[sbox-DIABLO_ARMEL: ~/HelloWorldApplication/usr/share] > cd applications
[sbox-DIABLO_ARMEL: ~/HelloWorldApplication/usr/share/applications] > mkdir hildon

[edit] Creating the file thats put the Application on Maemo Menu

You'll need to create too, a .desktop file that the Maemo uses to put application at Menu.

[sbox-DIABLO_ARMEL: cd /HelloWorldApplication/usr/share/applications/hildon
[sbox-DIABLO_ARMEL: ~/HelloWorldApplication/usr/share/applications/hildon]>vi helloworld.desktop

Here we'll to add the address of executable file, image icon file, etc...

[Desktop Entry]
Categories=Qt;
Encoding=UTF-8
Version=0.1
Type=Application
Name=HelloWorld
Exec=/usr/bin/HelloWorld
Icon=helloworld

[edit] Copying the Application Compiled to Deb Tree

[sbox-DIABLO_ARMEL: ~] > cd HelloWorld
[sbox-DIABLO_ARMEL: ~/HelloWorld] > ls
HelloWorld helloworld.cpp main.cpp helloworld.png  
HelloWorld.pro helloworld.h helloworld.ui ui_helloworld.h 

In this step, you will to copy the executable file to /usr/bin folder. This executable is called by helloworld.desktop at line Exec=/usr/bin/HelloWorld on the file described above.

[sbox-DIABLO_ARMEL: ~/HelloWorld] > cp helloworld ../HelloWorldApplication/usr/bin/

Now, you will to copy the sources files to /usr/lib folder.This is recommended, but not required.

[sbox-DIABLOE_ARMEL: ~/HelloWorld] > cp HelloWorld.pro ../HelloWorldApplication/usr/lib/
[sbox-DIABLO_ARMEL: ~/HelloWorld] > cp helloworld.cpp ../HelloWorldApplication/usr/lib/
[sbox-DIABLO_ARMEL: ~/HelloWorld] > cp helloworld.h ../HelloWorldApplication/usr/lib/
[sbox-DIABLO_ARMEL: ~/HelloWorld] > cp helloworld.ui ../HelloWorldApplication/usr/lib/
[sbox-DIABLO_ARMEL: ~/HelloWorld] > cp main.cpp ../HelloWorldApplication/usr/lib/

You will need a picture to use like Icon. You can search some image at the Google Images.In this case I renamed the picture to helloworld.png.This image is called by helloworld.desktop at line Icon=helloworld on the file described above and save to /usr/share/pixmaps/ folder.

[sbox-DIABLO_ARMEL: ~/HelloWorld] > cp helloworld.png ../HelloWorldApplication/usr/share/pixmaps/

[edit] Creating the Deb Package

[sbox-DIABLO_ARMEL: ~/HelloWorld] > cd ..
[sbox-DIABLO_ARMEL: ~] > dpkg-deb -b HelloWorldApplication

[edit] Sending the .Deb Package to Maemo Device

I used the Scp command with the IP address of device. The IP address of device is searched at Settings->Connection Manager , after that, click at Connection Manager at left-Up-Corner->internet connection->IP address.

[sbox-DIABLO_ARMEL: ~/HelloWorld] > scp HelloWorldApplication.deb root@10.0.0.13:/home/

[edit] Installing the Deb Package at Maemo Device

Open a new terminal and do this:

ssh root@10.0.0.13

enter with the password of Maemo Device

root@10.0.0.13's password:
Nokia-N810-43-7:~# cd ..
Nokia-N810-43-7:/# cd /home/
Nokia-N810-43-7:/home# dpkg -i HelloWorldApplication.deb

Now, the application is installed at Maemo Device.

[edit] Snapshot of HelloWorld Application

Postdeb2.png

This page was last modified on 23 February 2013, at 22:20.
84 page views in the last 30 days.
×