Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Buildozer Numpy运行时错误:工具链断开:无法链接简单的C程序_Android_Python_Numpy_Kivy_Buildozer - Fatal编程技术网

Android Buildozer Numpy运行时错误:工具链断开:无法链接简单的C程序

Android Buildozer Numpy运行时错误:工具链断开:无法链接简单的C程序,android,python,numpy,kivy,buildozer,Android,Python,Numpy,Kivy,Buildozer,用Python编写我的第一个Android应用程序并使用Buildozer进行打包。因为我以后需要在项目中使用numpy,所以我尝试打包以下测试代码: import numpy import kivy kivy.require('1.0.6') from kivy.app import App from kivy.uix.button import Button class TestApp(App): def build(self): return Button(tex

用Python编写我的第一个Android应用程序并使用Buildozer进行打包。因为我以后需要在项目中使用numpy,所以我尝试打包以下测试代码:

import numpy
import kivy
kivy.require('1.0.6')
from kivy.app import App
from kivy.uix.button import Button

class TestApp(App):
    def build(self):
        return Button(text='Hello World')

TestApp().run()
但是,我得到了以下错误:

Traceback (most recent call last):
  File "setup.py", line 251, in <module>
    setup_package()
  File "setup.py", line 243, in setup_package
    setup(**metadata)
  File "/home/kivy/Desktop/cam/.buildozer/android/platform/build/build/other_builds/numpy/armeabi-v7a/numpy/numpy/distutils/core.py", line 169, in setup
    return old_setup(**new_attr)
  File "/home/kivy/Desktop/cam/.buildozer/android/platform/build/build/python-installs/myapp/lib/python2.7/distutils/core.py", line 152, in setup
    dist.run_commands()
  File "/home/kivy/Desktop/cam/.buildozer/android/platform/build/build/python-installs/myapp/lib/python2.7/distutils/dist.py", line 953, in run_commands
    self.run_command(cmd)
  File "/home/kivy/Desktop/cam/.buildozer/android/platform/build/build/python-installs/myapp/lib/python2.7/distutils/dist.py", line 972, in run_command
    cmd_obj.run()
  File "/home/kivy/Desktop/cam/.buildozer/android/platform/build/build/other_builds/numpy/armeabi-v7a/numpy/numpy/distutils/command/build_ext.py", line 59, in run
    self.run_command('build_src')
  File "/home/kivy/Desktop/cam/.buildozer/android/platform/build/build/python-installs/myapp/lib/python2.7/distutils/cmd.py", line 326, in run_command
    self.distribution.run_command(command)
  File "/home/kivy/Desktop/cam/.buildozer/android/platform/build/build/python-installs/myapp/lib/python2.7/distutils/dist.py", line 972, in run_command
    cmd_obj.run()
  File "/home/kivy/Desktop/cam/.buildozer/android/platform/build/build/other_builds/numpy/armeabi-v7a/numpy/numpy/distutils/command/build_src.py", line 153, in run
    self.build_sources()
  File "/home/kivy/Desktop/cam/.buildozer/android/platform/build/build/other_builds/numpy/armeabi-v7a/numpy/numpy/distutils/command/build_src.py", line 164, in build_sources
    self.build_library_sources(*libname_info)
  File "/home/kivy/Desktop/cam/.buildozer/android/platform/build/build/other_builds/numpy/armeabi-v7a/numpy/numpy/distutils/command/build_src.py", line 299, in build_library_sources
    sources = self.generate_sources(sources, (lib_name, build_info))
  File "/home/kivy/Desktop/cam/.buildozer/android/platform/build/build/other_builds/numpy/armeabi-v7a/numpy/numpy/distutils/command/build_src.py", line 386, in generate_sources
    source = func(extension, build_dir)
  File "numpy/core/setup.py", line 686, in get_mathlib_info
    raise RuntimeError("Broken toolchain: cannot link a simple C program")
RuntimeError: Broken toolchain: cannot link a simple C program


  STDERR:
# Command failed: /usr/bin/python -m pythonforandroid.toolchain create --dist_name=myapp --bootstrap=sdl2 --requirements=kivy,numpy --arch armeabi-v7a --copy-libs --color=always --storage-dir=/home/kivy/Desktop/cam/.buildozer/android/platform/build
# 
# Buildozer failed to execute the last command
# The error might be hidden in the log above this error
# Please read the full log, and search for it before
# raising an issue with buildozer itself.
# In case of a bug report, please add a full log with log_level = 2
请注意,当我从python代码中删除“import numpy”并从buildozer.spec文件的需求列表中删除“numpy”时,我的代码得到了完美的打包。我在预装了Buildozer的VM虚拟机上运行这个


而且,这不仅仅是Numpy给了我这个问题——OpenCV给了我完全相同的错误。如果需要的话,我们会单独发布

这个问题在pythonforandroid(p4a)项目中有报道,但不知道它是稳定p4a的实际问题。然而,通过链接你可以找到。我没有测试它,但不同的人说它有效

您可以尝试使用此修复程序构建numpy,以下是您需要的:

  • 确保使用以下命令清除当前建筑过程中的所有剩余部分:

    buildozer distclean

  • 使用以下命令克隆具有修复的p4a分支:

    git克隆-b p4a\u numpy\u修复https://github.com/mahomahomaho/python-for-android 修复numpy

  • buildozer.spec
    更改为使用此克隆版本的p4a(使用实际路径):

    p4a.source\u dir=/home/ubuntu/p4a\u numpy\u fix


  • 然后再次运行building apk。如果一切正常,您将能够构建apk。如果没有,您将面临另一个错误,这里没有保证:(

    在第2步中,我收到以下消息:
    致命:在上游源中找不到远程分支p4a\u numpy\u修复程序
    您应该将第2步替换为
    git clonegit://github.com/kivy/python-for-android
    自2018年1月以来,因为@increment合并了您的分支。警告。此命令buildozer distclean将清除所有缓存工具,如SDK和NDK,以后下载会很累。您的解决方案运行良好,但存在另一个错误。您能否帮助我解决此问题“错误:'struct lconv'没有名为'decimal_point'的成员”
    title = My Application
    package.name = myapp
    package.domain = org.test
    source.dir = .
    source.include_exts = py,png,jpg,kv,atlas
    version = 1.0
    
    requirements = kivy,numpy
    
    orientation = portrait
    osx.kivy_version = 1.9.1
    fullscreen = 0
    android.api = 19
    android.sdk = 20
    android.ndk = 9c
    android.arch = armeabi-v7a
    log_level = 2
    warn_on_root = 1