【问题标题】:How to use Android NDK to compile Numpy as .so?如何使用 Android NDK 将 Numpy 编译为 .so?
【发布时间】:2019-03-15 23:50:40
【问题描述】:

因为 Numpy 不是静态库(它包含 .py 文件、.pyc 文件、.so 文件等),所以如果我想将它导入到我在 Android 手机中使用的 python 代码中(使用CLE),我应该将库重新编译为 .so 文件。我发现如果我想使用 NDK 编译它,我应该有一个Application.mk 和一个Android.mk 文件。但我不知道如何创建这些文件。

如何编译 Numpy 库,或者任何人都可以给我一个有用的网站。

非常感谢。

【问题讨论】:

  • Pydroid 3 可以 pip 加载 numpy、scipy、matplotlib、scikit-learn 和 jupyter。
  • @hpaulj Pydroid 3 是一个运行 python 代码的应用程序。坦率地说,我想构建一个应用程序,而不仅仅是在 Android 手机中运行单个 python 代码。

标签: android python numpy android-ndk java-native-interface


【解决方案1】:

我应该有一个 Application.mk 和一个 Android.mk 文件。

这是较老的Android JNI编程方式,目前推荐的方式是使用CMake进行NDK开发。

如果您只是想要一个工作示例并在此基础上进行修改,那么您可以从这里找到一个:https://github.com/russell-shizhen/JniExample

我应该将库重新编译为 .so 文件

为了重新编译,你肯定需要它的源代码。如果没有源代码,您只能尝试链接那些现有的 static 库以形成您自己的.so 库。

【讨论】:

  • 好的,我会看到的。 Numpy是一个动态库,它包含了各种类型的文件,如何使用CMake编译它?
  • 我用 pip 安装了 Numpy,现在我可以得到它的文件夹了。是否包含源代码?
  • 这里是github上的Numpy源码repo,github.com/numpy/numpy,但是能不能在Android上顺利编译我就不知道了。
  • 以防万一,此链接可能对您的研究有所帮助:stackoverflow.com/questions/39533680/…github.com/termux/termux-packages/issues/1339
  • 我已经尝试了源代码,可以找到该模块,因为它只包含.py文件,但是发生错误:找不到属性“Array”。我猜源代码也应该编译,但是如果编译了,一些 .so 文件会中断我们导入 Numpy Lib。你知道怎么解决吗?
猜你喜欢
  • 1970-01-01
  • 2013-12-10
  • 1970-01-01
  • 2014-02-14
  • 2011-08-15
  • 2018-08-29
  • 2012-10-27
  • 1970-01-01
  • 2020-04-23
相关资源
最近更新 更多