Requirements:

Download the Android NDK:

Android NDK r21e (Linux x86_64)

Install dependencies for cross-compiling:

sudo apt update
sudo apt install -y \
    autoconf \
    automake \
    bison \
    bc \
    build-essential \
    clang \
    cpio \
    cmake \
    cmake-format \
    curl \
    debhelper \
    debhelper-compat \
    device-tree-compiler \
    dpkg-dev \
    dwarves \
    file \
    fakeroot \
    flex \
    g++ \
    g++-multilib \
    git \
    gawk \
    gettext \
    libdb-dev \
    libelf-dev \
    libffi-dev \
    libgmp-dev \
    liblzma-dev \
    libmpc-dev \
    libmpfr-dev \
    libncurses-dev \
    libncurses5-dev \
    libssl-dev \
    libtool \
    make \
    ninja-build \
    patch \
    pkg-config \
    python3 \
    python3-pip \
    python3-setuptools \
    rsync \
    unzip \
    wget \
    xsltproc \
    zip \
    zlib1g-dev

Patch File:

## lock-obj-pub.aarch64-unknown-linux-android.h
## File created by gen-posix-lock-obj - DO NOT EDIT
## To be included by mkheader into gpg-error.h

typedef struct
{
  long _vers;
  union {
    volatile char _priv[40];
    long _x_align;
    long *_xp_align;
  } u;
} gpgrt_lock_t;

#define GPGRT_LOCK_INITIALIZER {1,0}
##
## Local Variables:
## mode: c
## buffer-read-only: t
## End:
##

#!/bin/bash
# aMiscreant

export NDK=/root/android-ndk-r21e
export API=29

export CC="$NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android29-clang"
export CXX="$NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android29-clang++"
export AR="$NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar"
export RANLIB="$NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib"
export LD="$NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/ld.lld"
export STRIP="$NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip"


# Compile Zlib
wget https://zlib.net/zlib-1.3.1.tar.gz
tar -xf zlib-1.3.1.tar.gz
rm -rf zlib-1.3.1.tar.gz

cd zlib-1.3.1

./configure \
  --static \
  --prefix=/root/static_prefix

make -j$(nproc)
make install
cd ..

# Compile 
git clone https://github.com/PCRE2Project/pcre2.git
cd pcre2
git submodule update --init

./autogen.sh

./configure \
  --host=aarch64-linux-android \
  --build=x86_64-pc-linux-gnu \
  --disable-shared \
  --enable-static \
  --enable-fuzz-support \
  --prefix=/root/static_prefix
  
make -j$(nproc)
make install

cd ..

# Compile hwlock
git clone  https://github.com/open-mpi/hwloc.git
cd hwloc

./autogen.sh

./configure \
  --host=aarch64-linux-android \
  --build=x86_64-pc-linux-gnu \
  --disable-shared \
  --enable-static \
  --prefix=/root/static_prefix
  
# Compile libpcap
git clone https://github.com/the-tcpdump-group/libpcap.git 
cd libpcap

./autogen.sh

./configure \
  --host=aarch64-linux-android \
  --build=x86_64-pc-linux-gnu \
  --disable-shared \
  CC="$CC" AR="$AR" RANLIB="$RANLIB" STRIP="$STRIP" \
  CFLAGS="-D__ANDROID_API__=$API" \
  --prefix=/root/static_prefix
  
make -j$(nproc)
make install

cd ..

# Compile tcpdump
git clone https://github.com/the-tcpdump-group/tcpdump.git 
cd tcpdump

export CFLAGS="-fPIC -I/root/static_prefix/include"
export LDFLAGS="-L/root/static_prefix/lib"
export PKG_CONFIG_LIBDIR=/root/static_prefix/lib/pkgconfig
export PKG_CONFIG_PATH=/root/static_prefix/lib/pkgconfig
./autogen.sh

./configure \
  --host=aarch64-linux-android \
  --build=x86_64-pc-linux-gnu \
  CC="$CC" AR="$AR" RANLIB="$RANLIB" STRIP="$STRIP" \
  CFLAGS="-D__ANDROID_API__=$API" \
  PKG_CONFIG_PATH=/root/static_prefix/lib/pkgconfig \
  --prefix=/root/static_prefix
  
make -j$(nproc)
make install

cd ..

# Compile Libffi
git clone https://github.com/libffi/libffi.git
cd libffi

./autogen.sh

# Remove docs..
#rm -rf doc
./configure \
  --host=aarch64-linux-android \
  --build=x86_64-pc-linux-gnu \
  --disable-shared \
  --enable-static \
  --disable-docs \
  CC="$CC" AR="$AR" RANLIB="$RANLIB" STRIP="$STRIP" \
  --prefix=/root/static_prefix

make -j$(nproc)
make install
cd ..

# Compile aircrack
git clone https://github.com/aircrack-ng/aircrack-ng.git

export CFLAGS="-fPIC -I/root/static_prefix/include"
export LDFLAGS="-L/root/static_prefix/lib"
export LIBS="-lssl -lcrypto -lpcap -lz -lffi -lpcap"
export PKG_CONFIG_LIBDIR=/root/static_prefix/lib/pkgconfig
export PKG_CONFIG_PATH=/root/static_prefix/lib/pkgconfig

cd aircrack-ng
autoreconf -i

./configure \
  --host=aarch64-linux-android \
  --disable-shared \
  --enable-static \
  --without-libnl \
  --without-sqlite3 \
  --enable-hwloc \
  --with-pcre2=/root/static_prefix \
  --with-libpcap-lib=/root/static_prefix \
  --with-pcap=/root/static_prefix \
  --with-openssl=/root/static_prefix \
  --with-zlib=/root/static_prefix \
  --prefix=/root/static_prefix \
  CFLAGS="-I/root/static_prefix/include -O2 -fPIE -fPIC" \
  PKG_CONFIG_PATH=/root/static_prefix/lib/pkgconfig \
  LDFLAGS="-L/root/static_prefix/lib -pie"


make -j$(nproc)
make install

cd ..