Android 平台的Python——编译Python解释器

Android 平台的Python——基础篇(一)
Android 平台的Python——JNI方案(二)
Android 平台的Python——CLE方案实现(三)
Android 平台的Python——第三方库移植
Android 平台的Python——编译Python解释器

要想将Python解释器移植到Android平台,首先要做的就是将Python源码用NDK工具交叉编译为Android平台的二进制库。目前官方是没有提供对Android平台的支持的,但新的版本已经在考虑对Android提供支持,参考文档 API 24 is the first version where the adb shell is run on the emulator as a shell user instead of the root user previously, and the first version that supports arm64.

Android不是常见的Linux系统,只有Linux内核是共享的,其他一切都是不同的,它使用的C标准库是Bionic,与glibc有很大差异,因此直接使用NDK编译源码会报错。

上一篇博客已经谈到了关于Python第三方库移植的问题,但是 CrytaxNDK中的Python解释器存在一些问题,未支持SSL,导致无法访问HTTPS,这次我们先使用CrytaxNDK重新编译Python

在Linux平台交叉编译Python

首先需要搭建一个Linux环境,推荐使用Ubuntu,这里关于虚拟机安装Ubuntu就不说了

步骤一

设置环境。下载CrytaxNDK的Linux版本,并解压到某个目录。需要说明一下,这里可以不用将CrytaxNDK加入到环境变量,也可以加入,方便以后开发使用
输入命令,配置环境变量
sudo vim /etc/profile
将以下内容添加到文件末尾,其中NDK_DIR指向解压后的CrytaxNDK根目录,请替换成自己的实际目录

export NDK_DIR=/home/CrystaX/crystax-ndk-10.3.2
export PATH=$PATH:$NDK_DIR
export NDK_MODULE_PATH=$NDK_DIR/sources

完成后,输入命令source /etc/profile更新环境变量,使之生效。

步骤二

下载源码。到官网下载Python3.5的源码,建议下载一个稳定版。将下载之后的源码解压到系统的某个目录,并设置一个全局环境变量,指向Python源码根目录。

export PYTHON_DIR=/home/Python-3.5.1
步骤三

下载OpenSSL源码。由于CrytaxNDK没有带openssl,所以我们必须手动添加。这里我们可以取个巧,直接下载别人编译好的so,懒得去搞环境自己编译。下载地址 这个里面倒是提供了二进制so,但是没提供头文件,所以还是得下载OpenSSL源码
按照下图路径,放入CrytaxNDK根目录下面的sources/openssl/1.0.1p/路径下,头文件放入include中,so放入libs中的对应的CPU架构目录下
在这里插入图片描述

步骤四

执行编译。进入到CrytaxNDK根目录下面的build/tools/目录下,执行命令

./build-target-python.sh --ndk_dir=$NDK_DIR --abis=armeabi -j5 --verbose $PYTHON_DIR

实际上CrytaxNDK已经提供了一个简单的编译脚本,可以输入./build-target-python.sh --help查看一下选项

Valid options (defaults are in brackets):
--help                   Print this help.
--verbose                Enable verbose mode.
--dryrun                 Set to dryrun mode.
--package-dir=<path>     Put prebuilt tarballs into <path>
--ndk-dir=<path>         Specify NDK root path for the buil
  • 6
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程之路从0到1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值