【问题标题】:Android SDK Tools: OpenCV requires Android SDK Tools revision 14 or newerAndroid SDK 工具:OpenCV 需要 Android SDK 工具版本 14 或更新版本
【发布时间】: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 后没有任何变化,错误依旧。

我正在使用

  1. Ubuntu 19.10
  2. Python 3.7.5
  3. 基维 1.11.1
  4. Buildozer 1.2.0
  5. openCv 4

【问题讨论】:

    标签: opencv kivy apk buildozer


    【解决方案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
    

    参考

    注意

    • 如果您对根目录进行了更改,请关闭终端并重新打开它
    • 不要编辑.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 的顶部添加了“以下任一选项”;我知道我的英语并不完美。我英语很差,我不是本地人。帖子的格式可能不完美,我会注意所有这些。同样,我将编辑我的帖子并将您的编辑合并到我的帖子中。够好吗?
    猜你喜欢
    • 1970-01-01
    • 2014-09-27
    • 2014-08-09
    • 2013-01-29
    • 2014-08-22
    • 1970-01-01
    • 1970-01-01
    • 2012-06-28
    • 2011-12-12
    相关资源
    最近更新 更多