Buildozer构架安卓应用
目录
1、虚拟机相关配置:
1.1工具准备:
如果再使用过程遇到错误:
错误提示:VERR-SUPDRV_HARDENING_EVIL_HANDLE(rc = -3738)
解决办法 :用版本更低的virtualBox:VirtualBox-4.3.12
1.2虚拟机系统准备:
1.2.1 VBox虚拟机:
1、网络错误:不能上网
解决:连接网线,重启。
2、错误:进入虚拟机后进行apt-getupdate失败,提示:
The repository 'http://mirrors.aliyun.com/ubuntu zesty Release' does not have a Release file或者:Not found [IP:XXXXXXXXXXXX]
原因:跟镜像的版本关系,建议选择长期支持(LTS)版本的镜像。
解决办法:cd 至/etc/apt/sources.list,执行:sudo vi sources.list 用下面的提供的镜 像源列表替换原来的sources.list。
或者执行:sudo chmod 777 sources.list 修改 sources.list文件权限,打开文件修改并 保存。
3、开机问题:开机执行5min读条。
/etc/systemd/system/network-online.target.wants/networking.service
执行:sudo vi networking.service
将文件中最后一行的:TimeoutStartSec=5min 更改为:TimeoutStartSec=2sec
或者给文件权限直接进行编辑:sudo chmod 777 networking.service
1.2.2 VM虚拟机设置共享文件夹:
设置桌面快捷访问:sudo ln -sT /mnt/hgfs/XXX /home/XXX/Desktop/XXX
(sudo ln -sT [文件夹路径] [桌面文件夹路径])
1.2.3设置虚拟机外部全局代理:
1、新建代理:
2、设置代理:
注意:
代理类型如果使用的是ss代理访问境外服务器,选择:SOCKS5
这里的代理IP为:127.0.0.1(本机回送地址) 端口设为:1080
3、设置代理规则:
这里在programs一栏,选择对应虚拟机负责网络连接的程序:
VirtualBox为:VirtualBox安装目录oraclevm\VirtualBox.exe
VMvare为:C:\Windows\SysWOW64\vmnat.exe
同时开启proxycap与ss便可以实现虚拟机内代理上网:
1.2.3设置虚拟机快照:
1、在VBox中称为备份功能:记录虚拟机不同时刻状态,方便返回之前状态。
2、在VMware中的快照功能,具有同样的功能。
1.2.4虚拟机使用的常见错误:
1、错误:Could not get lock /var/lib/dpkg/lock:
原因:出现这个问题可能是有另外一个程序正在运行,导致资源被锁不可用。 而导致资源被锁的原因可能是上次运行安装或更新时没有正常完成,进而出现 此状况
解决:重启或者执行:sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
原因;网络问题,重新操作即可
解决办法:切换更好的网络环境反复尝试/更换时间段尝试虚拟外下载/手动添 加至指定路径。
原因:操作权限不够
解决:执行语句前加:sudo
2、buildozer 0.39安装
2.1切换默认Python 版本:python3
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.5 200
再执行:sudo update-alternatives --config python
就可以按照提示选择默认Python版本。同理,如果系统想安装多个python3的版 本,也可以使用类似的操作。
2.2 buildozer 0.39安装
sudo pip install --upgrade buildozer
3、用Xubuntu18.04建立打包环境的过程以及错误
说明:之前在用kivy官方镜像:xubuntu17.04建立打包过程中,遇到了一些不同的问题, 我以为将其整合到其中了,下面包括两个版本的问题记录。
3.1:安装一些依赖包:
新系统缺少很多依赖包,需要手动提前安装,避免后面反复操作:
sudo apt-get install zlib1g-dev
sudo apt-get install git
sudo apt-get install cython
sudo apt-get install openjdk-8-jdk
sudo apt-get install zlib1g-dev
sudo apt-get install git
sudo apt-get install cython
sudo apt-get install openjdk-8-jdk
3.2:构建环境前的准备工作
3.3构建环境
主要分为两个步骤:下载组件 与 建立(解压/编译/复制)环境,在3.2所说的目 下面执行指令:buildozer android -v debug
3.3.1下载组件:
3.3.1.1:python-for-android
1、Cloning into ‘python-for-android’(必须连接代理进行)
错误:failed to read python-for-android setup.py(找不到相关文件)
原因:因为网络原因,文件下载不完整
解决办法:删除工作目录下面/.buildozer/android/platform的/python-for-android文件夹, 在良好的的网络环境下面重新执行:buildozer android -v debug
3.3.1.2:安卓工具
1、下载并配置:ant/android sdk/android ndk(关闭代理下载速度更快)
2、Installing/updating SDK platform tools if necessary
错误:sdkmanger is not installed
原因:因为网络原因,文件下载不完整
解决办法:删除工作目录下面/.buildozer/android/platform下android-sdk的文件夹, 在良好的的网络环境下面重新执行:buildozer android -v debug
3、downloading build-tools
4、downloading platform api target
主要包括:python、hostpython3、libffi、openssl、pyjnius、sdl2、sdl2_image、sdl2_mixer、sdl_ttf、setuptools、six、sqlites,下载至:/.bildozer/android/platform/build/packages
3.3.2: 建立(解压/编译/复制)环境
错误:sh.CommandNotFound:make
原因:缺少make工具
解决:安装make工具:sudo apt install make
错误: autoconf:not found
原因:缺少相应工具
解决: 1、sudo apt-get install autoconf / 2、sudo apt-get install automake /3、sudo apt-get install libtool
如果在building python3过程中出错,如果是有关.so文件的错误,可以尝试终止过程,执行Buildozer android clean,然后再执行Buildozer android debug
错误:XXXX Cython.Build.Cythonize(ModuleNotFound) 原因未知
解决:python3 pip install Cython(记得过程开始时就已经通过apt-get安装了cython, 但这里提示的是首字母大写的Cython,所以通过pip安装Cython,但具体有什么不同, 暂时还没有深究。)
至此,building的过程已经结束,后面基本不会出现什么大问题。
6、生成.apk文件
3.4添加packages--opencv
3.4.1安装cmake
tar xf cmake-3.11.0.tar.Z
cd cmake-3.11.0.tar.Z
Sudo ./configure
Sudo make
sudo make install
3.4.2修改requirements
3.4.3下载并生成 opencv
错误:1 out of 1 hunk FAILED -- saving rejects to file modules/python/CMakeLists.txt.rej
分析:这个问题发生在给opencv打补丁的过程中,可能是opencv与cmake版本兼容问 题。
解决:由于之前在另外一个系统中有用cmake3.5运行成功的过程,于是将cmake3.5覆盖安装,执行Buildozer android clean,再重新执行Buildozer android debug,查看日志,上述过程中的位置#3正常运行,没有发生打补丁的错误。但是之后提示camke3.5版本太低仍报错。此时再覆盖安装cmake3.11,便没有再报错。相当于cmake3.5帮助完成了打补丁的过程。
3.4.4成功生成Apk文件,opencv运行正常
cube_rgb = cv2.imread('/sdcard/test.jpg')
cube_gray = cv2.cvtColor(cube_rgb, cv2.COLOR_BGR2GRAY)
cv2.imwrite('/sdcard/res.jpg',cube_gray)
3.5其他错误
1、错误:由java引发的错误:java.lang.NoClassDefFoundError
可能原因:java版本问题,建议使用java 8, Java 8是目前的长期支持版本
解决:sudo apt-get install openjdk-8-jdk(只需要装openjdk-8-jdk,不要装jre等,jdk已 经包含了jre以及java编译器)
2、建立 python3的过程中错误:No module named ‘_ctypes’
原因: 缺少相关模块。
解决:Sudo apt install libffi-dev
如果依旧解决不了尝试执行下面过程:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get install build-essential python-dev python-setuptools python-pip python-smbus
sudo apt-get install build-essential libncursesw5-dev libgdbm-dev libc6-dev
sudo apt-get install zlib1g-dev libsqlite3-dev tk-dev
sudo apt-get install libssl-dev openssl
3、错误:安装cmake3.7.0出现:
原因:
解决:2、更换cmake版本至cmake3.11.0
4、问题:长时间卡在这个界面不动
可以尝试键入‘y’回车,继续执行。
5、错误:python文件语法错误:one of your Python files has syntax error。
原因:一般出现这个问题,要看min.py的语法是否与buildozer下对应的python版 本 是否一致。
解决:检查并更正main.py中是否有语法错误。
解决:
sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install libstdc++6
sudo apt-get install aidl
可能是automake,autoconf,libtool版本不匹配构成的,一直没有解决。
4、TIPS
Alpha(α):预览版,或者叫内部测试版;一般不向外部发布,会有很多Bug;一般只有 测试人员使用。
Beta(β):测试版,或者叫公开测试版;这个阶段的版本会一直加入新的功能;在 Alpha 版之后推出。
RC(Release Candidate):最终测试版本;可能成为最终产品的候选版本,如果未出现问 题则可发布成为正式版本。多数开源软件会推出两个RC版本,最后的 RC2 则成为正 式版本。
虚拟机镜像:VM/VBOX:https://www.osboxes.org/virtualbox-images/
各平台、各个版本cmake的安装:https://cmake.org/files/
buildozer的官方使用文档:https://buildozer.readthedocs.io/en/latest/
xubuntu18.04官方下载:
Buildozer 官方使用文档:https://buildozer.readthedocs.io/en/latest/
附录:
libffi:
外部函数接口 LibFFI。“FFI” 的全名是 Foreign Function Interface,通常指的是允许以一种语言编写的代码调用另一种语言的代码。而 “Libffi” 库只提供了最底层的、与架构相关的、完整的”FFI”,因此在它之上必须有一层来负责管理两种语言之间参数的格式转换。
高级语言编译器产生代码时都会依据一系列的规则,这些规则十分必要,特别是对独立编译来说。其中之一是“调用约定” (Calling Convention),它包含了编译器关于函数入口处的函数参数、函数返回值的一系列假设。它有时也被称作“ABI”(Application Binary Interface)。调用约定(Calling Conventions)定义了程序中调用函数的方式,它决定了在函数调用的时候数据(比如说参数)在堆栈中的组织方式。
目前有许多项目都使用了 libff ,包括 ruby,cpython, openjdk,dalvik vm 等等。例如在 Ruby 中,利用 rubyffi (包装了 libffi )可以如此动态地调用一个 dll。
内容来自:https://www.cnblogs.com/findumars/p/4882620.html
Openssl:
OpenSSL是为网络通信提供安全及数据完整性的一种安全协议。OpenSSL整个软件包大概可以分成三个主要的功能部分:密码算法库、SSL协议库以及应用程序。OpenSSL的目录结构自然也是围绕这三个功能部分进行规划的。
作为一个基于密码学的安全开发包,OpenSSL提供的功能相当强大和全面,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。
辅助功能:BIO机制是OpenSSL提供的一种高层IO接口,该接口封装了几乎所有类型的IO接口,如内存访问、文件访问以及Socket等。这使得代码的重用性大幅度提高,OpenSSL提供API的复杂性也降低了很多。OpenSSL对于随机数的生成和管理也提供了一整套的解决方法和支持API函数。随机数的好坏是决定一个密钥是否安全的重要前提。
OpenSSL还提供了其它的一些辅助功能,如从口令生成密钥的API,证书签发和管理中的配置文件机制等等。
内容来自:
https://blog.csdn.net/m0_38080126/article/details/77609226
Pyjnius
Pyjnius是一个用于访问Java类的Python库。
内容来自:https://www.jianshu.com/p/5c7c3e514e37
sdl2
Sdl2它是一个(相对)易于使用的库,可以在不依赖于特定于操作的功能的情况下添加多媒体功能。SDL提供的内容:窗口管理、软件(CPU)和硬件(GPU)渲染2D图形、输入事件系统、时间管理、音频处理、文件IO和加载、穿线、用于3D图形的OpenGL API。
sdl2_image
由于在使用SDL2开发的过程,需要加载png图片,而SDL2本身不提供加载png图片的功能实现。所以需要在引入SDL2_image库。
sdl2_mixer :播放音乐库
sdl_ttfL:显示文字,渲染文字
Setuptools:
Python包管理工具,setuptools是Python distutils增强版的集合,它可以帮助我们更简单的创建和分发Python包,尤其是拥有依赖关系的。用户在使用setuptools创建的包时,并不需要已安装setuptools,只要一个启动模块即可。支持上传到PyPI。
内容来自:https://www.jianshu.com/p/ea9973091fdf
Six
Python 2 和 Python 3 版本的分裂给 Python 开发者们带来了很大的烦恼,为了使代码同时兼容两个版本,往往要增加大量的代码。 于是 Six 出现了。正如它的介绍所说,它是一个专门用来兼容 Python 2 和 Python 3 的库。它解决了诸如 urllib 的部分方法不兼容, str 和 bytes 类型不兼容等问题。
sqlites
SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月。 至2015年已经有15个年头,SQLite也迎来了一个版本 SQLite 3已经发布。
内容来自:https://baike.baidu.com/item/SQLite/375020?fr=aladdin
.so文件
Android中的so文件是动态链接库,是二进制文件,即ELF文件。多用于NDK开发中。
其实就是shared object的意思,.so文件的理解
内容来自:https://blog.csdn.net/zplxl99/article/details/80376298
Cython
准确说Cython是单独的一门语言,专门用来写在Python里面import用的扩展库。实际上Cython的语法基本上跟Python一致,而 Cython有专门的“编译器”先将 Cython代码转变成C(自动加入了一大堆的C-Python API),然后使用C编译器编译出最终的Python可调用的模块。
C语言是编译性语言,而Python则是解释性语言,简而言之,就是Python运行是逐行运行,不需要实现编译,而C需要在运行前编译。那么,可想而知,如果运行前,需要事先编译,那么其实有一种“上帝视角”的感觉,自然可以做很多优化,让代码运行的更快。而Cython的出现就是这个目的,让Python也可以被编译,然后执行。Cython是一种部分包含和改变C语言,以及完全包含pyhton语言的一个语言集合。Cython是用Python实现的一种语言,可以用来写Python扩展,用它写出来的库都可以通过import来载入,性能上比Python的快。Cython里可以载入Python扩展(比如 import math),也可以载入C的库的头文件(比如:cdef extern from “math.h”),另外也可以用它来写Python代码。将关键部分重写成C扩展模块。Cython中的强大之处在于可以把Python和C结合起来,它使得看起来像Python语言的Cython代码有着和C相似的运行速度。
内容来自:https://blog.csdn.net/mou_it/article/details/81876879
Cpython
CPython是特指C语言实现的Python,就是原汁原味的Python。
之所以使用CPython这个词,是因为Python还有一些其它的实现,比如Jython,就是Java版的Python,还有烧脑的PyPy,使用Python再把Python实现了一遍。
JDK
Buildozer构架安卓应用
目录
1、虚拟机相关配置:
1.1工具准备:
如果再使用过程遇到错误:
错误提示:VERR-SUPDRV_HARDENING_EVIL_HANDLE(rc = -3738)
解决办法 :用版本更低的virtualBox:VirtualBox-4.3.12
1.2虚拟机系统准备:
1.2.1 VBox虚拟机:
1、网络错误:不能上网
解决:连接网线,重启。
2、错误:进入虚拟机后进行apt-getupdate失败,提示:
The repository 'http://mirrors.aliyun.com/ubuntu zesty Release' does not have a Release file或者:Not found [IP:XXXXXXXXXXXX]
原因:跟镜像的版本关系,建议选择长期支持(LTS)版本的镜像。
解决办法:cd 至/etc/apt/sources.list,执行:sudo vi sources.list 用下面的提供的镜 像源列表替换原来的sources.list。
或者执行:sudo chmod 777 sources.list 修改 sources.list文件权限,打开文件修改并 保存。
3、开机问题:开机执行5min读条。
/etc/systemd/system/network-online.target.wants/networking.service
执行:sudo vi networking.service
将文件中最后一行的:TimeoutStartSec=5min 更改为:TimeoutStartSec=2sec
或者给文件权限直接进行编辑:sudo chmod 777 networking.service
1.2.2 VM虚拟机设置共享文件夹:
设置桌面快捷访问:sudo ln -sT /mnt/hgfs/XXX /home/XXX/Desktop/XXX
(sudo ln -sT [文件夹路径] [桌面文件夹路径])
1.2.3设置虚拟机外部全局代理:
1、新建代理:
2、设置代理:
注意:
代理类型如果使用的是ss代理访问境外服务器,选择:SOCKS5
这里的代理IP为:127.0.0.1(本机回送地址) 端口设为:1080
3、设置代理规则:
这里在programs一栏,选择对应虚拟机负责网络连接的程序:
VirtualBox为:VirtualBox安装目录oraclevm\VirtualBox.exe
VMvare为:C:\Windows\SysWOW64\vmnat.exe
同时开启proxycap与ss便可以实现虚拟机内代理上网:
1.2.3设置虚拟机快照:
1、在VBox中称为备份功能:记录虚拟机不同时刻状态,方便返回之前状态。
2、在VMware中的快照功能,具有同样的功能。
1.2.4虚拟机使用的常见错误:
1、错误:Could not get lock /var/lib/dpkg/lock:
原因:出现这个问题可能是有另外一个程序正在运行,导致资源被锁不可用。 而导致资源被锁的原因可能是上次运行安装或更新时没有正常完成,进而出现 此状况
解决:重启或者执行:sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
原因;网络问题,重新操作即可
解决办法:切换更好的网络环境反复尝试/更换时间段尝试虚拟外下载/手动添 加至指定路径。
原因:操作权限不够
解决:执行语句前加:sudo
2、buildozer 0.39安装
2.1切换默认Python 版本:python3
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.5 200
再执行:sudo update-alternatives --config python
就可以按照提示选择默认Python版本。同理,如果系统想安装多个python3的版 本,也可以使用类似的操作。
2.2 buildozer 0.39安装
sudo pip install --upgrade buildozer
3、用Xubuntu18.04建立打包环境的过程以及错误
说明:之前在用kivy官方镜像:xubuntu17.04建立打包过程中,遇到了一些不同的问题, 我以为将其整合到其中了,下面包括两个版本的问题记录。
3.1:安装一些依赖包:
新系统缺少很多依赖包,需要手动提前安装,避免后面反复操作:
sudo apt-get install zlib1g-dev
sudo apt-get install git
sudo apt-get install cython
sudo apt-get install openjdk-8-jdk
sudo apt-get install zlib1g-dev
sudo apt-get install git
sudo apt-get install cython
sudo apt-get install openjdk-8-jdk
3.2:构建环境前的准备工作
3.3构建环境
主要分为两个步骤:下载组件 与 建立(解压/编译/复制)环境,在3.2所说的目 下面执行指令:buildozer android -v debug
3.3.1下载组件:
3.3.1.1:python-for-android
1、Cloning into ‘python-for-android’(必须连接代理进行)
错误:failed to read python-for-android setup.py(找不到相关文件)
原因:因为网络原因,文件下载不完整
解决办法:删除工作目录下面/.buildozer/android/platform的/python-for-android文件夹, 在良好的的网络环境下面重新执行:buildozer android -v debug
3.3.1.2:安卓工具
1、下载并配置:ant/android sdk/android ndk(关闭代理下载速度更快)
2、Installing/updating SDK platform tools if necessary
错误:sdkmanger is not installed
原因:因为网络原因,文件下载不完整
解决办法:删除工作目录下面/.buildozer/android/platform下android-sdk的文件夹, 在良好的的网络环境下面重新执行:buildozer android -v debug
3、downloading build-tools
4、downloading platform api target
主要包括:python、hostpython3、libffi、openssl、pyjnius、sdl2、sdl2_image、sdl2_mixer、sdl_ttf、setuptools、six、sqlites,下载至:/.bildozer/android/platform/build/packages
3.3.2: 建立(解压/编译/复制)环境
错误:sh.CommandNotFound:make
原因:缺少make工具
解决:安装make工具:sudo apt install make
错误: autoconf:not found
原因:缺少相应工具
解决: 1、sudo apt-get install autoconf / 2、sudo apt-get install automake /3、sudo apt-get install libtool
如果在building python3过程中出错,如果是有关.so文件的错误,可以尝试终止过程,执行Buildozer android clean,然后再执行Buildozer android debug
错误:XXXX Cython.Build.Cythonize(ModuleNotFound) 原因未知
解决:python3 pip install Cython(记得过程开始时就已经通过apt-get安装了cython, 但这里提示的是首字母大写的Cython,所以通过pip安装Cython,但具体有什么不同, 暂时还没有深究。)
至此,building的过程已经结束,后面基本不会出现什么大问题。
6、生成.apk文件
3.4添加packages--opencv
3.4.1安装cmake
tar xf cmake-3.11.0.tar.Z
cd cmake-3.11.0.tar.Z
Sudo ./configure
Sudo make
sudo make install
3.4.2修改requirements
3.4.3下载并生成 opencv
错误:1 out of 1 hunk FAILED -- saving rejects to file modules/python/CMakeLists.txt.rej
分析:这个问题发生在给opencv打补丁的过程中,可能是opencv与cmake版本兼容问 题。
解决:由于之前在另外一个系统中有用cmake3.5运行成功的过程,于是将cmake3.5覆盖安装,执行Buildozer android clean,再重新执行Buildozer android debug,查看日志,上述过程中的位置#3正常运行,没有发生打补丁的错误。但是之后提示camke3.5版本太低仍报错。此时再覆盖安装cmake3.11,便没有再报错。相当于cmake3.5帮助完成了打补丁的过程。
3.4.4成功生成Apk文件,opencv运行正常
cube_rgb = cv2.imread('/sdcard/test.jpg')
cube_gray = cv2.cvtColor(cube_rgb, cv2.COLOR_BGR2GRAY)
cv2.imwrite('/sdcard/res.jpg',cube_gray)
3.5其他错误
1、错误:由java引发的错误:java.lang.NoClassDefFoundError
可能原因:java版本问题,建议使用java 8, Java 8是目前的长期支持版本
解决:sudo apt-get install openjdk-8-jdk(只需要装openjdk-8-jdk,不要装jre等,jdk已 经包含了jre以及java编译器)
2、建立 python3的过程中错误:No module named ‘_ctypes’
原因: 缺少相关模块。
解决:Sudo apt install libffi-dev
如果依旧解决不了尝试执行下面过程:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get install build-essential python-dev python-setuptools python-pip python-smbus
sudo apt-get install build-essential libncursesw5-dev libgdbm-dev libc6-dev
sudo apt-get install zlib1g-dev libsqlite3-dev tk-dev
sudo apt-get install libssl-dev openssl
3、错误:安装cmake3.7.0出现:
原因:
解决:2、更换cmake版本至cmake3.11.0
4、问题:长时间卡在这个界面不动
可以尝试键入‘y’回车,继续执行。
5、错误:python文件语法错误:one of your Python files has syntax error。
原因:一般出现这个问题,要看min.py的语法是否与buildozer下对应的python版 本 是否一致。
解决:检查并更正main.py中是否有语法错误。
解决:
sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install libstdc++6
sudo apt-get install aidl
可能是automake,autoconf,libtool版本不匹配构成的,一直没有解决。
4、TIPS
Alpha(α):预览版,或者叫内部测试版;一般不向外部发布,会有很多Bug;一般只有 测试人员使用。
Beta(β):测试版,或者叫公开测试版;这个阶段的版本会一直加入新的功能;在 Alpha 版之后推出。
RC(Release Candidate):最终测试版本;可能成为最终产品的候选版本,如果未出现问 题则可发布成为正式版本。多数开源软件会推出两个RC版本,最后的 RC2 则成为正 式版本。
虚拟机镜像:VM/VBOX:https://www.osboxes.org/virtualbox-images/
各平台、各个版本cmake的安装:https://cmake.org/files/
buildozer的官方使用文档:https://buildozer.readthedocs.io/en/latest/
xubuntu18.04官方下载:
Buildozer 官方使用文档:https://buildozer.readthedocs.io/en/latest/
附录:
libffi:
外部函数接口 LibFFI。“FFI” 的全名是 Foreign Function Interface,通常指的是允许以一种语言编写的代码调用另一种语言的代码。而 “Libffi” 库只提供了最底层的、与架构相关的、完整的”FFI”,因此在它之上必须有一层来负责管理两种语言之间参数的格式转换。
高级语言编译器产生代码时都会依据一系列的规则,这些规则十分必要,特别是对独立编译来说。其中之一是“调用约定” (Calling Convention),它包含了编译器关于函数入口处的函数参数、函数返回值的一系列假设。它有时也被称作“ABI”(Application Binary Interface)。调用约定(Calling Conventions)定义了程序中调用函数的方式,它决定了在函数调用的时候数据(比如说参数)在堆栈中的组织方式。
目前有许多项目都使用了 libff ,包括 ruby,cpython, openjdk,dalvik vm 等等。例如在 Ruby 中,利用 rubyffi (包装了 libffi )可以如此动态地调用一个 dll。
内容来自:https://www.cnblogs.com/findumars/p/4882620.html
Openssl:
OpenSSL是为网络通信提供安全及数据完整性的一种安全协议。OpenSSL整个软件包大概可以分成三个主要的功能部分:密码算法库、SSL协议库以及应用程序。OpenSSL的目录结构自然也是围绕这三个功能部分进行规划的。
作为一个基于密码学的安全开发包,OpenSSL提供的功能相当强大和全面,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。
辅助功能:BIO机制是OpenSSL提供的一种高层IO接口,该接口封装了几乎所有类型的IO接口,如内存访问、文件访问以及Socket等。这使得代码的重用性大幅度提高,OpenSSL提供API的复杂性也降低了很多。OpenSSL对于随机数的生成和管理也提供了一整套的解决方法和支持API函数。随机数的好坏是决定一个密钥是否安全的重要前提。
OpenSSL还提供了其它的一些辅助功能,如从口令生成密钥的API,证书签发和管理中的配置文件机制等等。
内容来自:
https://blog.csdn.net/m0_38080126/article/details/77609226
Pyjnius
Pyjnius是一个用于访问Java类的Python库。
内容来自:https://www.jianshu.com/p/5c7c3e514e37
sdl2
Sdl2它是一个(相对)易于使用的库,可以在不依赖于特定于操作的功能的情况下添加多媒体功能。SDL提供的内容:窗口管理、软件(CPU)和硬件(GPU)渲染2D图形、输入事件系统、时间管理、音频处理、文件IO和加载、穿线、用于3D图形的OpenGL API。
sdl2_image
由于在使用SDL2开发的过程,需要加载png图片,而SDL2本身不提供加载png图片的功能实现。所以需要在引入SDL2_image库。
sdl2_mixer :播放音乐库
sdl_ttfL:显示文字,渲染文字
Setuptools:
Python包管理工具,setuptools是Python distutils增强版的集合,它可以帮助我们更简单的创建和分发Python包,尤其是拥有依赖关系的。用户在使用setuptools创建的包时,并不需要已安装setuptools,只要一个启动模块即可。支持上传到PyPI。
内容来自:https://www.jianshu.com/p/ea9973091fdf
Six
Python 2 和 Python 3 版本的分裂给 Python 开发者们带来了很大的烦恼,为了使代码同时兼容两个版本,往往要增加大量的代码。 于是 Six 出现了。正如它的介绍所说,它是一个专门用来兼容 Python 2 和 Python 3 的库。它解决了诸如 urllib 的部分方法不兼容, str 和 bytes 类型不兼容等问题。
sqlites
SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月。 至2015年已经有15个年头,SQLite也迎来了一个版本 SQLite 3已经发布。
内容来自:https://baike.baidu.com/item/SQLite/375020?fr=aladdin
.so文件
Android中的so文件是动态链接库,是二进制文件,即ELF文件。多用于NDK开发中。
其实就是shared object的意思,.so文件的理解
内容来自:https://blog.csdn.net/zplxl99/article/details/80376298
Cython
准确说Cython是单独的一门语言,专门用来写在Python里面import用的扩展库。实际上Cython的语法基本上跟Python一致,而 Cython有专门的“编译器”先将 Cython代码转变成C(自动加入了一大堆的C-Python API),然后使用C编译器编译出最终的Python可调用的模块。
C语言是编译性语言,而Python则是解释性语言,简而言之,就是Python运行是逐行运行,不需要实现编译,而C需要在运行前编译。那么,可想而知,如果运行前,需要事先编译,那么其实有一种“上帝视角”的感觉,自然可以做很多优化,让代码运行的更快。而Cython的出现就是这个目的,让Python也可以被编译,然后执行。Cython是一种部分包含和改变C语言,以及完全包含pyhton语言的一个语言集合。Cython是用Python实现的一种语言,可以用来写Python扩展,用它写出来的库都可以通过import来载入,性能上比Python的快。Cython里可以载入Python扩展(比如 import math),也可以载入C的库的头文件(比如:cdef extern from “math.h”),另外也可以用它来写Python代码。将关键部分重写成C扩展模块。Cython中的强大之处在于可以把Python和C结合起来,它使得看起来像Python语言的Cython代码有着和C相似的运行速度。
内容来自:https://blog.csdn.net/mou_it/article/details/81876879
Cpython
CPython是特指C语言实现的Python,就是原汁原味的Python。
之所以使用CPython这个词,是因为Python还有一些其它的实现,比如Jython,就是Java版的Python,还有烧脑的PyPy,使用Python再把Python实现了一遍。
JDK
JDK是Java Development Kit 的缩写,中文称为Java开发工具包,由SUN公司提供。它为Java程序开发提供了编译和运行环境,包含三个版本:(J2SE、J2EE、J2ME)
JDK包含了JRE,同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具:jconsole,jvisualvm等工具软件,还包含了java程序编写所需的文档和demo例子程序。
JRE是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。
openjdk是jdk的开放源码版本。
JDK是Java Development Kit 的缩写,中文称为Java开发工具包,由SUN公司提供。它为Java程序开发提供了编译和运行环境,包含三个版本:(J2SE、J2EE、J2ME)
JDK包含了JRE,同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具:jconsole,jvisualvm等工具软件,还包含了java程序编写所需的文档和demo例子程序。
JRE是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。
openjdk是jdk的开放源码版本。