diff --git a/.github/workflows/publish-android-images.yml b/.github/workflows/publish-android-images.yml
new file mode 100644
index 000000000..1485205e0
--- /dev/null
+++ b/.github/workflows/publish-android-images.yml
@@ -0,0 +1,89 @@
+name: Publish android images
+on:
+  workflow_dispatch:
+    inputs:
+      build_image:
+        description: 'select to build image'
+        required: true
+        type: boolean
+
+jobs:
+  build_android_develop_image:
+    runs-on: ubuntu-22.04
+    if: ${{ inputs.build_image }}
+    steps:
+      - name: Checkout
+        uses: actions/checkout@main
+      - name: Login to DockerHub
+        uses: docker/login-action@master
+        with:
+          username: ${{ secrets.DOCKERHUB_USERNAME }}
+          password: ${{ secrets.DOCKERHUB_TOKEN }}
+      - name: Download for dev package
+        run: |
+          sed -i '3s/OS_NAME=.*/OS_NAME=android/' docker/prepare_for_dev.sh
+          sed -i '/ls -lh release/d' docker/prepare_for_dev.sh
+          ./docker/prepare_for_dev.sh
+        shell: bash
+      - name: Build and Push
+        uses: docker/build-push-action@master
+        with:
+          push: true
+          context: .
+          file: docker/Dockerfile.android.develop.ubuntu
+          tags: |
+            modelbox/modelbox-develop-android-ubuntu:latest
+
+  build_android_unittest:
+    runs-on: ubuntu-22.04
+    if: ${{ always() }}
+    needs: build_android_develop_image
+    steps:
+      - name: Checkout
+        uses: actions/checkout@main
+      - name: Compile
+        run: |
+          containerid=$(docker run -dit --rm --privileged \
+                      -v $(pwd):/data/devel/modelbox \
+                      modelbox/modelbox-develop-android-ubuntu:latest /bin/bash | cut -c1-5)
+          docker exec ${containerid} /bin/bash -c 'bash -x /data/devel/modelbox/build_for_android.sh x64'
+        shell: bash
+      - name: BuildUnit
+        run: |
+          containerid=$(docker run -dit --rm --privileged \
+                      -v $(pwd):/data/devel/modelbox \
+                      modelbox/modelbox-develop-android-ubuntu:latest /bin/bash | cut -c1-5)
+          docker exec ${containerid} /bin/bash -c 'bash -x /data/devel/modelbox/build_for_android.sh buildtest'
+        shell: bash
+      - name: UnitTest
+        run: |
+          containerid=$(docker run -dit --rm --privileged \
+                      -v $(pwd):/data/devel/modelbox \
+                      modelbox/modelbox-develop-android-ubuntu:latest /bin/bash | cut -c1-5)
+          docker exec ${containerid} /bin/bash -c 'bash -x /data/devel/modelbox/build_for_android.sh unittest'
+        shell: bash
+      - name: Upload Artifact
+        uses: actions/upload-artifact@main
+        with:
+          name: modelbox_android_unittest
+          path: unittest.tar.gz
+
+  package_android_ubuntu:
+    runs-on: ubuntu-22.04
+    if: ${{ always() }}
+    needs: build_android_develop_image
+    steps:
+      - name: Checkout
+        uses: actions/checkout@main
+      - name: Package
+        run: |
+          containerid=$(docker run -dit --rm --privileged \
+                      -v $(pwd):/data/devel/modelbox \
+                      modelbox/modelbox-develop-android-ubuntu:latest /bin/bash|cut -c1-5)
+          docker exec ${containerid} /bin/bash -c 'bash -x /data/devel/modelbox/build_for_android.sh'
+        shell: bash
+      - name: Upload Artifact
+        uses: actions/upload-artifact@main
+        with:
+          name: modelbox_aar
+          path: aar_pkg/modelbox.aar
diff --git a/build_for_android.sh b/build_for_android.sh
new file mode 100644
index 000000000..d8ce260ea
--- /dev/null
+++ b/build_for_android.sh
@@ -0,0 +1,221 @@
+#!/bin/bash
+CODE_DIR=$(cd $(dirname "${BASH_SOURCE[0]}");pwd)
+export NDK_ROOT=/data/ndk/android-ndk-r25b
+export USER_ROOT=/data/devel/thirdparty/deb
+export LIBRARY_RUNPATH=/data/user/0/com.mbox_ai/files/lib
+export MINDSPORE_LITE_PATH=/data/mindspore/mindspore-lite-1.9.0
+export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
+export JRE_HOME=${JAVA_HOME}/jre
+export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
+export PATH=${JAVA_HOME}/bin:$PATH
+
+compile() {
+    rm -f /data/data /data/mindspore/mindspore-lite-1.9.0
+    if [ "$1" == "a64" ];then
+        export BUILD_DIR=build_a64
+        export ANDROID_ABI=arm64-v8a
+        export ARCH=aarch64
+        ln -s mindspore-lite-1.9.0-android-aarch64 /data/mindspore/mindspore-lite-1.9.0
+    elif [ "$1" == "x64" ];then
+        export BUILD_DIR=build_x64
+        export ANDROID_ABI=x86_64
+        export ARCH=x86_64
+        ln -s mindspore-lite-1.9.0-linux-x64 /data/mindspore/mindspore-lite-1.9.0
+    fi
+    ln -s /data/devel/thirdparty/deb/${ANDROID_ABI}/data/data /data/data
+
+    ls -lh /data/data
+    ls -lh /data/mindspore/mindspore-lite-1.9.0
+
+    if [ -d ${CODE_DIR}/${BUILD_DIR} ];then
+        rm -rf ${CODE_DIR}/${BUILD_DIR}/*
+    else
+        mkdir -p ${CODE_DIR}/${BUILD_DIR}
+    fi
+
+    cd ${CODE_DIR}/${BUILD_DIR}
+    cmake .. \
+        -DCMAKE_TOOLCHAIN_FILE=${NDK_ROOT}/build/cmake/android.toolchain.cmake \
+        -DCMAKE_BUILD_TYPE=Release \
+        -DCMAKE_ANDROID_API=28 \
+        -DLOCAL_PACKAGE_PATH=/data/devel/thirdparty/src \
+        -DCLANG_TIDY=OFF \
+        -DCLANG_TIDY_AS_ERROR=OFF \
+        -DWITH_MINDSPORE=on \
+        -DWITH_JAVA=ON \
+        -DTEST_WORKING_DIR=/data/user/test \
+        -DPYTHON_VERSION_ANDROID=3.10 \
+        -DANDROID_ABI=${ANDROID_ABI} \
+        -DANDROID_PLATFORM=android-28 \
+        -DANDROID_NDK=${NDK_ROOT} \
+        -DANDROID_TOOLCHAIN=clang \
+        -DANDROID_STL=c++_shared \
+        -DANDROID_ALLOW_UNDEFINED_SYMBOLS=TRUE \
+        -DBUILD_SHARED_LIBS=1 \
+        -Wno-deprecated \
+        -Wno-dev
+
+    if [ $? -ne 0 ];then
+        echo "cmake failed"
+        cat CMakeFiles/CMakeError.log
+        exit 1
+    fi
+
+    make package -j8
+}
+
+prepare(){
+    cd ${CODE_DIR}/${BUILD_DIR}
+    mkdir -p ${ANDROID_ABI}/jni/${ANDROID_ABI}
+    mkdir -p ${ANDROID_ABI}/{libmodelbox-kernel,libmodelbox-drivers,assets}
+
+    cp cpack/_CPack_Packages/Android/TGZ/modelbox-1.0.0-Android/usr/java/packages/lib/libmodelbox-jni.so ${ANDROID_ABI}/jni/${ANDROID_ABI}/
+
+    ls -lh cpack/_CPack_Packages/Android/TGZ/modelbox-1.0.0-Android/usr/local/lib/
+
+    cp /data/devel/thirdparty/deb/${ANDROID_ABI}/usr/lib/{libssl.so.1.1,libcrypto.so.1.1} ${ANDROID_ABI}/libmodelbox-kernel/
+    cp cpack/_CPack_Packages/Android/TGZ/modelbox-1.0.0-Android/usr/local/lib/{libmodelbox.so,libsecurec.so} ${ANDROID_ABI}/libmodelbox-kernel/
+    cp /data/ndk/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/${ARCH}-linux-android/libc++_shared.so ${ANDROID_ABI}/libmodelbox-kernel/
+
+    cp /data/mindspore/mindspore-lite-1.9.0/runtime/lib/libmindspore-lite.so ${ANDROID_ABI}/libmodelbox-drivers/
+    cp /data/devel/thirdparty/deb/${ANDROID_ABI}/usr/lib/{libpython3.10.so.1.0,libcgraph.so,libcdt.so,libz.so} ${ANDROID_ABI}/libmodelbox-drivers/
+    cp /data/devel/thirdparty/deb/${ANDROID_ABI}/usr/lib/{libandroid-support.so,libjpeg.so,liblzma.so,libopenblas.so,libopenjp2.so,libpng16.so,libprotobuf.so,libtiff.so,libwebp.so,libzstd.so,libopencv*.so} ${ANDROID_ABI}/libmodelbox-drivers/
+    cp cpack/_CPack_Packages/Android/TGZ/modelbox-1.0.0-Android/usr/local/lib/{libmbox-engine-mindspore-lite.so,libmodelbox-device-cpu.so,libmodelbox-graphconf-graphviz.so,libmodelbox-unit-cpu-mindspore-lite-inference.so,libmodelbox-unit-cpu-python.so,libmodelbox-virtualdriver-inference.so,libmodelbox-virtualdriver-python.so} ${ANDROID_ABI}/libmodelbox-drivers/
+
+    cd ${ANDROID_ABI}/libmodelbox-drivers
+    find . -name "lib*" | xargs patchelf --set-rpath /data/user/0/com.mbox_ai/files/lib
+    zip -r ../assets/libmodelbox-drivers_${ANDROID_ABI}.zip ./
+    md5sum ../assets/libmodelbox-drivers_${ANDROID_ABI}.zip > ../assets/libmodelbox-drivers_${ANDROID_ABI}.zip.md5
+
+    cd ../libmodelbox-kernel
+    patchelf --set-rpath /data/user/0/com.mbox_ai/files/lib libssl.so.1.1
+    zip -r ../assets/libmodelbox-kernel_${ANDROID_ABI}.zip ./
+    md5sum ../assets/libmodelbox-kernel_${ANDROID_ABI}.zip > ../assets/libmodelbox-kernel_${ANDROID_ABI}.zip.md5
+
+    cd ..
+    cp -r /data/devel/thirdparty/deb/${ANDROID_ABI}/usr/lib/python3.10 .
+    cp -r python3.10/site-packages/numpy-1.23.3-py3.10-linux-${ARCH}.egg/numpy python3.10/site-packages/
+    rm -rf python3.10/site-packages/numpy-1.23.3-py3.10-linux-${ARCH}.egg
+    cp -r /data/devel/thirdparty/deb/${ANDROID_ABI}/data/data/com.termux/files/usr/lib/python3.10/site-packages/cv2 python3.10/site-packages/
+
+    cd python3.10
+    find . -name "*.so" | xargs patchelf --set-rpath /data/user/0/com.mbox_ai/files/lib
+
+    cd ..
+    zip -r assets/python3.10_${ANDROID_ABI}.zip python3.10
+    md5sum assets/python3.10_${ANDROID_ABI}.zip > assets/python3.10_${ANDROID_ABI}.zip.md5
+
+    rm -rf libmodelbox-drivers libmodelbox-kernel python3.10
+
+    ls -lh ${CODE_DIR}/${BUILD_DIR}/${ANDROID_ABI}/*
+}
+
+package(){
+    mkdir ${CODE_DIR}/aar_pkg
+    cat << 'EOF'>${CODE_DIR}/aar_pkg/AndroidManifest.xml
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.modelbox"
+    android:versionCode="1">
+
+    <uses-sdk
+        android:minSdkVersion="28"
+        android:targetSdkVersion="30"/>
+
+</manifest>
+EOF
+
+    cp ${CODE_DIR}/build_a64/src/java/modelbox-1.0.0.jar ${CODE_DIR}/aar_pkg/classes.jar
+    cp -af ${CODE_DIR}/build_x64/x86_64/* ${CODE_DIR}/aar_pkg/
+    cp -af ${CODE_DIR}/build_a64/arm64-v8a/* ${CODE_DIR}/aar_pkg/
+    chown -R root.root ${CODE_DIR}/aar_pkg
+    find ${CODE_DIR}/aar_pkg -type d|xargs chmod -R 755
+    find ${CODE_DIR}/aar_pkg -type f|xargs chmod -R 644
+    cd ${CODE_DIR}/aar_pkg
+    jar -cvf modelbox.aar -C ${CODE_DIR}/aar_pkg .
+}
+
+buildtest(){
+    cd ${CODE_DIR}/build_x64
+    make unit -j8
+    mkdir -p /data/user/test/{dep,drivers}
+    cp lib/{libgmock.so,libgtest.so} /data/user/test/dep/
+    cp cpack/_CPack_Packages/Android/TGZ/modelbox-1.0.0-Android/usr/local/lib/{libmodelbox.so,libsecurec.so,libmanager-client.so} /data/user/test/dep/
+    cp cpack/_CPack_Packages/Android/TGZ/modelbox-1.0.0-Android/usr/local/lib/{libmodelbox-unit-cpu-python.so,libmodelbox-device-cpu.so,libmodelbox-virtualdriver-python.so,libmodelbox-virtualdriver-inference.so,libmodelbox-graphconf-graphviz.so} /data/user/test/drivers/
+    cp test/mock/minimodelbox/libflowmock-lib.so /data/user/test/dep/
+    cp test/mock/drivers/libmock-driver-ctrl-lib.so /data/user/test/dep/
+    cp test/mock/drivers/device_mockdevice/libmodelbox-device-mockdevice.so /data/user/test/dep/
+    cp test/mock/drivers/flowunit_mockflowunit/libmodelbox-unit-mockdevice-mockflowunit.so /data/user/test/dep/
+    cp test/mock/drivers/graph_conf_mockgraphconf/libmodelbox-graphconf-mockgraphconf.so /data/user/test/dep/
+    cp test/unit/unit /data/user/test/bin/
+    cp /data/devel/thirdparty/deb/x86_64/usr/lib/{libssl.so.1.1,libcrypto.so.1.1,libcgraph.so,libcdt.so,libpython3.10.so.1.0} /data/user/test/dep/
+    cp /data/ndk/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/x86_64-linux-android/libc++_shared.so /data/user/test/dep/
+    cp -r ../test/assets /data/user/test/
+    cp -r /data/devel/thirdparty/deb/x86_64/usr/lib/python3.10 /data/user/test/ 
+    cp ../docker/unit.sh /data/user/test/bin/
+    chmod +x /data/user/test/bin/*
+    cd /data/user/
+    tar zcf unittest.tar.gz test
+    cp unittest.tar.gz /data/devel/modelbox
+}
+
+unittest(){
+    apt update
+    apt install -y linux-modules-extra-$(uname -r) waydroid dbus dbus-x11 #weston
+
+    if [ $(ls /usr/share/waydroid-extra/images|grep img|wc -l) -eq 2 ];then
+        waydroid init -f -i /usr/share/waydroid-extra/images
+    else
+        waydroid init
+    fi
+
+    mkdir -p /tmp/runtime/wayland-0
+    chmod 700 /tmp/runtime
+    /etc/init.d/dbus start
+    eval $(dbus-launch --sh-syntax)
+    export $(dbus-launch)
+    #/usr/lib/waydroid/data/scripts/waydroid-net.sh start
+    waydroid container start &
+    waydroid session start &
+
+    mkdir -p ~/.local/share/waydroid/data/user
+    ls -lh /data/devel/modelbox/unittest.tar.gz
+    tar zxf /data/devel/modelbox/unittest.tar.gz -C ~/.local/share/waydroid/data/user/
+    ls -lh ~/.local/share/waydroid/data/user/test
+    waydroid shell ./data/user/test/bin/unit.sh | tee unittest.log
+
+    times=0
+    while [ $(cat unittest.log|grep -c AesEncryptPass) -lt 1 ];do
+        cat /var/lib/waydroid/waydroid.log
+        if [ $(cat /var/lib/waydroid/waydroid.log|grep -c "waiting for session to load") -lt 1 ];then
+            waydroid session start &
+        fi
+        waydroid container restart &
+        waydroid shell ./data/user/test/bin/unit.sh | tee unittest.log
+        times=$[${times}+1]
+        if [ ${times} -gt 3 ]; then
+            echo "waydroid container start failed,pls check"
+            exit 1
+        fi
+    done
+}
+
+main(){
+    if [ "$1" == "x64" ];then
+        compile x64
+    elif [ "$1" == "a64" ];then
+        compile a64
+    elif [ "$1" == "buildtest" ];then
+        buildtest
+    elif [ "$1" == "unittest" ];then
+        unittest
+    else
+        for arch in x64 a64;do
+            compile $arch
+            prepare
+        done
+        package
+    fi
+}
+
+main $@
diff --git a/docker/Dockerfile.android.develop.ubuntu b/docker/Dockerfile.android.develop.ubuntu
new file mode 100644
index 000000000..b48b1d806
--- /dev/null
+++ b/docker/Dockerfile.android.develop.ubuntu
@@ -0,0 +1,89 @@
+FROM ubuntu:22.04
+COPY android-ndk-r25b-linux.zip /root/
+RUN apt update && \
+    apt install -y unzip
+
+RUN mkdir -p /data/ndk && \
+    unzip /root/android-ndk-r25b-linux.zip -d /data/ndk/ >/dev/null && \
+    ls /data/ndk/android-ndk-r25b
+
+
+FROM ubuntu:22.04
+
+ADD cpprestsdk.tar.gz /data/
+ADD deb_files.tar.gz src.tar.gz /data/devel/thirdparty/
+ADD mindspore-lite-*.tar.gz /data/mindspore/
+COPY --from=0 /data/ndk /data/ndk
+
+ENV DEBIAN_FRONTEND=noninteractive
+
+WORKDIR /root
+
+RUN apt update && \
+    apt upgrade -y && \
+    apt install -y --no-install-recommends \
+        vim curl zip unzip git maven make strace iproute2 \
+        pkg-config openjdk-8-jdk ca-certificates patchelf \
+        python3-pip ubuntu-desktop clang-tidy-14 cmake && \
+    ln -sf clang-tidy-14 /usr/bin/clang-tidy && \
+    ln -sf run-clang-tidy-14 /usr/bin/run-clang-tidy && \
+    rm -rf /var/lib/apt/lists/*
+
+RUN mkdir -p /root/.pip && \
+    echo "[global]" > /root/.pip/pip.conf && \
+    echo "index-url = https://pypi.python.org/simple" >>/root/.pip/pip.conf && \
+    echo "trusted-host = pypi.python.org" >>/root/.pip/pip.conf && \
+    echo "timeout = 120" >>/root/.pip/pip.conf && \
+    python3 -m pip install --upgrade pip && \
+    python3 -m pip install --no-cache-dir setuptools pyclip
+
+RUN ln -sf data/data/com.termux/files/usr /data/devel/thirdparty/deb/x86_64/usr && \
+    ln -sf data/data/com.termux/files/usr /data/devel/thirdparty/deb/arm64-v8a/usr && \
+    ln -sf opencv4/opencv2 /data/devel/thirdparty/deb/x86_64/usr/include/opencv2 && \
+    ln -sf opencv4/opencv2 /data/devel/thirdparty/deb/arm64-v8a/usr/include/opencv2 && \
+    cp -af /data/cpprestsdk/arm64-v8a/lib/libcpprest.so /data/devel/thirdparty/deb/arm64-v8a/usr/lib/ && \
+    cp -af /data/cpprestsdk/x86_64/lib/libcpprest.so /data/devel/thirdparty/deb/x86_64/usr/lib/ && \
+    ln -sf /data/cpprestsdk/include/cpprest /data/devel/thirdparty/deb/arm64-v8a/usr/include/cpprest && \
+    ln -sf /data/cpprestsdk/include/cpprest /data/devel/thirdparty/deb/x86_64/usr/include/cpprest && \
+    ln -sf /data/cpprestsdk/include/pplx /data/devel/thirdparty/deb/arm64-v8a/usr/include/pplx && \
+    ln -sf /data/cpprestsdk/include/pplx /data/devel/thirdparty/deb/x86_64/usr/include/pplx && \
+    ln -sf devel/thirdparty/deb/x86_64/data/data /data/data
+
+RUN mkdir -p /data/devel/stub && \
+    cd /data/devel/stub && \
+    touch test.c && \
+    /data/ndk/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android28-clang -fPIC -shared -Wl,--build-id -Wl,-soname,libpthread.so test.c -o libpthread.so.a64 && \
+    /data/ndk/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android28-clang -fPIC -shared -Wl,--build-id -Wl,-soname,librt.so test.c -o librt.so.a64 && \
+    /data/ndk/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android28-clang -fPIC -shared -Wl,--build-id -Wl,-soname,libpthread.so test.c -o libpthread.so.x64 && \
+    /data/ndk/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android28-clang -fPIC -shared -Wl,--build-id -Wl,-soname,librt.so test.c -o librt.so.x64 && \
+    cp libpthread.so.a64 /data/devel/thirdparty/deb/arm64-v8a/usr/lib/libpthread.so && \
+    cp librt.so.a64 /data/devel/thirdparty/deb/arm64-v8a/usr/lib/librt.so && \
+    cp libpthread.so.x64 /data/devel/thirdparty/deb/x86_64/usr/lib/libpthread.so && \
+    cp librt.so.x64 /data/devel/thirdparty/deb/x86_64/usr/lib/librt.so
+
+RUN curl --proto '=https' --tlsv1.2 -Sf https://repo.waydro.id/waydroid.gpg --output /usr/share/keyrings/waydroid.gpg && \
+    echo "deb [signed-by=/usr/share/keyrings/waydroid.gpg] https://repo.waydro.id/ jammy main" | tee /etc/apt/sources.list.d/waydroid.list && \
+    apt update && \
+    apt install -y waydroid=1.3.3 && \
+    rm -rf /var/lib/apt/lists/*
+
+RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; \
+    do [ $i = systemd-tmpfiles-setup.service ] || rm -f $i; done); \
+    rm -f /lib/systemd/system/multi-user.target.wants/*; \
+    rm -f /etc/systemd/system/*.wants/*; \
+    rm -f /lib/systemd/system/local-fs.target.wants/*; \
+    rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
+    rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
+    echo 'export TMOUT=0' >> /etc/bash.bashrc && \
+    echo 'export HISTSIZE=1000' >> /etc/bash.bashrc && \
+    echo 'export $(dbus-launch)' >> /etc/bash.bashrc && \
+    echo 'export RUNLEVEL=3' >> /etc/bash.bashrc && \
+    echo 'export PS1="\[\e[35;1m\][\u@\h \W]$ \[\e[0m\]"' >> ~/.bashrc
+
+ENV NDK_ROOT=/data/ndk/android-ndk-r25b
+ENV USER_ROOT=/data/devel/thirdparty/deb
+ENV LIBRARY_RUNPATH=/data/user/0/com.mbox_ai/files/lib
+ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
+ENV JRE_HOME=${JAVA_HOME}/jre
+ENV CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
+ENV PATH=${JAVA_HOME}/bin:$PATH
diff --git a/docker/prepare_for_dev.sh b/docker/prepare_for_dev.sh
index bf125482a..a9fc0c12a 100755
--- a/docker/prepare_for_dev.sh
+++ b/docker/prepare_for_dev.sh
@@ -46,6 +46,15 @@ if [ "${PLATFROM}" == "x86_64" ];then
         download https://github.com/modelbox-ai/modelbox-binary/releases/download/BinaryArchive/ffmpeg_4.4_dev.tar.gz
         download https://github.com/modelbox-ai/modelbox-binary/releases/download/BinaryArchive/opencv_4.2.0_dev.tar.gz
         download https://github.com/modelbox-ai/modelbox-binary/releases/download/BinaryArchive/obssdk_3.22.3_dev.tar.gz
+    elif [ "$OS_NAME" == "android" ];then
+        download https://dl.google.com/android/repository/android-ndk-r25b-linux.zip
+        download https://github.com/Kitware/CMake/releases/download/v3.25.2/cmake-3.25.2-linux-x86_64.tar.gz
+        download https://github.com/modelbox-ai/modelbox-binary/releases/download/BinaryArchive_android/src.tar.gz
+        download https://github.com/modelbox-ai/modelbox-binary/releases/download/BinaryArchive_android/deb_files.tar.gz
+        download https://github.com/modelbox-ai/modelbox-binary/releases/download/BinaryArchive_android/cpprestsdk.tar.gz
+        download https://ms-release.obs.cn-north-4.myhuaweicloud.com/1.9.0/MindSpore/lite/release/linux/x86_64/mindspore-lite-1.9.0-linux-x64.tar.gz
+        download https://ms-release.obs.cn-north-4.myhuaweicloud.com/1.9.0/MindSpore/lite/release/android/gpu/mindspore-lite-1.9.0-android-aarch64.tar.gz
+        ls -lh .
     fi
     download https://github.com/modelbox-ai/modelbox-binary/releases/download/BinaryArchive/nlohmann-json_3.7.3.tar.gz
     download https://github.com/modelbox-ai/modelbox-binary/releases/download/BinaryArchive/Video_Codec_SDK_9.1.23.tar.gz
diff --git a/docker/unit.sh b/docker/unit.sh
new file mode 100644
index 000000000..1a44b437f
--- /dev/null
+++ b/docker/unit.sh
@@ -0,0 +1,8 @@
+#!/system/bin/sh
+cd /data/user/test/bin
+LD_LIBRARY_PATH=../dep:../drivers \
+LD_PRELOAD=libgmock.so:libgtest.so:libmodelbox.so:libsecurec.so \
+HOME=/data/user/test \
+PYTHONHOME=/data/user/test/python3.10 \
+PYTHONPATH=/data/user/test/python3.10:/data/user/test/python3.10/lib-dynload:/data/user/test/python3.10/site-packages \
+./unit --gtest_filter="-CryptoTest.AesEncryptPass:PopenTest.*"
diff --git a/setup_android_ndk.sh b/setup_android_ndk.sh
new file mode 100644
index 000000000..490d6acb0
--- /dev/null
+++ b/setup_android_ndk.sh
@@ -0,0 +1,81 @@
+#!/bin/bash
+CODE_DIR=$(cd $(dirname "${BASH_SOURCE[0]}");pwd)
+export NDK_ROOT=/data/ndk/android-ndk-r25b
+export USER_ROOT=/data/devel/thirdparty/deb
+export LIBRARY_RUNPATH=/data/user/0/com.mbox_ai/files/lib
+export MINDSPORE_LITE_PATH=/data/mindspore/mindspore-lite-1.9.0
+export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
+export JRE_HOME=${JAVA_HOME}/jre
+export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
+export PATH=${JAVA_HOME}/bin:$PATH
+export DEBIAN_FRONTEND=noninteractive
+export $(dbus-launch)
+export RUNLEVEL=3
+
+apt update
+apt install -y --no-install-recommends \
+    vim curl zip unzip git maven make strace iproute2 \
+    pkg-config openjdk-8-jdk ca-certificates patchelf \
+    python3-pip ubuntu-desktop clang-tidy-14 cmake
+ln -sf clang-tidy-14 /usr/bin/clang-tidy
+ln -sf run-clang-tidy-14 /usr/bin/run-clang-tidy
+
+curl --proto '=https' --tlsv1.2 -Sf https://repo.waydro.id/waydroid.gpg --output /usr/share/keyrings/waydroid.gpg
+echo "deb [signed-by=/usr/share/keyrings/waydroid.gpg] https://repo.waydro.id/ jammy main" | tee /etc/apt/sources.list.d/waydroid.list
+apt update
+apt install -y waydroid=1.3.3
+
+mkdir -p ~/.pip
+echo "[global]" > ~/.pip/pip.conf
+echo "index-url = https://pypi.python.org/simple" >> ~/.pip/pip.conf
+echo "trusted-host = pypi.python.org" >> ~/.pip/pip.conf
+echo "timeout = 120" >> ~/.pip/pip.conf
+python3 -m pip install --upgrade pip
+python3 -m pip install --no-cache-dir setuptools pyclip
+
+sed -i '3s/OS_NAME=.*/OS_NAME=android/' ${CODE_DIR}/docker/prepare_for_dev.sh
+sed -i '/ls -lh release/d' ${CODE_DIR}/docker/prepare_for_dev.sh
+bash -x ${CODE_DIR}/docker/prepare_for_dev.sh
+ls -lh ${CODE_DIR}
+
+mkdir -p /data/ndk
+unzip -o android-ndk-r25b-linux.zip -d /data/ndk
+ls -lh /data/ndk
+
+tar zxf cpprestsdk.tar.gz -C /data
+ls -lh /data/cpprestsdk/{x86_64,arm64-v8a}/lib/*
+
+mkdir -p /data/mindspore
+tar zxf mindspore-lite-1.9.0-linux-x64.tar.gz -C /data/mindspore
+tar zxf mindspore-lite-1.9.0-android-aarch64.tar.gz -C /data/mindspore
+ls -lh /data/mindspore
+
+mkdir -p /data/devel/thirdparty
+tar zxf src.tar.gz -C /data/devel/thirdparty
+tar zxf deb_files.tar.gz -C /data/devel/thirdparty
+ls -lh /data/devel/thirdparty
+
+ln -sf data/data/com.termux/files/usr /data/devel/thirdparty/deb/x86_64/usr
+ln -sf data/data/com.termux/files/usr /data/devel/thirdparty/deb/arm64-v8a/usr
+ln -sf opencv4/opencv2 /data/devel/thirdparty/deb/x86_64/usr/include/opencv2
+ln -sf opencv4/opencv2 /data/devel/thirdparty/deb/arm64-v8a/usr/include/opencv2
+cp -af /data/cpprestsdk/arm64-v8a/lib/libcpprest.so /data/devel/thirdparty/deb/arm64-v8a/usr/lib/
+cp -af /data/cpprestsdk/x86_64/lib/libcpprest.so /data/devel/thirdparty/deb/x86_64/usr/lib/
+ln -sf /data/cpprestsdk/include/cpprest /data/devel/thirdparty/deb/arm64-v8a/usr/include/cpprest
+ln -sf /data/cpprestsdk/include/cpprest /data/devel/thirdparty/deb/x86_64/usr/include/cpprest
+ln -sf /data/cpprestsdk/include/pplx /data/devel/thirdparty/deb/arm64-v8a/usr/include/pplx
+ln -sf /data/cpprestsdk/include/pplx /data/devel/thirdparty/deb/x86_64/usr/include/pplx
+
+mkdir -p /data/devel/stub
+cd /data/devel/stub
+touch test.c
+/data/ndk/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android28-clang -fPIC -shared -Wl,--build-id -Wl,-soname,libpthread.so test.c -o libpthread.so.a64
+/data/ndk/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android28-clang -fPIC -shared -Wl,--build-id -Wl,-soname,librt.so test.c -o librt.so.a64
+/data/ndk/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android28-clang -fPIC -shared -Wl,--build-id -Wl,-soname,libpthread.so test.c -o libpthread.so.x64
+/data/ndk/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android28-clang -fPIC -shared -Wl,--build-id -Wl,-soname,librt.so test.c -o librt.so.x64
+cp libpthread.so.a64 /data/devel/thirdparty/deb/arm64-v8a/usr/lib/libpthread.so
+cp librt.so.a64 /data/devel/thirdparty/deb/arm64-v8a/usr/lib/librt.so
+cp libpthread.so.x64 /data/devel/thirdparty/deb/x86_64/usr/lib/libpthread.so
+cp librt.so.x64 /data/devel/thirdparty/deb/x86_64/usr/lib/librt.so
+
+echo "***android ndk build setup completed***"