【问题标题】:Installing Python-For-Android Linux Ubuntu, Build Errors安装 Python-For-Android Linux Ubuntu,构建错误
【发布时间】:2016-12-08 06:56:26
【问题描述】:

我尝试构建一个测试项目只是为了查看安装是否有效,但我几乎立即收到此错误.....

/home/kivy/Android/sdk/platform-tools/tools/android

我已经安装了 Android Studio 并运行了更新。我安装了所需的 14(android 4.0)工具。我下载了 NDK,尽管 Android Studio 创建了一个包含工具、平台、平台工具等文件夹的新 Android 文件夹,但我仍然下载了独立文件夹 Android-Linux (r24.4.1)。

Android-Linux 和 NDK 位于 home/documents/sdk_ndk/...

Android Studio 创建的 Android 文件夹位于 home/Android

Android Studio 本身包含 NDK 和 Android-Linux 文件夹。

.bashrc 有...

            export ANDROIDSDK=$HOME/Documents/sdk_ndk/android-sdk-r24.4.1
            export ANDROIDNDK=$HOME/Documents/sdk_ndk/android-ndk-r13b
            export ANDROIDAPI="14"
            export ANDROIDNDKVER="r13b"

我什至尝试过....

            export ANDROIDSDK=$HOME/Android/sdk
            export ANDROIDNDK=$HOME/Documents/sdk_ndk/android-ndk-r13b
            export ANDROIDAPI="14"
            export ANDROIDNDKVER="r13b"

构建命令是......

            p4a apk --private ~/Desktop/testapp --package=org.example.myapp --name "testapp" --version 0.1 --bootstrap=sdl2 --requirements=python2,kivy

当我设置这个时...

            export ANDROIDSDK=$HOME/Documents/sdk_ndk/android-sdk-r24.4.1

未找到 API 目标 14。

当我设置这个时...

导出 ANDROIDSDK=$HOME/Android/sdk

我没有收到 api 错误,但我收到了路径错误。

            not found   /home/kivy/Android/sdk/platform-tools/tools/android

我什至尝试过...

            export ANDROIDSDK=$HOME/Android/sdk/tools
            export ANDROIDSDK=$HOME/Android/sdk/platform-tools

-------更新-------

我在路径周围添加了'"'.....

            export ANDROIDSDK="$Home/Documents/sdk_ndk/android-sdk-r24.4.1"
            #export ANDROIDSDK="$Home/Android/sdk"
            export ANDROIDNDK="$Home/Documents/sdk_ndk/android-ndk-r13b"
            export ANDROIDAPI="14"
            export ANDROIDNDKVER="r13b"

现在得到错误,说它找不到/tools/android。这很奇怪,因为 tools 文件夹中有一个 Android 文件。它没有 .sh 扩展名,但有。

这是整个终端输出......

            kivy@kivy-VirtualBox:~$ p4a apk --private ~/Desktop/testapp --package=org.urchatty.com --name "testapp" --version 0.1 --bootstrap=sd12 --requirements=python2,kivy
            [INFO]:    This python-for-android revamp is an experimental alpha release!
            [INFO]:    It should work (mostly), but you may experience missing features or bugs.
            [INFO]:    Will compile for the following archs: armeabi
            [INFO]:    Found Android API target in $ANDROIDAPI
            Traceback (most recent call last):
              File "/usr/local/bin/p4a", line 9, in <module>
                load_entry_point('python-for-android==0.4', 'console_scripts', 'p4a')()
              File "/usr/local/lib/python2.7/dist-packages/pythonforandroid/toolchain.py", line 754, in main
                ToolchainCL()
              File "/usr/local/lib/python2.7/dist-packages/pythonforandroid/toolchain.py", line 343, in __init__
                getattr(self, command_method_name)(unknown)
              File "/usr/local/lib/python2.7/dist-packages/pythonforandroid/toolchain.py", line 87, in wrapper_func
                user_ndk_ver=self.ndk_version)
              File "/usr/local/lib/python2.7/dist-packages/pythonforandroid/build.py", line 226, in prepare_build_environment
                android = sh.Command(join(sdk_dir, 'tools', 'android'))
              File "/usr/local/lib/python2.7/dist-packages/sh.py", line 1029, in __init__
                raise CommandNotFound(path)
            sh.CommandNotFound: /Documents/sdk_ndk/android-sdk-r24.4.1/tools/android
            kivy@kivy-VirtualBox:~$ 

---------更新--------------

似乎我在 bashrc 中的路径必须写为....“/home/kivy/....”。在另一个错误袭击我之前,我没有走多远......

            kivy@kivy-VirtualBox:~$ p4a apk --private $HOME/code/myapp --package=org.example.myapp --name "My application" --version 0.1 --bootstrap=sdl2 --requirements=python2,kivy
            [INFO]:    This python-for-android revamp is an experimental alpha release!
            [INFO]:    It should work (mostly), but you may experience missing features or bugs.
            [INFO]:    Will compile for the following archs: armeabi
            [INFO]:    Found Android API target in $ANDROIDAPI
            [INFO]:    Available Android APIs are (4, 19)
            [INFO]:    Requested API target 19 is available, continuing.
            [INFO]:    Found NDK dir in $ANDROIDNDK
            [INFO]:    Got NDK version from $ANDROIDNDKVER
            [INFO]:    Using Google NDK r13b
            [INFO]:    Found virtualenv at /usr/local/bin/virtualenv
            [WARNING]: ndk_platform doesn't exist: /home.kivy/Documents/android-ndk-r13b/platforms/android-19/arch-arm
            [WARNING]: Could not find toolchain subdirectory!
            [WARNING]: Could not find any toolchain for arm-linux-androideabi!
            [WARNING]: Missing executable: autoconf is not installed
            [WARNING]: Missing executable: automake is not installed
            [WARNING]: Missing executable: libtoolize is not installed
            [ERROR]:   python-for-android cannot continue; aborting
            kivy@kivy-VirtualBox:~$ 

【问题讨论】:

    标签: android linux installation kivy


    【解决方案1】:

    EL3PHANTEN 的回答有所不同。

               # $ANDROIDSDK/tools/android update sdk --no-ui --filter 2,3,15
    

    使用终端而不是管理器似乎有所帮助。为 SDK 下载的文件实际上更少。使用 SDK 管理器 UI,它们要大得多。

    另一个技巧是在 bashrc 中。路径只能以“/”开头。

               "/home/kivy/Documents/...."
    

    最后,p4a 正在做这件事。 Kivy 网站确实应该更新它的文档以包含 EL3PHANTEN 的目的。另外,文档中使用的路径样式...

               export ANDROIDSDK="$HOME/Documents/android-sdk-21"
               export ANDROIDNDK="$HOME/Documents/android-ndk-r10e"
               export ANDROIDAPI="14"  # Minimum API version your application require
               export ANDROIDNDKVER="r10e"  # Version of the NDK you installed
    

    如果出于某种原因,这并没有减少。如果我早点从 EL3PHANTEN 那里得到帮助,而不是照原样在 Kivy 网站上做所有事情,我本可以为自己节省大量带宽和时间。

    我现在唯一想到的是,接下来我会遇到什么错误?显然,关于这些东西的文档不是 100%。

    【讨论】:

      【解决方案2】:

      正如您的错误所说,它找不到应该在您的sdk/tools 文件夹中的android。所以eiter你的ANDROIDSDK变量是错误的,或者你的tools文件夹不包含android

      如果是路径变量,请检查您的 sdk 的路径。
      如果您的 android 可执行文件丢失,请在更新 sdk 时尝试以下步骤。

      您可能更新了所有内容,而没有选择软件包。
      这意味着您的 tools 文件夹现在可能是空的。
      您现在可以做的是在/home/kivy/Android/sdk/platform-tools/temp 中找到打包的tools 文件夹,或者删除整个sdk 文件夹并重试。
      更新android-sdk 的正确方法是这样的:

      (以下过程花费的时间更少,因为您不需要所有的包)

      首先下载并解压sdk。

      由于我们不需要所有的包,我们首先需要一个可用包的列表。

      # ANDROIDSDK="$HOME/Android/sdk"
      # $ANDROIDSDK/tools/android list sdk
      

      现在我们得到了一个包列表。
      我们需要安装 build_tools 和 platform_tools,在我的例子中显示为 2 和 3。我们还需要 SDK Platform Android 4.0.3, API 15,因为我们选择了 API 版本 15。顺便说一下,这个包在我的例子中也显示为 15。 (或任何你想要的 API)

      所以我们添加过滤器 2,3,15。

      确保不要安装Android SDK Tools,在我的例子中显示为 1。这将清空工具文件夹,我们不希望这样。

      注意

      您的过滤器可能不同,然后在上面解释。

      然后运行这个命令来安装你选择的包:

      # $ANDROIDSDK/tools/android update sdk --no-ui --filter 2,3,15
      

      【讨论】:

      • 其实我的工具文件夹不是空的。它里面有一堆文件,包括管理器。
      • 我的 android SDK 工具是 24.4.1。我有 android 平台工具 25.0.1,构建工具 25.0.1、21、20 和 19。我卸载了所有 api,现在我正在下载 API 15 (4.0.3)。除非有一些特定的组合或我遗漏的其他东西,否则我不明白我原来的帖子中提出的错误。
      • 文件“/usr/local/lib/python2.7/dist-packages/sh.py”,第 1029 行,在 init 中引发 CommandNotFound(path) sh.CommandNotFound :
      • @chitondihk 是的,这意味着它找不到/Documents/sdk_ndk/android-sdk-r24.4.1/tools/android 这就是为什么我认为你的工具文件夹是空的。然后你可能想检查你的 ANDROIDSDK=$HOME/Documents/sdk_ndk/android-sdk-r24.4.1 变量。这是正确的文件夹 -> sdk_ndk
      • @chitondihk 出于好奇。自从您使用 VM 以来,您使用的是哪个操作系统?
      猜你喜欢
      • 2015-01-20
      • 2022-07-07
      • 2012-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-18
      相关资源
      最近更新 更多