【问题标题】:NDK version conflict in buildozer for Kivy appKivy 应用程序的 buildozer 中的 NDK 版本冲突
【发布时间】:2022-11-01 21:31:18
【问题描述】:

我正在尝试构建一个在 buildozer.spec 中有这些要求的 kivy 应用程序:

requirements = python3,kivy,pillow,plyer,scipy,numpy

所有 Android(SDK/NDK,API)设置都是默认的(注释)

一次不指定 NDK 的运行会给出:

[INFO]:    <- directory context /home/joachim/PycharmProjects/CardReader/.buildozer/android/platform/python-for-android
[WARNING]: install_libs called with no libraries to install!
[INFO]:    Building lapack for arm64-v8a
[INFO]:    -> directory context /home/joachim/PycharmProjects/CardReader/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/other_builds/lapack/arm64-v8a__ndk_target_21/lapack/build
[ERROR]:   Build failed: Please set the environment variable 'LEGACY_NDK' to point to a NDK location with gcc/gfortran support (supported NDK version: 'r21e')

当我清理然后将 NDK 设置为 21e 并再次运行时,我得到另一个错误:

[INFO]:    Will compile for the following archs: arm64-v8a, armeabi-v7a
[INFO]:    Found Android API target in $ANDROIDAPI: 27
[INFO]:    Available Android APIs are (27)
[INFO]:    Requested API target 27 is available, continuing.
[INFO]:    Found NDK dir in $ANDROIDNDK: /home/joachim/.buildozer/android/platform/android-ndk-r21e
[INFO]:    Found NDK version 21e
[ERROR]:   Build failed: The minimum supported NDK version is 23. You can download it from https://developer.android.com/ndk/downloads/.
[INFO]:    Instructions: Please, go to the android NDK page (https://developer.android.com/ndk/downloads/) and download a supported version.
*** The currently recommended NDK version is 23b ***

如何解决这种不匹配?寻找支持 gcc/gfortran 的 NDK。或者,需要为 LEGACY_NDK 设置什么?

【问题讨论】:

    标签: android-ndk kivy buildozer python-for-android


    【解决方案1】:

    所以我刚刚遇到了这个问题并找到了解决方案。
    问题是为 android 构建 scipy python 需要一个支持 fortran 的 android ndk。这些似乎仅受 NDK 版本 21 及更低版本支持,并且需要专门使用 fortran 支持构建 NDK。幸运的是,有人为此目的托管了预建版本。 https://github.com/mzakharo/android-gfortran/releases(仅限 Linux,如果您从 Windows 构建 APK,则需要按照该项目的自述文件中所述构建自己的 NDK 工具链)

    您必须执行以下操作:

    首先,您需要通过 buildozer 下载旧版 NDK 对于buildozer.spec 中的此修改:

    #android.ndk = 23b --> android.ndk = 21e
    

    然后执行

    buildozer android debug
    

    当它失败时(这没关系,因为我们只运行 buildozer 来下载 r21 NDK):

    tar -jxvf gcc-arm-linux-x86_64.tar.bz2
    mv arm-linux-androideabi-4.9 ~/.buildozer/android/platform/android-ndk-r21e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
    

    然后将更改还原为buildozer.spec

    android.ndk = 21e --> #android.ndk = 23b
    

    现在您可以使用

    export LEGACY_NDK=~/.buildozer/android/platform/android-ndk-r21e
    buildozer android debug deploy run
    

    【讨论】:

      猜你喜欢
      • 2020-08-20
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 2013-11-19
      • 2015-05-02
      • 2011-02-10
      • 2017-03-21
      • 1970-01-01
      相关资源
      最近更新 更多