Necessitas/CompileQtFramework: Difference between revisions

From KDE Community Wiki
(Created page with "Foreword This instructions are tailored for Linux, Ubuntu linux 12.04. Any Linux distribution which is reasonably updated should work anyway. There are some minimum GLIBC/GCC re...")
 
(Added a small hint that its not something like "--path /home/..." :))
 
(6 intermediate revisions by 3 users not shown)
Line 1: Line 1:
Foreword
== Foreword ==
 


This instructions are tailored for Linux, Ubuntu linux 12.04. Any Linux distribution which is reasonably updated should work anyway. There are some minimum GLIBC/GCC requirements, but anything updated at least at 01/2012 should not have any problems, provided that you fullfill all the requirements either by installing you distro packets or from sources. Ubuntu 12.04 do include all the requirements in the default repositories.
This instructions are tailored for Linux, Ubuntu linux 12.04. Any Linux distribution which is reasonably updated should work anyway. There are some minimum GLIBC/GCC requirements, but anything updated at least at 01/2012 should not have any problems, provided that you fullfill all the requirements either by installing you distro packets or from sources. Ubuntu 12.04 do include all the requirements in the default repositories.


It is also possible to compile the Qt framework on Windows and MacOSX, but this Wiki page at the moment will not cover it.
It is also possible to compile the Qt framework on Windows and MacOSX, but this Wiki page at the moment will not cover it.
Requirements
 
== Requirements ==
 


First of all, you need a working Linux installation. On this Wiki page Ubuntu 12.04 will be used as a reference, please note that any flavour of Linux should work.
First of all, you need a working Linux installation. On this Wiki page Ubuntu 12.04 will be used as a reference, please note that any flavour of Linux should work.
Hardware Requirements
 
== Hardware Requirements ==
 


Compiling the Qt framework is a big task and shall take a long time even on powerfull hardware. It is suggested a modern CPU and as much RAM as you can. Expect a few hours of compilation on a 2.4Ghz dual-core Intel CPU with 3gb of RAM.
Compiling the Qt framework is a big task and shall take a long time even on powerfull hardware. It is suggested a modern CPU and as much RAM as you can. Expect a few hours of compilation on a 2.4Ghz dual-core Intel CPU with 3gb of RAM.


Make sure you have at least 20gb of free hard-disk space because of all the requirements and compile time space. Since this is a work-in-progress, the build tree will not be cleaned after the build is complete. So be wise, and increase that filesystem!
Make sure you have at least 20gb of free hard-disk space because of all the requirements and compile time space. Since this is a work-in-progress, the build tree will not be cleaned after the build is complete. So be wise, and increase that filesystem!
System Software Requirements
 
== System Software Requirements ==
 


To compile the Qt framework you don't need all the usual dependency of Necessitas. But make sure your distribution has all the usual build tools. On Ubuntu, you want to make sure that the following packages are installed (use the package manager):
To compile the Qt framework you don't need all the usual dependency of Necessitas. But make sure your distribution has all the usual build tools. On Ubuntu, you want to make sure that the following packages are installed (use the package manager):


    build-essential
* build-essential
    git
* git


It might be time to install also these packages, which are required for Necessitas SDK and not for building Qt directly:
It might be time to install also these packages, which are required for Necessitas SDK and not for building Qt directly:


    OpenJDK
* OpenJDK
    ant (minimum version 1.8)
* ant (minimum version 1.8)


Android specific Requirements
== Android specific Requirements ==


The Qt framework build process requires the Android NDK. While any Android NDK (>= r05) should be fine, since Necessitas requires Android NDK r06 it is advisable, at this point, to install this specific version.
 
The Qt framework build process requires the Android NDK. While any Android NDK (>= r05) should be fine, since Necessitas requires Android NDK r06 it is advisable, at this point, to install this specific version. EDIT 10/21/12: It appears the Necessitas installer installs Android NDK r8b.


In case you don't have it, it's a good time now to grab the Necessitas SDK and install it: it will download and install for you both the proper Android NDK and SDK which will be later required to use the Qt framework you are going to build.
In case you don't have it, it's a good time now to grab the Necessitas SDK and install it: it will download and install for you both the proper Android NDK and SDK which will be later required to use the Qt framework you are going to build.
Line 32: Line 40:
First download Necessitas SDK from https://sourceforge.net/projects/necessitas/files/, then make it executable and install:
First download Necessitas SDK from https://sourceforge.net/projects/necessitas/files/, then make it executable and install:


chmod +x necessitas-x.y-online-sdk-installer-linux
chmod +x necessitas-x.y-online-sdk-installer-linux
./necessitas-x.y-online-sdk-installer-linux
./necessitas-x.y-online-sdk-installer-linux


Make sure you select Android SDK and Android NDK, and, after the installation is done, note down the respective paths, which are located under the folder where you installed the Necessitas SDK.
Make sure you select Android SDK and Android NDK, and, after the installation is done, note down the respective paths, which are located under the folder where you installed the Necessitas SDK.
Get ready and start!
 
Get the sources
Anyway, if you want to download and install the Android SDK and NDK yourself, please note that the minimum required version of the SDK is ''r09'' and for the NDK is ''r5''.
 
== Get ready and start! ==
 
=== Get the sources ===


The Qt framework for Necessitas is available from the official git repository at the following url: .
The Qt framework for Necessitas is available from the official git repository at the following url: .
Line 43: Line 55:
To clone the repository, the usual command is:
To clone the repository, the usual command is:


git clone git://anongit.kde.org/android-qt.git
git clone git://anongit.kde.org/android-qt.git


You need internet access, of course. A new folder called android-qt. This folder will contain the entire Qt framework both before and after the build, so place it where you have plenty of free disk space and where you plan to install the framework.
You need internet access, of course. A new folder called android-qt. This folder will contain the entire Qt framework both before and after the build, so place it where you have plenty of free disk space and where you plan to install the framework.
Line 50: Line 62:
You should make sure your have selected the branch you want to build. Just type:
You should make sure your have selected the branch you want to build. Just type:


git branch
git branch


to see all the available branches and:
to see all the available branches and:


git checkout branch-name
git checkout branch-name


to sync your source tree to that specific branch. The branch names should be self-explanatory.
to sync your source tree to that specific branch. The branch names should be self-explanatory.
Compile!
=== Compile! ===


Get into the just cloned repository:
Get into the just cloned repository:


cd android-qt
cd android-qt


Start the build process, by using the provided androidconfigbuild.sh script to configure and build the framework. You must specify the full absolute path to your Android NDK installation path:
Start the build process, by using the provided androidconfigbuild.sh script to configure and build the framework. You must specify the full absolute path to your Android NDK installation path:


./android/androidconfigbuild.sh -n --path to android NDK-- -q 1 -d 1
./android/androidconfigbuild.sh -n --path to android NDK-- -q 1 -d 1
 
(so something like for example: "./android/androidconfigbuild.sh -n /home/android/necessitas/android-ndk/ -q 1 -d 1")


Sit back, grab a coffee, then a pizza, then some icd cream, then a nap, finally a shower. Sometime later, it will be ready. The previous command line will build, for the first time, your framework with debugging symbols. For further compilations, for example if you have updated the repo or changed something, the following command line will be enough:
Sit back, grab a coffee, then a pizza, then some icd cream, then a nap, finally a shower. Sometime later, it will be ready. The previous command line will build, for the first time, your framework with debugging symbols. For further compilations, for example if you have updated the repo or changed something, the following command line will be enough:


./android/androidconfigbuild.sh -n --path to android NDK--
./android/androidconfigbuild.sh -n --path to android NDK--


Now, what do i do?
== Now, what do i do? ==
Setup QtCreator
 
=== Setup QtCreator ===


Good, if you followed so far you should have built a working Qt repository for Android. At this point you must open the QtCreator and add this new Qt version to the list of available Qt versions.
Good, if you followed so far you should have built a working Qt repository for Android. At this point you must open the QtCreator and add this new Qt version to the list of available Qt versions.


In order to use Necessitas, you should now [Compile QtCreator], and then [Setup QtCreator]. Of course, you don't need to build the QtCreator but you can use the version you have previously installed as part of the NEcessitas SDK. Just be aware that will not be the latest release.
In order to use Necessitas, you should now compile the Qt Creator for Necessitas. Check [[Necessitas/Qt4Creator]]. Of course, you don't need to build the QtCreator but you can use the version you have previously installed as part of the Necessitas SDK. Just be aware that will not be the latest release, and you still need to reconfigure it to use this newly compiled framework.


At this point, you can add the newly built Qt framework by opening the Tools menu and the Options dialog. Go to the Qt tab and tap Add....
If, for any reason, you don't plan to use the Necessitas QtCreator, the same configuration process do apply to any standard QtCreator release, but you will not be able to use the integrated build process for Android, you will just be able to create the .so file, then you will have to manage your own Android build process.


If order to locate the Qt framework, point the file browser to the bin/qmake file located under the folder where you built the framework.
=== Push libraries ===


If, for any reason, you don't plan to use the Necessitas QtCreator, the same process do apply to any standard QtCreator release, but you will not be able to use the integrated build process for Android, you will just be able to create the .so file, then you will have to manage your own Android build process.
Of course to be able to use your new Qt framework you must also push it to the device (emulator or real doesn't matter), you cannot use Ministro. You must enable the Deploy local qt libs. So within QtCreator open the Projects tab, go to Android / Run tab, open Deploy Configurations, check Deploy local qt libs, check the picture here:
Push libraries


Of course to be able to use your new Qt framework you must also push it to the device (emulator or real doesn't matter), you cannot use Ministro. You must enable the Deploy local qt libs. So within QtCreator open the Projects tab, go to Android / Run tab, open Deploy Configurations, check Deploy local qt libs, check the picture here:
[[File:deploy_local_libs.png]]
 
 
== Adding other libraries ==


Deploy local qt libs
Adding other libraries


In order to install all the following libraries, make sure you put the sources outside the main Qt framework working folder. Clone the repositories at least one lever above it: for example, if you have the Qt framework under /home/myself/qt-android, put each of the following under /home/myself/android-qt-mobility and so on.
In order to install all the following libraries, make sure you put the sources outside the main Qt framework working folder. Clone the repositories at least one lever above it: for example, if you have the Qt framework under /home/myself/qt-android, put each of the following under /home/myself/android-qt-mobility and so on.
QtMobility
 
=== QtMobility ===


First of all, clone the git repository:
First of all, clone the git repository:


git clone git://anongit.kde.org/android-qt-mobility.git
git clone git://anongit.kde.org/android-qt-mobility.git


Then build it with the following command lines:
Then build it with the following command lines:


cd android-qt-mobility
cd android-qt-mobility
./configure -prefix ../android-qt -staticconfig android -qmake-exec ../android-qt/bin/qmake -modules "bearer location contacts versit messaging systeminfo serviceframework sensors gallery organizer feedback connectivity"
ANDROID_NDK_ROOT=~/necessitas/android-ndk ./configure -prefix ../android-qt -staticconfig android -qmake-exec ../android-qt/bin/qmake -modules "bearer location contacts versit messaging systeminfo serviceframework sensors gallery organizer feedback connectivity"
 
Just check the ../android-qt and the ndk path to make sure it points exactly to the Qt framework you have just compiled! You can also select the modules you need. Please note that other modules might not be supported yet on Android.


Just check the ../android-qt path to make sure it points exactly to the Qt framework you have just compiled! You can also select the modules you need. Please note that other modules might not be supported yet on Android.
== Final notes ==
Final notes
=== Build and configuration options ===
Build and configuration options


androidconfigbuild.sh accepts the following parameters (you can see all options by adding -p to script parameters):
androidconfigbuild.sh accepts the following parameters (you can see all options by adding -p to script parameters):


usage: ./androidconfigbuild.sh options
usage: ./androidconfigbuild.sh options


OPTIONS:
OPTIONS:
-p Shows this message
-p Shows this message
-c Clean qt
-c Clean qt
-q Qt build options
-q Qt build options
0 - don't configure qt (only compile) default
0 - don't configure qt (only compile) default
1 - configure qt and compile qt
1 - configure qt and compile qt
-b Build qt
-b Build qt
0 - don't build
0 - don't build
1 - build
1 - build
-s Install qt
-s Install qt
0 - don't install
0 - don't install
1 - install
1 - install
-n NDK root. Default "/usr/local/android-ndk-r5b"
-n NDK root. Default "/usr/local/android-ndk-r5b"
-o NDK host. Default "linux-x86"
-o NDK host. Default "linux-x86"
-f NDK toolchain prefix. Default "arm-linux-androideabi"
-f NDK toolchain prefix. Default "arm-linux-androideabi"
-v NDK toolchain version. Default "4.4.3"
-v NDK toolchain version. Default "4.4.3"
-a Target cpu architecture. Default "armeabi"
-a Target cpu architecture. Default "armeabi"
armeabi - tune for android arm v5
armeabi - tune for android arm v5
armeabi-v7a - tune for android arm v7
armeabi-v7a - tune for android arm v7
Optional name suffix: v5/v7
Optional name suffix: v5/v7
-h Shared
-h Shared
0 - Build static version of qt
0 - Build static version of qt
1 - Build shared version of qt
1 - Build shared version of qt
-x Exceptions options
-x Exceptions options
0 - don't use exceptions (you won't be able to build qtcreator with such a qt though)
0 - don't use exceptions (you won't be able to build qtcreator with such a qt though)
1 - use exceptions
1 - use exceptions
Optional name suffix: Xc/Nx
Optional name suffix: Xc/Nx
-d Build debug qt
-d Build debug qt
Optional name suffix: D/R/DaR
Optional name suffix: D/R/DaR
-r Build release qt
-r Build release qt
Optional name suffix: R/D/DaR
Optional name suffix: R/D/DaR
-m Modify install path according to passed in options (name suffixes applied in above listed order).
-m Modify install path according to passed in options (name suffixes applied in above listed order).  
-i Install path. Default "/home/your-name/path/to/android-lighthouse"
-i Install path. Default "/home/your-name/path/to/android-lighthouse"

Latest revision as of 07:56, 17 February 2013

Foreword

This instructions are tailored for Linux, Ubuntu linux 12.04. Any Linux distribution which is reasonably updated should work anyway. There are some minimum GLIBC/GCC requirements, but anything updated at least at 01/2012 should not have any problems, provided that you fullfill all the requirements either by installing you distro packets or from sources. Ubuntu 12.04 do include all the requirements in the default repositories.

It is also possible to compile the Qt framework on Windows and MacOSX, but this Wiki page at the moment will not cover it.

Requirements

First of all, you need a working Linux installation. On this Wiki page Ubuntu 12.04 will be used as a reference, please note that any flavour of Linux should work.

Hardware Requirements

Compiling the Qt framework is a big task and shall take a long time even on powerfull hardware. It is suggested a modern CPU and as much RAM as you can. Expect a few hours of compilation on a 2.4Ghz dual-core Intel CPU with 3gb of RAM.

Make sure you have at least 20gb of free hard-disk space because of all the requirements and compile time space. Since this is a work-in-progress, the build tree will not be cleaned after the build is complete. So be wise, and increase that filesystem!

System Software Requirements

To compile the Qt framework you don't need all the usual dependency of Necessitas. But make sure your distribution has all the usual build tools. On Ubuntu, you want to make sure that the following packages are installed (use the package manager):

  • build-essential
  • git

It might be time to install also these packages, which are required for Necessitas SDK and not for building Qt directly:

  • OpenJDK
  • ant (minimum version 1.8)

Android specific Requirements

The Qt framework build process requires the Android NDK. While any Android NDK (>= r05) should be fine, since Necessitas requires Android NDK r06 it is advisable, at this point, to install this specific version. EDIT 10/21/12: It appears the Necessitas installer installs Android NDK r8b.

In case you don't have it, it's a good time now to grab the Necessitas SDK and install it: it will download and install for you both the proper Android NDK and SDK which will be later required to use the Qt framework you are going to build.

First download Necessitas SDK from https://sourceforge.net/projects/necessitas/files/, then make it executable and install:

chmod +x necessitas-x.y-online-sdk-installer-linux
./necessitas-x.y-online-sdk-installer-linux

Make sure you select Android SDK and Android NDK, and, after the installation is done, note down the respective paths, which are located under the folder where you installed the Necessitas SDK.

Anyway, if you want to download and install the Android SDK and NDK yourself, please note that the minimum required version of the SDK is r09 and for the NDK is r5.

Get ready and start!

Get the sources

The Qt framework for Necessitas is available from the official git repository at the following url: .

To clone the repository, the usual command is:

git clone git://anongit.kde.org/android-qt.git

You need internet access, of course. A new folder called android-qt. This folder will contain the entire Qt framework both before and after the build, so place it where you have plenty of free disk space and where you plan to install the framework. Branch select

You should make sure your have selected the branch you want to build. Just type:

git branch

to see all the available branches and:

git checkout branch-name

to sync your source tree to that specific branch. The branch names should be self-explanatory.

Compile!

Get into the just cloned repository:

cd android-qt

Start the build process, by using the provided androidconfigbuild.sh script to configure and build the framework. You must specify the full absolute path to your Android NDK installation path:

./android/androidconfigbuild.sh -n --path to android NDK-- -q 1 -d 1

(so something like for example: "./android/androidconfigbuild.sh -n /home/android/necessitas/android-ndk/ -q 1 -d 1")

Sit back, grab a coffee, then a pizza, then some icd cream, then a nap, finally a shower. Sometime later, it will be ready. The previous command line will build, for the first time, your framework with debugging symbols. For further compilations, for example if you have updated the repo or changed something, the following command line will be enough:

./android/androidconfigbuild.sh -n --path to android NDK--

Now, what do i do?

Setup QtCreator

Good, if you followed so far you should have built a working Qt repository for Android. At this point you must open the QtCreator and add this new Qt version to the list of available Qt versions.

In order to use Necessitas, you should now compile the Qt Creator for Necessitas. Check Necessitas/Qt4Creator. Of course, you don't need to build the QtCreator but you can use the version you have previously installed as part of the Necessitas SDK. Just be aware that will not be the latest release, and you still need to reconfigure it to use this newly compiled framework.

If, for any reason, you don't plan to use the Necessitas QtCreator, the same configuration process do apply to any standard QtCreator release, but you will not be able to use the integrated build process for Android, you will just be able to create the .so file, then you will have to manage your own Android build process.

Push libraries

Of course to be able to use your new Qt framework you must also push it to the device (emulator or real doesn't matter), you cannot use Ministro. You must enable the Deploy local qt libs. So within QtCreator open the Projects tab, go to Android / Run tab, open Deploy Configurations, check Deploy local qt libs, check the picture here:


Adding other libraries

In order to install all the following libraries, make sure you put the sources outside the main Qt framework working folder. Clone the repositories at least one lever above it: for example, if you have the Qt framework under /home/myself/qt-android, put each of the following under /home/myself/android-qt-mobility and so on.

QtMobility

First of all, clone the git repository:

git clone git://anongit.kde.org/android-qt-mobility.git

Then build it with the following command lines:

cd android-qt-mobility
ANDROID_NDK_ROOT=~/necessitas/android-ndk ./configure -prefix ../android-qt -staticconfig android -qmake-exec ../android-qt/bin/qmake -modules "bearer location contacts versit messaging systeminfo serviceframework sensors gallery organizer feedback connectivity"

Just check the ../android-qt and the ndk path to make sure it points exactly to the Qt framework you have just compiled! You can also select the modules you need. Please note that other modules might not be supported yet on Android.

Final notes

Build and configuration options

androidconfigbuild.sh accepts the following parameters (you can see all options by adding -p to script parameters):

usage: ./androidconfigbuild.sh options
OPTIONS:
-p Shows this message
-c Clean qt
-q Qt build options
0 - don't configure qt (only compile) default
1 - configure qt and compile qt
-b Build qt
0 - don't build
1 - build
-s Install qt
0 - don't install
1 - install
-n NDK root. Default "/usr/local/android-ndk-r5b"
-o NDK host. Default "linux-x86"
-f NDK toolchain prefix. Default "arm-linux-androideabi"
-v NDK toolchain version. Default "4.4.3"
-a Target cpu architecture. Default "armeabi"
armeabi - tune for android arm v5
armeabi-v7a - tune for android arm v7
Optional name suffix: v5/v7
-h Shared
0 - Build static version of qt
1 - Build shared version of qt
-x Exceptions options
0 - don't use exceptions (you won't be able to build qtcreator with such a qt though)
1 - use exceptions
Optional name suffix: Xc/Nx
-d Build debug qt
Optional name suffix: D/R/DaR
-r Build release qt
Optional name suffix: R/D/DaR
-m Modify install path according to passed in options (name suffixes applied in above listed  order). 
-i Install path. Default "/home/your-name/path/to/android-lighthouse"