Android SDK 工具:OpenCV 需要 Android SDK 工具版本 14 或更新版本
Posted
技术标签:
【中文标题】Android SDK 工具:OpenCV 需要 Android SDK 工具版本 14 或更新版本【英文标题】:Android SDK Tools: OpenCV requires Android SDK Tools revision 14 or newer 【发布时间】:2020-10-16 08:22:25 【问题描述】:我正在尝试使用 kivy、opencv 创建一个简单的照片捕捉应用程序。当我尝试使用 buildozer 创建一个 .apk 文件并将 opencv 放在 .spec 文件的要求中时,我遇到了这个错误
-- android: fixup -g compiler option from Android toolchain
-- Update variable ANDROID_SDK from environment: /home/livon/.buildozer/android/platform/android-sdk
-- Android SDK Tools: ver. 2.0 (description: 'Android SDK Command-line Tools')
-- Android SDK Build Tools: ver. 30.0.0 (subdir 30.0.0 from 30.0.0)
CMake Error at cmake/android/OpenCVDetectAndroidSDK.cmake:176 (message):
Android SDK Tools: OpenCV requires Android SDK Tools revision 14 or newer.
Use BUILD_ANDROID_PROJECTS=OFF to prepare Android project files without
building them
Call Stack (most recent call first):
CMakeLists.txt:780 (include)
-- Configuring incomplete, errors occurred!
See also "/home/livon/Desktop/Ocv/.buildozer/android/platform/build-armeabi-
v7a/build/other_builds/opencv/armeabi-v7a__ndk_target_21/opencv/build/CMakeFiles/CMakeOutput.log".
See also "/home/livon/Desktop/Ocv/.buildozer/android/platform/build-armeabi-
v7a/build/other_builds/opencv/armeabi-v7a__ndk_target_21/opencv/build/CMakeFiles/CMakeError.log".er
# Command failed: /home/livon/venv/bin/python3 -m pythonforandroid.toolchain create --dist_name=test
--bootstrap=sdl2 --requirements=python3,kivy,opencv --arch armeabi-v7a --copy-libs --color=always --
storage-dir="/home/livon/Desktop/Ocv/.buildozer/android/platform/build-armeabi-v7a" --ndk-api=21
# ENVIRONMENT:
# ANDROIDNDK = '/home/livon/.buildozer/android/platform/android-ndk-r19c'
# ANDROIDAPI = '27'
# ANDROIDMINAPI = '21'
我也尝试更新 ANDROID_SDK,我去了 (/home/livon/.buildozer/android/platform/android-sdk) 这个文件夹并使用更新它
sudo apt-get upgrade
但更新到 30.0.0 后没有任何变化,错误依旧。
我正在使用
-
Ubuntu 19.10
Python 3.7.5
基维 1.11.1
Buildozer 1.2.0
openCv 4
【问题讨论】:
【参考方案1】:我也遇到这个错误,烦了很久:(
经过一堆谷歌搜索,我找到了一些可能有帮助的解决方案。
至少它可以在我的 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) (ref_2)
sudo update-alternatives --install /usr/bin/python python /usr/bin/python<X.X.X> 1
sudo update-alternatives --config python
<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
安装 kivy
通过apt
sudo apt-get install python3-kivy
通过 Python pip(我的首选方式)
python3 -m pip install kivy==2.0.0
安装 cython
pip3 install Cython
sudo apt-get install cython
//我是这样做的
安装javac
sudo apt-get install openjdk-11-jdk openjdk-8-jdk
检查是否安装了java
和javac
java -version
javac -version
配置。 java
+ javac
(我将其配置为openjdk8-jdk
)
sudo update-alternatives --config java
sudo update-alternatives --config javac
安装cmake
(我都做了)(ref)
蟒蛇方式
pip3 install cmake
手动方式
cd /tmp
wget https://github.com/Kitware/CMake/releases/download/v3.20.0/cmake-3.20.0.tar.gz
tar -zxvf cmake-3.20.0.tar.gz
cd cmake-3.20.0
./bootstrap
make
sudo make install
安装 buildozer(我使用 official way 重新安装了它)
官方方式
pip3 install --user --upgrade buildozer
通过 git 克隆
sudo apt-get install git
git clone https://github.com/kivy/buildozer.git
cd buildozer
sudo python3 setup.py install
安装 Python IDLE(可选)(以下任意一种)
sudo apt-get install idle3
安装 Android Studio
我尝试了不安装 Android Studio 的方法(仅使用 cmdline-tools),但就是想不通:(
sudo snap install android-studio --classic
然后运行它,让它自己设置一切。
然后,关闭它
一切就绪后:(ref)
打开文件
复制位于~/Home/Android/Sdk/
中的tools
目录
将其粘贴到~/Home/.buildozer/android/platform/android-sdk
在压缩位于那里的原始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
中可用
我的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
参考
*** Question: kivy camera application with opencv in android shows black screen *** Question: Logs Generated when launching an App in Kivy Launcher on Android *** Question: I Can't build buildozer for android Youtube Video (I follow this video (the copy-paste dir part) to make it work): to get opencv4 work with kivy / buildozer on ubuntu git discussion: Android compilation fails with opencv *** Question: android permissions in python using request_permissions python-for-android docs - Working on Android注意
如果您对根目录进行了更改,请关闭终端并重新打开它 不要编辑.bashrc
文件(在我的情况下,我没有)
每次重建项目时删除项目目录中的bin
和.buildozer
目录或运行buildozer <platform> clean
使用ls
列出当前目录中的所有文件+文件夹
使用cd <dir>
导航到目录
使用cd ..
导航到上一个目录
如果您需要像CAMERA
这样的权限,您需要将其添加到buildozer.spec
的permission
并在您的*.py
中添加以下内容以获得android 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
包含在buildozer.spec
的requirement
中)
希望对你有帮助(如有不妥请指正)
【讨论】:
应该不需要apt update
和apt-get update
等;你应该简单地选择一个或另一个,并始终坚持这一点。更普遍推荐apt-get
,因为它也很容易转移到自动安装,而较新的apt
可能具有更愉快的交互式用户体验;但最终,他们都做同样的事情。
@tripleee 好的,我刚刚编辑了我的帖子,添加到了apt install
apt update
部分。感谢您的信息
您似乎回滚了我所做的一些相当大的更改;你能解释一下为什么吗?特别是标点周围的不规则间距非常令人不安,您应该能够注意到标点和前一个单词之间的换行的几个地方会产生完全不和谐的布局结果,这是一个明显且没有吸引力的症状。
另外,我看不出这方面的实际变化;你仍然将apt
和apt-get
与放弃混合在一起。
@tripleee 好的,我会将您的编辑合并到我的帖子中。是我在回答这个问题(不会是粗鲁的)我有自己的风格…… ? 我在 apt
apt-get
的顶部添加了“以下任一选项”;我知道我的英语并不完美。我英语很差,我不是本地人。帖子的格式可能不完美,我会注意所有这些。同样,我将编辑我的帖子并将您的编辑合并到我的帖子中。够好吗?以上是关于Android SDK 工具:OpenCV 需要 Android SDK 工具版本 14 或更新版本的主要内容,如果未能解决你的问题,请参考以下文章
android +opencv 配置,Android+OpenCV4.2.0环境配置详解(Android studio)