使用环境:ubuntu22.04 ndk:r26d
一、安卓ndk下载
首先从官网NDK Downloads | Android NDK | Android Developers (google.cn)下载对应的ndk。这里我下载的是
Linux 64-bit (x86) | android-ndk-r26d-linux.zip |
对下载的文件解压:
unzip android-ndk-r26d-linux.zip
对ndk进行配置:
sudo gedit ~/.bashrc
export NDK=/home/liao/android-ndk-r26d # 替换成自己的路径
export PATH=${PATH}:$NDK
# 然后保存文件运行
source ~/.bashrc
安装并配置完成Android-NDK之后,需要进行安装验证,以确认正确安装并配置:
ndk-build
出现以下结果说明安装成功:
二、Python安卓交叉编译
参考了这位大佬的博客Python3.9交叉编译到Android平台 | AcmeZone成功编译了python3.8.2。首先下载python源码,我这里下载的是3.8.2版本,然后解压。
解压后进入到根目录,依次输入指令:
export NDK=/home/lgz/android-ndk-r26d # NDK根目录绝对路径
export TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64 # 交叉编译链路径
export TARGET=aarch64-linux-android # 交叉编译目标
export API=24 # 最小目标SDK版本配置(24 即为 Android 7.0)
export AR=$TOOLCHAIN/bin/llvm-ar
export CC=$TOOLCHAIN/bin/$TARGET$API-clang
export AS=$CC
export CXX=$TOOLCHAIN/bin/$TARGET$API-clang++
export LD=$TOOLCHAIN/bin/ld
export RANLIB=$TOOLCHAIN/bin/llvm-ranlib
export STRIP=$TOOLCHAIN/bin/llvm-strip
export READELF=$TOOLCHAIN/bin/readelf
./configure --host=$TARGET --build=aarch64 --disable-ipv6 ac_cv_file__dev_ptmx=no ac_cv_file__dev_ptc=no --prefix=/home/lgz/android/android-python/Python-3.8.2/install
随后编译:
make -j8 && make install -j8
我们可以看到python3.8.2目录多了一个install文件夹,进去后可以看到四个文件夹,分别是:bin,include,lib,share,然后全部打包到安卓平台测试。
cd bin
./python3.8