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

&lt;X.X.X&gt; 是所需的 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

检查是否安装了javajavac

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 &lt;platform&gt; clean 使用ls列出当前目录中的所有文件+文件夹 使用cd &lt;dir&gt; 导航到目录 使用cd .. 导航到上一个目录 如果您需要像CAMERA 这样的权限,您需要将其添加到buildozer.specpermission 并在您的*.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.specrequirement 中)

希望对你有帮助(如有不妥请指正)

【讨论】:

应该不需要apt update apt-get update 等;你应该简单地选择一个或另一个,并始终坚持这一点。更普遍推荐apt-get,因为它也很容易转移到自动安装,而较新的apt 可能具有更愉快的交互式用户体验;但最终,他们都做同样的事情。 @tripleee 好的,我刚刚编辑了我的帖子,添加到了apt installapt update 部分。感谢您的信息 您似乎回滚了我所做的一些相当大的更改;你能解释一下为什么吗?特别是标点周围的不规则间距非常令人不安,您应该能够注意到标点和前一个单词之间的换行的几个地方会产生完全不和谐的布局结果,这是一个明显且没有吸引力的症状。 另外,我看不出这方面的实际变化;你仍然将aptapt-get 与放弃混合在一起。 @tripleee 好的,我会将您的编辑合并到我的帖子中。是我在回答这个问题(不会是粗鲁的)我有自己的风格…… ? 我在 apt apt-get 的顶部添加了“以下任一选项”;我知道我的英语并不完美。我英语很差,我不是本地人。帖子的格式可能不完美,我会注意所有这些。同样,我将编辑我的帖子并将您的编辑合并到我的帖子中。够好吗?

以上是关于Android SDK 工具:OpenCV 需要 Android SDK 工具版本 14 或更新版本的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio配置及使用OpenCV

android +opencv 配置,Android+OpenCV4.2.0环境配置详解(Android studio)

Android Studio中使用OpenCV Android SDK

Android OpenCV之SDK配置

Android OpenCV之SDK配置

Android OpenCV之SDK配置