python可以构建android应用程序吗?

Posted

技术标签:

【中文标题】python可以构建android应用程序吗?【英文标题】:Can python build android apps? 【发布时间】:2015-08-08 12:42:44 【问题描述】:

我正在学习 python,我不知道如果我想制作 android 应用程序对我有帮助。我在某处读过 python 可以制作 android 应用程序。但我想问你这是一个很好的选项,或者我们应该始终使用 andriod studio 来制作 android 应用程序,因为它是专门为创建 android 应用程序而开发的。

【问题讨论】:

如果您想头痛,请确保有很多包装器和有限的帮助。选择 Android Studio + Java。 【参考方案1】:

我是 Kivy 的核心开发人员,在其他一些答案中已经提到过。我认为这是你为安卓制作python应用程序的主要选择,它既有优点也有缺点。

主要的技术缺点是(在我看来,我认为我看到人们提出的主要问题):

启动速度:如果应用程序尚未运行,则启动 python 解释器需要很短的时间,在旧设备上最多需要几秒钟(如果你的代码很糟糕,则需要更长的时间,但这是可以避免的),在此期间会显示加载屏幕。

缺乏原生外观:Kivy 是其自己的基于 opengl 的图形框架,因此它看起来不像默认的 android 应用程序(它是可定制的,但仍然很难完美模拟类似的东西)

APK大小:因为要打包python解释器,所以最小的apk大小约为7MB。

还有其他潜在的缺点,例如标准的非 java 问题,当它发生变化时必须赶上 android api,但我认为这些更小问题,例如在这种情况下,因为您实际上可以使用 pyjnius 直接从 python 调用大部分 java api。我有一个关于这个的blog post。另一个问题是,kivy 的社区与 java 应用社区相比规模较小,但也很活跃。

对于某些人来说,其中一项或多项是使用 Kivy 的直接或最终障碍。对于其他人来说,它们并不重要或被优势压倒,出于这些原因,有些人在 Android(和 ios)上商业使用 Kivy。就我个人而言,我最感兴趣的是“我写了一个简单的脚本”和“我做了一个很棒的 android 应用程序”之间的广阔空间,因为我认为将简单的东西捆绑为简单的应用程序应该比现在更容易,但那是只是我自己使用 kivy 的原因。

【讨论】:

是否可以在android设备上使用sklearn、signal等库来使用kivy处理传感器数据? 纯 python 库通常应该可以正常工作。具有已编译组件的库(例如 sklearn)需要编译配方 - 我们的构建工具(python-for-android)已经包含其中许多,因此您可以使用例如numpy,但 sklearn 目前不可用这种方式。让它工作是可能的,但为这样的复杂模块制作配方也可能很棘手。对于传感器数据,Kivy 可以通过 python 和 pyjnius 广泛访问 java api。 Kivy处于什么发展阶段?我最近在某处读到它仍在 alpha 开发中。 @LabGecko Kivy 已全面发布并积极开发,并已持续多年。【参考方案2】:

如果问题是,我可以在 android 上运行 python 程序,那么肯定可以。 但是,如果目的是创建一个移动应用程序 usibg python,那么请查看尚未支持 python 3 的 kivy。 但是除了对python的热爱之外,最好还是坚持使用android studio来开发原生的android应用。

【讨论】:

【参考方案3】:

Chaquopy (https://chaquo.com/chaquopy/) 是 Android 上 Python 的一个选项。它是适用于 Android Studio 的插件,因此可以兼具两全其美 - 使用 Android Studio 界面和 Gradle,并使用 Python 编写代码。

来自 Chaquopy 页面:

使用 Python API ,您可以部分或全部使用 Python 编写应用程序。您可以直接使用完整的 Android API 和用户界面工具包。

对 Chaquopy 的深入评论位于 http://blog.codelv.com/2018/02/a-look-at-chaquopy-python-sdk-for.html

Chaquopy 的创建者也这样评论了该评论:

我认为在 Android 上使用 Python 有许多不同的方法。 Chaquopy 专注于提供对标准 Android API 和构建工具的所有功能的完全访问权限。 (例如,您提到的 XML 布局文件是使用 Android Studio 的 WYSIWYG 编辑器生成的:它不必手动编写。)但是如果您想要更多 Pythonic 或可移植到其他平台,那么 enaml-native 或 Kivy是要走的路。

CAVEAT:我还没有(还)亲自测试过,所以我无法验证它的效果如何。比较复杂。

附加:运行 5 分钟以上似乎需要许可证密钥并且需要付款。如果你决定开发开源,有一个开源许可证"will always be free of charge."

【讨论】:

【参考方案4】:

试试kivyhttps://github.com/kivy/python-for-android

可用于创建安卓应用。

【讨论】:

【参考方案5】:

Android 不附带 Python 解释器。因此,如果您想分发一个用 Python 编写的应用程序,则必须将 Python 解释器与它捆绑在一起。换句话说,甚至是“Hello World!”应用程序将是巨大的。

所以是的,it's possible。但不推荐。

【讨论】:

就上下文而言,“巨大”大约为 7MB,尽管这并非全部必要,还可以降低。【参考方案6】:

是的,您可以使用 1-基维图书馆 2-在多功能机器上安装 Ubuntu 3- 运行 buildozer 将您的 main.py 文件转换为 APK 文件

【讨论】:

以上是关于python可以构建android应用程序吗?的主要内容,如果未能解决你的问题,请参考以下文章

Create an Android library

Jenkins Android Build Error: FAILURE: Build failed with an exception

我可以针对较新的 android SDK 构建而不排除旧手机的所有者吗?

你能在 Ubuntu 上构建 React Native 应用程序(Android 应用程序)吗?

我可以在没有任何服务器端代码的情况下构建一个非常简单的支持 Google Cloud Messaging 的 Android 应用程序吗?

我们可以使用 React 为 Android 和 Web 构建软件吗? [关闭]