我也遇到这个错误,烦恼了很长时间:(
经过大量谷歌搜索后,我找到了一些可能有帮助的解决方案。
至少它可以在我的 Ubuntu 20.04 VM 上运行。
(下载 Android Studio 并复制粘贴目录部分(最后 3 个步骤)的说明可能会解决您的问题,因为我也遇到了与您相同的错误)
-
第一次更新apt
sudo apt-get update
-
升级包
sudo apt-get upgrade
-
安装 python3 + pip
sudo apt-get install python3 python3-pip
-
配置默认Python版本(ref_1 https://dev.to/meetsohail/change-the-python3-default-version-in-ubuntu-1ekb ) ( ref_2 https://unix.stackexchange.com/questions/410579/change-the-python3-default-version-in-ubuntu )
sudo update-alternatives --install /usr/bin/python python /usr/bin/python<X.X.X> 1
sudo update-alternatives --config python
where <X.X.X>
是所需的 Python 版本。
-
安装开发工具+依赖项
sudo apt-get install build-essential \
libssl-dev \
libffi-dev \
python3-dev \
dh-autoreconf \
autoconf \
libtool \
pkg-config \
zlib1g-dev \
libncurses5-dev \
libncursesw5-dev \
libtinfo5 \
cmake \
ccache
-
安装基维
-
安装 cython
pip3 install Cython
sudo apt-get install cython
// 我是这样做的
-
安装javac
sudo apt-get install openjdk-11-jdk openjdk-8-jdk
-
检查是否java
and javac
已安装
java -version
javac -version
-
config. java
+ javac
(我将其配置为openjdk8-jdk
)
sudo update-alternatives --config java
sudo update-alternatives --config javac
-
install cmake
(我都做了)(ref https://vitux.com/how-to-install-cmake-on-ubuntu/ )
-
安装 buildozer (我使用官方方式 https://buildozer.readthedocs.io/en/latest/installation.html )
-
安装Python IDLE(可选)(以下任一)
sudo apt-get install idle3
-
安装Android Studio
我尝试了不安装 Android Studio 的方法(仅使用命令行工具),但就是无法弄清楚:(
sudo snap install android-studio --classic
并运行它并让它自己设置一切。
之后,只需关闭它即可
-
一切设置完毕后:(ref https://www.youtube.com/watch?v=c4tuSxSoERY )
打开文件
复制tools
目录位于~/Home/Android/Sdk/
将其粘贴在~/Home/.buildozer/android/platform/android-sdk
after压缩原件tools
目录位于那里(通过右键单击 --> 压缩)(如果您看不到该目录,请务必检查show hidden file
文件选项中的复选框)
然后去~/Home/.buildozer/android/platform/android-sdk/tools/bin
并在终端中打开
./sdkmanager --install "tools"
exit
-
再次重建项目
转到您的项目目录
buildozer init # if you haven't got the buildozer.spec in your project's dir
buildozer android debug
*.apk
将在bin
my buildozer.spec
:
title = Screen_Recorder
package.name = screen_recorder
package.domain = org.test
souce.dir = .
source.include_exts = py,png,jpg,kv,atlas
requirements = python3,kivy==2.0.0,android,opencv==4.5.3,numpy,pillow,EasyProcess,entrypoint2,mss,jeepney,plyer,pyscreenshot
osx.python_version = 3
osx.kivy_version = 2.0.0
android.permission = CAMERA,RECORD_AUDIO,WRITE_EXTERNAL_STORAGE,READ_EXTERNAL_STORAGE
参考
- Stackoverflow问题:android中带有opencv的kivy相机应用程序显示黑屏 https://stackoverflow.com/questions/61122285/kivy-camera-application-with-opencv-in-android-shows-black-screen
- Stackoverflow 问题:在 Android 上的 Kivy Launcher 中启动应用程序时生成的日志 https://stackoverflow.com/questions/22733951/logs-generated-when-launching-an-app-in-kivy-launcher-on-android
- Stackoverflow 问题:我无法为 Android 构建 buildozer https://stackoverflow.com/questions/31416122/i-cant-build-buildozer-for-android/43900080#43900080
- Youtube 视频(我按照这个视频(复制粘贴目录部分)使其工作):让 opencv4 在 ubuntu 上与 kivy / buildozer 一起工作 https://www.youtube.com/watch?v=c4tuSxSoERY
- git 讨论:Android 编译 opencv 失败 https://github.com/kivy/buildozer/issues/1144
- Stackoverflow问题:Python中使用request_permissions的android权限 https://stackoverflow.com/questions/64324557/android-permissions-in-python-using-request-permissions
- python-for-android 文档 - 在 Android 上工作 https://python-for-android.readthedocs.io/en/latest/apis/#runtime-permissions
Note
- 如果更改根目录,请关闭终端并重新打开它
- 不要编辑
.bashrc
文件(就我而言,我没有)
- 删除
bin
and .buildozer
每次重建项目时都在项目目录中OR run buildozer <platform> clean
- use
ls
列出当前目录中的所有文件+文件夹
- use
cd <dir>
导航到目录
- use
cd ..
导航到上一个目录
- 如果你需要许可
CAMERA
,您需要将其添加到buildozer.spec
's permission
并在您的中添加以下内容*.py
获得安卓权限 https://developer.android.com/reference/android/Manifest.permission :
from kivy.utils import platform
if platform == "android":
from android.permissions import request_permissions, Permission
request_permissions([ <permissions> ]) # e.g. Permission.WRITE_EXTERNAL_STORAGE , Permission.READ_EXTERNAL_STORAGE , Permission.CAMERA , Permission.RECORD_AUDIO , etc.
(您不需要安装或导入android
,只需包括android
in the buildozer.spec
's requirement
)
希望对您有帮助(如有不正确的地方请指正)