diff --git a/CMakeLists.txt b/CMakeLists.txt
index 86d0849f8f871d08c806daa3836881082a08dd61..5067b8f9d72b4d9b23a41559541b5fb216c95923 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -14,7 +14,7 @@ include(FeatureSummary)
 
 ################# set KDE specific information #################
 
-find_package(ECM 0.0.8 REQUIRED NO_MODULE)
+find_package(ECM ${KF5_MIN_VERSION} REQUIRED NO_MODULE)
 
 # where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ is checked
 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR})
diff --git a/android-build.sh b/android-build.sh
new file mode 100644
index 0000000000000000000000000000000000000000..cf1b4c8d87c241d2b85ab5106392ba7e59092673
--- /dev/null
+++ b/android-build.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+ROOT_DIR=$(dirname $(realpath -s $0))
+mkdir -p $ROOT_DIR/builds
+docker run --rm -it -v $ROOT_DIR:/home/user/src/qf kdeorg/android-sdk bash -c "git clone --depth 1 kde:sysadmin/ci-tooling;/opt/helpers/build-kde-project kcoreaddons Frameworks -DBUILD_TESTING=OFF; /opt/helpers/build-kde-project kirigami Frameworks -DBUILD_TESTING=OFF;/opt/helpers/build-cmake qf qf -DQTANDROID_EXPORTED_TARGET=qiflora -DANDROID_APK_DIR=/home/user/src/qf/packaging/android -DANDROID_APK_OUTPUT_DIR=/home/user/src/qf/builds;make -C /home/user/build-arm/qf create-apk;make -C /home/user/build-arm64/qf create-apk"
diff --git a/packaging/android/AndroidManifest.xml b/packaging/android/AndroidManifest.xml
new file mode 100644
index 0000000000000000000000000000000000000000..14ed8344a1503b6a3fd6bff9306a9328b79dc1e8
--- /dev/null
+++ b/packaging/android/AndroidManifest.xml
@@ -0,0 +1,98 @@
+<?xml version='1.0' encoding='utf-8'?>
+<manifest package="org.eyecreate.qiflora" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="1.0" android:versionCode="1" android:installLocation="auto">
+    <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28"/>
+
+    <!-- The following comment will be replaced upon deployment with default permissions based on the dependencies of the application.
+         Remove the comment if you do not require these default permissions. -->
+    <uses-permission android:name="android.permission.INTERNET" />
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+    <uses-permission android:name="android.permission.BLUETOOTH" />
+    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
+    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+
+    <!-- The following comment will be replaced upon deployment with default features based on the dependencies of the application.
+         Remove the comment if you do not require these default features. -->
+    
+
+    <supports-screens android:largeScreens="true" android:normalScreens="true" android:anyDensity="true" android:smallScreens="true"/>
+
+    <application android:hardwareAccelerated="true" android:name="org.qtproject.qt5.android.bindings.QtApplication" android:label="QiFlora"  android:icon="@drawable/logo">
+        <activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|layoutDirection|locale|fontScale|keyboard|keyboardHidden|navigation|mcc|mnc"
+                  android:name="org.qtproject.qt5.android.bindings.QtActivity"
+                  android:label="QiFlora"
+                  android:icon="@drawable/logo"
+                  android:theme="@style/AppTheme"
+                  android:screenOrientation="unspecified"
+                  android:launchMode="singleTop">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN"/>
+                <category android:name="android.intent.category.LAUNCHER"/>
+            </intent-filter>
+
+            <!-- Application arguments -->
+            <!-- meta-data android:name="android.app.arguments" android:value="arg1 arg2 arg3"/ -->
+            <!-- Application arguments -->
+
+            <meta-data android:name="android.app.lib_name" android:value="qiflora"/>
+            <meta-data android:name="android.app.qt_sources_resource_id" android:resource="@array/qt_sources"/>
+            <meta-data android:name="android.app.repository" android:value="default"/>
+            <meta-data android:name="android.app.qt_libs_resource_id" android:resource="@array/qt_libs"/>
+            <meta-data android:name="android.app.bundled_libs_resource_id" android:resource="@array/bundled_libs"/>
+            <!-- Deploy Qt libs as part of package -->
+            <meta-data android:name="android.app.bundle_local_qt_libs" android:value="1"/>
+
+            <!-- Run with local libs -->
+            <meta-data android:name="android.app.use_local_qt_libs" android:value="1"/>
+            <meta-data android:name="android.app.libs_prefix" android:value="/data/local/tmp/qt/"/>
+            <meta-data android:name="android.app.load_local_libs_resource_id" android:resource="@array/load_local_libs"/>
+            <meta-data android:name="android.app.load_local_jars" android:value="jar/QtAndroid.jar:jar/QtAndroidBearer.jar:jar/QtAndroidBluetooth.jar"/>
+            <meta-data android:name="android.app.static_init_classes" android:value="org.qtproject.qt5.android.bluetooth.QtBluetoothBroadcastReceiver"/>
+            <!-- Used to specify custom system library path to run with local system libs -->
+            <!-- <meta-data android:name="android.app.system_libs_prefix" android:value="/system/lib/"/> -->
+            <!--  Messages maps -->
+            <meta-data android:value="@string/ministro_not_found_msg" android:name="android.app.ministro_not_found_msg"/>
+            <meta-data android:value="@string/ministro_needed_msg" android:name="android.app.ministro_needed_msg"/>
+            <meta-data android:value="@string/fatal_error_msg" android:name="android.app.fatal_error_msg"/>
+            <meta-data android:value="@string/unsupported_android_version" android:name="android.app.unsupported_android_version"/>
+            <!--  Messages maps -->
+
+            <!-- Splash screen -->
+            <!-- Orientation-specific (portrait/landscape) data is checked first. If not available for current orientation,
+                 then android.app.splash_screen_drawable. For best results, use together with splash_screen_sticky and
+                 use hideSplashScreen() with a fade-out animation from Qt Android Extras to hide the splash screen when you
+                 are done populating your window with content. -->
+            <!-- meta-data android:name="android.app.splash_screen_drawable_portrait" android:resource="@drawable/logo_portrait" / -->
+            <!-- meta-data android:name="android.app.splash_screen_drawable_landscape" android:resource="@drawable/logo_landscape" / -->
+            <meta-data android:name="android.app.splash_screen_drawable" android:resource="@drawable/splash_logo"/>
+            <!-- meta-data android:name="android.app.splash_screen_sticky" android:value="true"/ -->
+            <!-- Splash screen -->
+
+            <!-- Background running -->
+            <!-- Warning: changing this value to true may cause unexpected crashes if the
+                          application still try to draw after
+                          "applicationStateChanged(Qt::ApplicationSuspended)"
+                          signal is sent! -->
+            <meta-data android:name="android.app.background_running" android:value="false"/>
+            <!-- Background running -->
+
+            <!-- auto screen scale factor -->
+            <meta-data android:name="android.app.auto_screen_scale_factor" android:value="false"/>
+            <!-- auto screen scale factor -->
+
+            <!-- extract android style -->
+            <!-- available android:values :
+                * default - In most cases this will be the same as "full", but it can also be something else if needed, e.g., for compatibility reasons
+                * full - useful QWidget & Quick Controls 1 apps
+                * minimal - useful for Quick Controls 2 apps, it is much faster than "full"
+                * none - useful for apps that don't use any of the above Qt modules
+                -->
+            <meta-data android:name="android.app.extract_android_style" android:value="default"/>
+            <!-- extract android style -->
+    </activity>
+
+    <!-- For adding service(s) please check: https://wiki.qt.io/AndroidServices -->
+
+    </application>
+
+</manifest>
diff --git a/packaging/android/res/drawable/logo.xml b/packaging/android/res/drawable/logo.xml
new file mode 100644
index 0000000000000000000000000000000000000000..bbba60588bba9011a316b2f6b537011d8d842de2
--- /dev/null
+++ b/packaging/android/res/drawable/logo.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="400.174dp"
+    android:height="400.174dp"
+    android:viewportWidth="400.174"
+    android:viewportHeight="400.174">
+
+    <path
+        android:fillColor="#45B549"
+        android:pathData="M201.38,88.422c113.12-12.44,149.88-84,150-84c1.856-3.567,6.252-4.953,9.819-3.097 c1.799,0.936,3.126,2.581,3.661,4.537c37.6,127.52,17.08,215.44-26.08,267.6c-16.709,20.331-38.11,36.296-62.36,46.52 c-22.339,9.474-46.587,13.584-70.8,12c-46.36-3.24-88.68-28-108.32-72.36c-5.032-11.34-8.284-23.388-9.64-35.72 c-2.743-24.717,2.083-49.685,13.84-71.6c12.622-23.385,32.719-41.863,57.08-52.48C172.173,93.833,186.611,89.988,201.38,88.422 L201.38,88.422z" />
+    <path
+        android:fillColor="#009549"
+        android:pathData="M350.58,7.102c0.099-4.019,3.437-7.198,7.456-7.099c4.019,0.099,7.198,3.437,7.099,7.456 c-0.007,0.296-0.033,0.59-0.076,0.883c0,0.36-6.36,84-88,168.64l-0.76,0.8c-19.18,19.673-40.226,37.436-62.84,53.04l49.04,9.12 c3.909,0.943,6.313,4.876,5.37,8.784c-0.854,3.538-4.189,5.902-7.81,5.536l-64-12c-58.36,36.96-157.28,71.08-165.92,151.6 c-0.535,3.985-4.199,6.782-8.184,6.247c-3.793-0.509-6.544-3.868-6.296-7.687c10.32-96.52,108.4-121.36,174.56-163.56l0.92-0.6 c26.403-16.71,50.861-36.311,72.92-58.44l-5.8-57.4c-0.535-3.985,2.262-7.649,6.247-8.184s7.649,2.262,8.184,6.247 c0.022,0.165,0.039,0.331,0.049,0.497l4.4,44.56C345.18,79.142,350.54,7.422,350.58,7.102L350.58,7.102z" />
+</vector>
\ No newline at end of file
diff --git a/packaging/android/res/drawable/splash_logo.xml b/packaging/android/res/drawable/splash_logo.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9e7706428d7ae96914064583f90430d63f82487b
--- /dev/null
+++ b/packaging/android/res/drawable/splash_logo.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item>
+        <shape android:shape="rectangle" >
+            <solid android:color="#FF1fca05"/>
+        </shape>
+    </item>
+    <item android:width="256dp" android:height="256dp" android:gravity="center" android:drawable="
+          @drawable/logo">
+    </item>
+</layer-list>
diff --git a/packaging/android/res/values/apptheme.xml b/packaging/android/res/values/apptheme.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1a0b7bbce45ecf7240099d4f735ca4447e72cc47
--- /dev/null
+++ b/packaging/android/res/values/apptheme.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <style name="AppTheme" parent="@android:style/Theme.DeviceDefault.Light.NoActionBar">
+        <item name="android:windowBackground">@drawable/splash_logo</item>
+    </style>
+</resources> 
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 62d1271c389fb9422cd4726fdc4198209b768fde..fabc210966e8ca317c6e9490d1d5e0215d982aa0 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -6,6 +6,10 @@ set(qiflora_SRCS
     main.cpp
     )
 
+if (CMAKE_SYSTEM_NAME STREQUAL "Android")
+    kirigami_package_breeze_icons(ICONS view-refresh help-about filename-bpm-amarok colors-chromablue quickopen contrast window-close mail-sent globe)
+endif()
+    
 qt5_add_resources(RESOURCES resources.qrc)
 add_executable(qiflora ${qiflora_SRCS} ${RESOURCES})
 target_link_libraries(qiflora Qt5::Core Qt5::Qml Qt5::Quick Qt5::Svg Qt5::Bluetooth Qt5::Charts KF5::CoreAddons)