diff --git a/pack.sh b/pack.sh
index a2b296310de0d57d465031bf7c86301823f522ee..d9c8e9176bf7772bf0d3a8c3f9bb217283a9f651 100755
--- a/pack.sh
+++ b/pack.sh
@@ -70,7 +70,7 @@ BUILD_DIR=${PWD}/build_${BUILD_TARGET}_${BUILD_TYPE}/build
 OUT_DIR=${PWD}/build_${BUILD_TARGET}_${BUILD_TYPE}/
 
 #we care only about dist dir, i think
-[ ! -d ${DIST_DIR} ] && { echo "No build found: $BUILD_TARGET" && exit 255; }
+#[ ! -d ${DIST_DIR} ] && { echo "No build found: $BUILD_TARGET" && exit 255; }
 
 
 if [ -z "$SIGNCONFIG" ]
diff --git a/packaging/android.sh b/packaging/android.sh
new file mode 100644
index 0000000000000000000000000000000000000000..d364f659b3f4ad98f2778c6733de8533186629cd
--- /dev/null
+++ b/packaging/android.sh
@@ -0,0 +1,74 @@
+#!/bin/bash -e
+
+set -e
+
+SOURCE=${BASH_SOURCE[0]}
+while [ -L "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
+  TARGET=$(readlink "$SOURCE")
+  if [[ $TARGET == /* ]]; then
+    echo "SOURCE '$SOURCE' is an absolute symlink to '$TARGET'"
+    SOURCE=$TARGET
+  else
+    DIR=$( dirname "$SOURCE" )
+    echo "SOURCE '$SOURCE' is a relative symlink to '$TARGET' (relative to '$DIR')"
+    SOURCE=$DIR/$TARGET # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
+  fi
+done
+echo "SOURCE is '$SOURCE'"
+RDIR=$( dirname "$SOURCE" )
+DIR=$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )
+HERE="$DIR"
+
+#check if we can sign apk
+APK_SIGN_POSSIBLE=1
+if [ -z "$ANDROID_KEYSTORE_PATH" ]
+then
+      echo "No ANDROID_KEYSTORE_PATH provided. APK will NOT be signed"
+      APK_SIGN_POSSIBLE=0
+fi
+
+if [ -z "$ANDROID_KEYSTORE_ALIAS" ]
+then
+      echo "No ANDROID_KEYSTORE_ALIAS provided. APK will NOT be signed"
+      APK_SIGN_POSSIBLE=0
+fi
+
+if [ -z "$ANDROID_KEYSTORE_PASS" ]
+then
+    echo "No ANDROID_KEYSTORE_PASS provided. APK will NOT be signed"
+    APK_SIGN_POSSIBLE=0
+fi
+
+
+
+FILL_VERSION()
+{
+    source "${HERE}/../version.mk"
+
+    VERSION_UPDATE="s|VERSION_MAJOR|${VERSION_MAJOR}|g"
+    BUILD_UPDATE="s|VERSION_MINOR|${VERSION_MINOR}|g"
+    MAJOR_UPDATE="s|VERSION_PATCH|${VERSION_PATCH}|g"
+
+    for TEMPLATE in "$@"; do
+        sed \
+            -e "${VERSION_UPDATE}" \
+            -e "${BUILD_UPDATE}" \
+            -e "${MAJOR_UPDATE}" \
+            -i "${TEMPLATE}"
+    done
+}
+
+PACK() 
+{
+    
+    DIST_DIR=$1
+    BUILD_DIR=$2
+    OUT_DIR=$3
+
+    cd $HERE/../../os/android
+    ./gradlew assembleRelease
+
+    if [ "$APK_SIGN_POSSIBLE" -eq "1" ]; then
+        apksigner sign --ks-key-alias $ANDROID_KEYSTORE_ALIAS --ks $ANDROID_KEYSTORE_PATH --ks-pass pass:"$ANDROID_KEYSTORE_PASS" --in ./app/build/outputs/apk/release/app-release.apk --out ../../CellframeNode.apk
+    fi
+}
diff --git a/targets/android.sh b/targets/android.sh
index eb7b724e199ba16da5c9e71a0fbf0acc9d1abd34..f6656d8c83a71fde0e8d6d38e5ef431585a6cd1c 100644
--- a/targets/android.sh
+++ b/targets/android.sh
@@ -19,9 +19,9 @@ RDIR=$( dirname "$SOURCE" )
 DIR=$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )
 HERE="$DIR"
 
-CMAKE=(cmake -DCMAKE_TOOLCHAIN_FILE=${ANDROID_CMAKE_TOOLCHAIN} -DANDROID_ABI=arm64-v8a -DANDROID_NATIVE_API_LEVEL=29)
-MAKE=(make)
+CMAKE=()
+MAKE=()
 
-echo "Linux target"
+echo "Android target: use pack.sh!"
 echo "CMAKE=${CMAKE[@]}"
 echo "MAKE=${MAKE[@]}"