diff --git a/.gitignore b/.gitignore
index 2b816b58b9e16e3a4ebf11d664b91409b55db869..3a8dd966d4fad09deafcdd478542f0472821d21c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
# Ignore the samples directory, since they should be separate git projects
samples/
+e-ui-sdk.jar
\ No newline at end of file
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 7ec2279a1cd21bf8df575059425288951aa549d1..2c7db0f156ce6176e3fd2b8a445f8d826eca6b43 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,7 +1,21 @@
stages:
- update-from-upstream
+ - build-sdk
include:
- project: 'e/priv/os/build'
ref: master
file: '/templates/.gitlab-ci-update-from-upstream.yml'
+
+image: "registry.gitlab.e.foundation:5000/e/apps/docker-android-apps-cicd:latest"
+
+before_script:
+- chmod a+x buildSdk.sh
+
+build-sdk:
+ stage: build-sdk
+ script:
+ - ./buildSdk.sh
+ artifacts:
+ paths:
+ - e-ui-sdk.jar
\ No newline at end of file
diff --git a/buildSdk.sh b/buildSdk.sh
new file mode 100755
index 0000000000000000000000000000000000000000..ae2640696db1bbf4d750efa996677b98aa15f543
--- /dev/null
+++ b/buildSdk.sh
@@ -0,0 +1,46 @@
+#!/bin/bash
+
+echo "Clearing intermediates"
+rm -rf intermediates
+mkdir intermediates
+
+if [[ -z "${ANDROID_HOME}" ]]; then
+ echo "{ANDROID_HOME} path variable is not set. Set it to point Android SDK."
+ exit 1
+else
+ build_tools_dir=$ANDROID_HOME/build-tools/29.0.2/
+fi
+
+aapt2="${build_tools_dir}/aapt2"
+
+echo "Compiling resources"
+$aapt2 compile --dir lineage/res/res -o intermediates/resources.zip
+
+platform_dir=$ANDROID_HOME/platforms/android-28
+
+echo "Linking resources"
+$aapt2 link intermediates/resources.zip -I $platform_dir/android.jar \
+ --private-symbols org.lineageos.platform.internal \
+ --allow-reserved-package-id \
+ --package-id 63 \
+ --manifest lineage/res/AndroidManifest.xml \
+ --java intermediates \
+ -o intermediates/res.apk
+
+echo "Unzipping temporary apk"
+unzip -qo intermediates/res.apk -d intermediates/
+
+# Creating obj directory
+rm -rf obj
+mkdir obj
+
+# Compiling R.java
+echo "Compiling R.java"
+javac -source 1.8 -target 1.8 $(find intermediates/lineageos -type f -name 'R.java') -d obj
+
+jar cvf e-ui-sdk.jar -C obj . -C intermediates resources.arsc
+
+echo "Clearing intermediate sources"
+rm -rf intermediates
+rm -rf obj
+echo "e-ui-sdk.jar generated successully."
\ No newline at end of file
diff --git a/lineage/res/Android.mk b/lineage/res/Android.mk
index 6baba6b93caa95977ddd44858bc1c5b7a6a07e8e..a13d9fcc43bf4b58c527d2d53e4ba7a98e78d153 100644
--- a/lineage/res/Android.mk
+++ b/lineage/res/Android.mk
@@ -22,6 +22,7 @@ LOCAL_CERTIFICATE := platform
LOCAL_AAPT_FLAGS := --auto-add-overlay
LOCAL_AAPT_FLAGS += --private-symbols org.lineageos.platform.internal
LOCAL_RESOURCE_DIR := $(addprefix $(LOCAL_PATH)/, res)
+LOCAL_RESOURCE_DIR += $(addprefix $(LOCAL_PATH)/, res-symbol)
LOCAL_RESOURCE_DIR += $(LOCAL_PATH)/../../sdk/res/res
# Tell aapt to create "extending (non-application)" resource IDs,
diff --git a/lineage/res/res/values/symbols.xml b/lineage/res/res-symbol/values/symbols.xml
similarity index 100%
rename from lineage/res/res/values/symbols.xml
rename to lineage/res/res-symbol/values/symbols.xml
diff --git a/lineage/res/res/drawable/ic_menu.xml b/lineage/res/res/drawable/ic_menu.xml
new file mode 100644
index 0000000000000000000000000000000000000000..afc1652b009b43cb2b9db3bd173167f78f0d89b1
--- /dev/null
+++ b/lineage/res/res/drawable/ic_menu.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/lineage/res/res/drawable/ic_search.xml b/lineage/res/res/drawable/ic_search.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c055d95fa1e95808b4369075e8d1cc75b63ec787
--- /dev/null
+++ b/lineage/res/res/drawable/ic_search.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/lineage/res/res/drawable/ic_star.xml b/lineage/res/res/drawable/ic_star.xml
new file mode 100644
index 0000000000000000000000000000000000000000..52abd72281817ce46c39a99728e256de2358a61b
--- /dev/null
+++ b/lineage/res/res/drawable/ic_star.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/lineage/res/res/drawable/ic_star_filled.xml b/lineage/res/res/drawable/ic_star_filled.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4ddac91348adc3798618e3058647c57d3f4d0914
--- /dev/null
+++ b/lineage/res/res/drawable/ic_star_filled.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/lineage/res/res/values-night/colors.xml b/lineage/res/res/values-night/colors.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4a7b6192abc1deea6a57feb349a1f0eaedfc0a0b
--- /dev/null
+++ b/lineage/res/res/values-night/colors.xml
@@ -0,0 +1,31 @@
+
+
+
+
+ #FF5630
+
+
+ #333333
+ #4D4D4D
+ @color/color_default_blue1
+ #FFFFFF
+ #CCFFFFFF
+ #000000
+ #666666
+
diff --git a/lineage/res/res/values/colors.xml b/lineage/res/res/values/colors.xml
index 8ff675b2d98612c8bf34f3a877bb81db55278e56..df6179030461d0b165c96e1767192d62a96d9374 100644
--- a/lineage/res/res/values/colors.xml
+++ b/lineage/res/res/values/colors.xml
@@ -17,4 +17,26 @@
#FF5630
+
+
+
+ #FB3846
+ #007FFF
+ #24527E
+ #FC7222
+ #C8CED0
+ #848484
+ #38D874
+
+
+ #FFFFFF
+ #FFFFFF
+ @color/color_default_blue1
+ #CC000000
+ #8C000000
+ #FAFAFA
+ #FFFFFF
+
diff --git a/lineage/res/res/values/public.xml b/lineage/res/res/values/public.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9d7745ebffc5eb7ddd420237fe82a1ed5fbb8d07
--- /dev/null
+++ b/lineage/res/res/values/public.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sdk/res/res/values/public.xml b/sdk/res/res/values/public.xml
index d300492a37d04515dae8122e9ef8ce2d4edce20f..9bd75bedde9e603f80817680e42601467e01fba1 100644
--- a/sdk/res/res/values/public.xml
+++ b/sdk/res/res/values/public.xml
@@ -10,5 +10,4 @@
-