You’ve been working hard on your app in the last week and now want to get everything ready for submitting it to the software store? It’s all working well in QtCreator, now you just want to get it out there? Fantastic!

1) Preparation

First of all sign up for the Software Store Beta. Just enter your personal details and be sure to pick a unique namespace, such as com.ubuntu.developer.<username> ? this is the only setting which can not be changed later on.

Sign in or register to the Software Store Beta ?

To Ubuntu Touch users, additional apps are shipped as click packages. To generate click packages, the first step is to open your project in the Ubuntu SDK and click on the Packaging tab on the left hand side and fill out the form presented to you.


The Name field should contain the namespace you chose when you signed up on MyApps, then append a dot and the package name you chose for your app. In the example above the namespace of the user would be com.ubuntu.developer.joe-blobbs and the package name of the app would be angry-birds.

Security policy groups

We want our apps to be secure. To achieve this, all apps run under confinement. When producing the apps, you get to decide which security privileges your app needs. Privileges you might find useful are:

  • accounts: Can use Online Accounts

  • audio: Can play audio

  • camera: Can access the camera(s)

  • content_exchange: Can request data from other applications

  • location: Can access Location

  • networking: Can access the network

  • sensors: Can access the sensors

  • video: Can play video

Find the full list by running (on a Ubuntu 13.10 system):

for i in `aa-easyprof --list-policy-groups --policy-vendor=ubuntu --policy-version=1.0` ; do \
echo "= $i =" ; \
grep Description /usr/share/apparmor/easyprof/policygroups/ubuntu/1.0/$i ; \
echo "" ; \

Please only pick security permissions your app is actually going to use. networking is the only one the Ubuntu SDK suggests by default.

2) Optional: QML Extensions

You can very easily skip this step, if you just use QML and JavaScript or just HTML5. This is just necessary if you used C++ code for your app.

As the app store currently just supports ARM devices, you need to build the C++ code for ARM, for which we cooked a nice and simple script. Please note, that these instructions will soon after the app showdown be replaced by automatic procedures in the Ubuntu SDK, for now though they should get you all the way there:

Get the script to build the extension for ARM and run it

bzr branch lp:~dholbach/+junk/extension-build
cd extension-build

After this step you might have to restart your session, so log out and log back in again.

Now build your extension

If you’ve already built it at some point, you might have to run make distclean on the extension’s directory. You’ll notice if you have to do this if you get a message along the lines of: “make: nothing to be done for target 'first'“.

In the next step, replace /home/joe/dev with the path where your code lives:

./build-project /home/joe/dev/angry-birds

After the build is successful, you’ll find the binary in your local angry-birds directory. Then you can follow these steps (after 2.) to put this binary into a click package created manually.

3) Building the click package

Projects with QML extension

If your code uses C++ and you followed step 2) already, you simply run this command in your source tree (/home/joe/dev/angry-birds in our example):
click build

Projects without QML extension

Click on the “Create package” button in the Packaging section in QtCreator.

4) Optional: Testing the click package

If you own a device that is capable of running Ubuntu Touch, you can try to run your click package on the device. To do this, simply connect your device to your PC and run:

adb push /home/phablet
adb shell
sudo -H -u phablet pkcon install-local /home/phablet/
pkill unity8
su - phablet
cd /opt/

Examine the desktop file for the Exec and prepend an aa-exec-click call to launch the app from the command line. Eg, if the desktop file has:

Exec=qmlscene $@ angry-birds.qml

Now launch the app with:

aa-exec-click -p com.ubuntu.developer.joe-blobbs.angry-birds_angry-birds_0.3 -- qmlscene $@ angry-birds.qml

5) Submit the app in the appstore

If your app is running fine, you are ready to go and can submit it.

Prepare your application icons and screenshots

You only need to upload a 64×64 pixel icon, but your app will be more likely to be seen and downloaded if you pay special attention to this step. Make sure you include a representative screenshot and the full range of icon sizes.

Add your application details

To help people find your app, we?ll ask you to choose a category, include a detailed description and some keywords to aid search. You?ll also need to choose a licence (including open source and proprietary software). It?s also important that you add a URL where users can contact you.

Pay special attention to the name of your package and the version you are using. They should match what you can see in the Advanced tab of the Packaging section in QtCreator.

Sign in or register to the Software Store Beta ?

6) Enter your app in the contest

Don’t forget this part! Once your app has been submitted to the app store (it doesn’t have to be approved or published yet) you still need to enter it into the contest by filling out the form in the link below.

The information collected in the form will tell us which apps in the app store should be part of the contest, in which category (original or ported) they should be judged and, if you’re a winner, where to send your prize.

Enter your app in the contest ?