Android SDK 工具:OpenCV 需要 Android SDK 工具修订版 14 或更高版本

2024-01-26

我正在尝试使用 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 后没有任何变化,错误仍然存​​在。

我在用着

  1. 乌班图19.10
  2. Python 3.7.5
  3. 基维1.11.1
  4. 建造者1.2.0
  5. openCv 4

我也遇到这个错误,烦恼了很长时间:(

经过大量谷歌搜索后,我找到了一些可能有帮助的解决方案。

至少它可以在我的 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
    
  • 安装基维

    • through 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 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/ )

    • 蟒蛇方式

      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 (我使用官方方式 https://buildozer.readthedocs.io/en/latest/installation.html )

    • 官方方式

      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 的方法(仅使用命令行工具),但就是无法弄清楚:(

    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 )

希望对您有帮助(如有不正确的地方请指正)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android SDK 工具:OpenCV 需要 Android SDK 工具修订版 14 或更高版本 的相关文章

  • 二值图像中骨架上两点之间的最短路径

    我有一个二进制图像 其中包含图像的一个像素宽度骨架 您可能基本上知道 在这个二值图像中 我在骨架上有 1 在其他地方有 0 如何找到骨架上两个非零元素之间的最短距离 路径也应该在骨架本身上 我想使用 A star 算法的 C 实现 我找到了
  • 如何使用 opencv.omnidir 模块对鱼眼图像进行去扭曲

    我正在尝试使用全向模块 http docs opencv org trunk db dd2 namespacecv 1 1omnidir html用于对鱼眼图像进行扭曲处理Python 我正在尝试适应这一点C 教程 http docs op
  • OpenCV VideoWriter 未写入 Output.avi

    我正在尝试编写一段简单的代码来获取视频 裁剪视频并写入输出文件 系统设置 OS Windows 10 Conda Environment Python Version 3 7 OpenCV Version 3 4 2 ffmpeg Vers
  • 如何在 Qt 应用程序中通过终端命令运行分离的应用程序?

    我想使用命令 cd opencv opencv 3 0 0 alpha samples cpp cpp example facedetect lena jpg 在 Qt 应用程序中按钮的 clicked 方法上运行 OpenCV 示例代码
  • OpenCV 2.2 和多 CPU - opencv_haartraining.exe 是多线程的吗?

    我在 VS 2010 上构建了 OpenCV 2 2 启用了 TBB 3 支持 我确保所有项目都有正确的 tbb lib 目录 并将 tbb lib 列为依赖项 通过隐藏 tbb dll 进行验证 果然 haartraining exe 抱
  • 为什么Android应用程序在发布到市场后尺寸会增加?

    我最近在 Android 市场上发布了我的应用程序 显示应用程序大小为 5 4MB 而实际 apk 大小为 2 8MB 为什么显示多出2MB 我应该如何限制我的应用程序大小 请帮我 您的应用程序大小会增加 因为您使用了复制保护选项ON在发布
  • Kivy - 有所有颜色名称的列表吗?

    在 Kivy 中 小部件 color属性允许输入其值作为字符串颜色名称 也 例如在 kv file Label color red 是否有所有可能的颜色名称的列表 就在这里 来自Kivy 的文档 https kivy org doc sta
  • 收到“无法解析上传的APK的AndroidManifest.xml。它是否正确编译?”启用 Google 应用签名后出现错误

    启用后谷歌应用程序签名 https support google com googleplay android developer answer 7384423 hl en 每次我尝试将签名版本 APK 上传到 Play 商店时 都会收到一
  • 开放简历fisherfaces

    我有这个问题 当我使用 vs2010 调试 opencv 2 4 0 facetec demo c 运行时 程序出现此错误 OpenCV错误 未知函数中图像步长错误 矩阵不连续 因此其行数无法更改 文件 src opencv modul e
  • 使用卡尔曼滤波器跟踪位置和速度

    我正在使用卡尔曼滤波器 恒定速度模型 来跟踪物体的位置和速度 我测量对象的 x y 并跟踪 x y vx vy 这是有效的 但是如果在传感器读数 x y vx vy 上添加 20 mm 的高斯噪声 即使该点没有移动 只是噪声也会发生波动 对
  • 找到 4 个特定的角像素并将它们与扭曲透视一起使用

    我正在使用 OpenCV 我想知道如何构建一个简单版本的透视变换程序 我有一张平行四边形的图像 它的每个角都由具有特定颜色的像素组成 该像素在图像中没有其他位置 我想遍历所有像素并找到这 4 个像素 然后我想将它们用作新图像中的角点 以扭曲
  • 如何检测图像是否像素化

    之前有人在 SO 上提出过这样的问题 在Python中检测像素化图像 https stackoverflow com questions 12942365 detecting a pixelated image in python还有关于q
  • Opencv 2.4.2 代码讲解-人脸识别

    我参考OpenCV提供的文档制作了一个人脸识别程序 可以识别多个人脸 并且工作正常 在文档中 他们制作了省略号来突出显示脸部 我不明白的是他们如何计算椭圆的中心 他们的计算如下 for int i 0 i lt faces size i P
  • 选择合适的IDE

    您会推荐使用以下哪种 IDE 语言来在 Windows 下开发涉及识别手势并与操作系统交互的项目 我将使用 OpenCV 库来执行图像处理任务 之后 我将使用 win32 API 或 NET 框架与操作系统交互 具体取决于您建议的工具 性能
  • 将图像加载到现有 Mat 中

    有没有办法将图像加载到现有的 Mat 中 如果没有 有没有办法控制 OpenCV 在调用 cv imread 时分配内存的位置 我只是为您的类创建一个构造函数 该构造函数接受 imread 的输入参数并将图像直接加载 并分配 到您的类中 所
  • 相机校准:如何正确进行

    我正在尝试使用棋盘格通过众所周知的张氏方法进行校准 然后进行捆绑调整 该方法在 Matlab 和 OpenCV 中都可用 有很多经验指南 但从我个人的经验来看 准确性是相当随机的 它有时可能非常好 但有时也可能非常糟糕 实际上 只需将棋盘放
  • 如何用OpenCV解决图像处理相机IO延迟

    我有一个 OpenCV 程序 其工作原理如下 VideoCapture cap 0 Mat frame while true cap gt gt frame myprocess frame 问题是如果myprocess耗时较长 超过相机的I
  • Alpha 混合可消除图像中的接缝

    我缝合了两张图像 但在最终图像中存在可见的接缝 我正在尝试使用阿尔法混合去除那条接缝 我知道 Alpha 混合是使用cvAddweight 函数 但在此函数参数是两个图像 alpha beta gamma和目的地 我正在服用gamma 0
  • 静态 OpenCV 库中未定义的引用

    我有一个使用 OpenCV 3 1 的 C 项目 并且使用共享库可以正常工作 但现在我想使用静态库 位于项目目录中的文件夹中 来编译它 因为我希望能够在未安装 OpenCV 的情况下导出它 如果需要还可以编辑和重新编译 这次我重新编译了 O
  • Meteor:即使设置了 ANDROID_HOME 也未设置

    操作系统 Ubuntu 14 04 框架 流星1 1 0 2 应用名称 Songofy 这是输出meteor install sdk android meteor install sdk android Found Android bund

随机推荐

  • 在 JQuery 中获取 Node 的原始 HTML

    我用过 parent html 获取内部 html parent 但是我如何获取父级本身的 html 呢 用例是 我获取一个像这样的输入节点 var field input 我希望能够获取该节点的原始 html
  • 用户存在和身份验证

    我正在使用此代码使用服务在后台检测我的 Android 应用程序中的用户存在 final FirebaseAuth mAuth FirebaseAuth getInstance final FirebaseDatabase database
  • 动态规划和分而治之

    我正在读书动态规划的笔记 http www es ele tue nl education 5MC10 Solutions knapsack pdf 我遇到了以下评论 如果子问题不是独立的 即 子问题共享子子问题 然后分而治之算法重复解决公
  • Android 获取屏幕宽度和高度

    如何获取屏幕宽度和高度并在以下位置使用该值 Override protected void onMeasure int widthSpecId int heightSpecId Log e TAG onMeasure widthSpecId
  • 将分隔的字段合并为一个

    我在 Ada 工作 我有一个非常丑陋的类型 我无法修改 我想做一些易于使用的事情 类型是这样的 for T Ugly Type Alignment use 4 for T Ugly Type Size use 48 for T Ugly T
  • 比 SHA1 更好的散列

    我正在开发一个应用程序 我需要存储用户密码 所以我想将其存储在注册表的当前用户类中 但出于显而易见的原因我也想对其进行哈希处理 并且我我看到新闻报道称 SHA1 已被破解 标准 系统或 net 中是否有更好的 未破解的 哈希算法 SHA1
  • 使用 & 符号解析 XML

    我有一个包含 XML 的字符串 我只想将其解析为 Xelement 但它有一个 符号 我在使用 HtmlDecode 解析它时仍然遇到问题 有什么建议么 string test
  • 如何在 django 中实现 ldap 身份验证(无需管理员凭据)

    我的设置 Django 3 0 Python 3 8 django auth ldap我的组织中有 LDAP 服务器 Active Directory 服务器 我正在构建一个 Django 应用程序 它为所有用户提供一些操作 我知道 Dja
  • C 样式数组不再适用于记录

    我以前使用过这个人为的代码 record Foo int bar 这是利用C型数组 符号 它在 Java 15 中编译得很好 现在 突然之间 随着正式发布records在 Java 16 中 它不再编译 这是输出jshell jshell
  • 运行闪亮应用程序时访问/使用 R 控制台

    有谁知道在运行闪亮的应用程序时是否能够访问 R 控制台 如果可能的话 在后台运行闪亮的应用程序也会有帮助 我需要这个来操作 GlobalEnv 中的对象 这些对象在闪亮的应用程序中使用 并且必须使用命令行来完成 启动应用程序时 控制台很忙
  • 无法在简单示例中从 Spark ML 运行 RandomForestClassifier

    我尝试过运行实验RandomForestClassifier来自spark ml包 版本 1 5 2 我使用的数据集来自LogisticRegression中的示例Spark 机器学习指南 http spark apache org doc
  • Spring:在 Java 配置中定义自定义 @Transactional 行为

    我希望 Spring 回滚带有注释的方法上的事务 Transactional以防该方法抛出已检查的异常 等价于此 Transactional rollbackFor MyCheckedException class public void
  • RoR Net::HTTP post 错误未定义方法“bytesize”

    我目前正在反复用头撞墙 直到解决这个问题 我正在使用 ruby 1 9 3 p194 和 Rails 我正在尝试发出一个发布请求 我可以使用 Net HTTP post form 很好地完成该请求 但我不能在这里使用它 因为我需要在标头中设
  • 如何在 WPF 中隐藏组合框的项目

    有没有办法在 WPF 中隐藏组合框的项目 在我的用户控件中 有一个列表框 其中复选框项目绑定到 ObservableCollection 和一个带有组合框的数据网格
  • TypeError:“NoneType”对象在 Google Colab 中不可调用

    下面导入的包和模型被定义为允许访问构建操作 import matplotlib pyplot as plt import tensorflow as tf import numpy as np import cv2 import os fr
  • 如果单词的第一个字母是元音,如何返回 1,否则返回 0。映射器(MapReduce)问题

    这是我正在处理的 MapReduce 问题的第一部分 我需要一个函数 如果单词的第一个字母以元音开头 则返回 1 否则返回 0 该程序通过将文本文件传输到映射器来在终端中运行 如下所示 cat test txt python3 mapper
  • OpenOffice writer - 以编程方式使用单元格公式更新表格

    当单元格值为书签并且书签以编程方式更新 通过 Java 中的 UNO 调用 时 我真的很想找出如何强制以编程方式刷新 openoffice writer 3 3 单元格计算 Example start stop duration 9 30
  • Scala Seq GroupBy 与 Future

    我有 2 个案例类 case class First firstId Long pt Long vt Long case class Second secondId Int vt Long a Long b Long c Long d Lo
  • 负值和正值之间的随机数[重复]

    这个问题在这里已经有答案了 可能的重复 在Javascript中生成特定范围内的随机数 https stackoverflow com questions 1527803 generating random numbers in javas
  • Android SDK 工具:OpenCV 需要 Android SDK 工具修订版 14 或更高版本

    我正在尝试使用 kivy opencv 创建一个简单的照片捕获应用程序 当我尝试使用 buildozer 创建 apk 文件 并将 opencv 放入 spec 文件的需求中时 我遇到了此错误 Android fixup g compile