Android和Python

时间:2011-11-03 12:53:32

标签: android python sl4a

我可以使用SL4A或ASE在Android上移植现有的python脚本吗?我特别想要做的是创建一个具有普通UI元素的android应用程序,并从应用程序本身运行python脚本,获取输出并显示它。这可能吗 ?

4 个答案:

答案 0 :(得分:2)

Personnaly我认为你暗中提出了三点:

兼容性桌面/移动

首先是手机上的python库与计算机中的python库之间的兼容性。如果您不使用第三方库并确保包含sl4a提供的额外 python库,您通常应该没问题。

包装

第二点是关于如何为Android安装Python应用程序。可以使用sl4a网站上描述的包装器轻松完成。事实上,他们分发了一本关于SL4A的书的章节副本,该书描述了如何做到这一点。所以这是可能的,但请记住,如果用户尚未安装python,则需要安装python(这是在应用程序启动时的一种警报)

UI

您应该考虑的第三件事是,您不能100%免费使用sl4a可以使用的小部件/布局。也就是说,你无法在Java或Scala中做任何你能做的事情。因此,你可能不得不考虑改变你的用户界面并改为使用框架获取“移动外观和感觉”来进行webview(可以与python进行来回通信)

希望这会有所帮助。

答案 1 :(得分:0)

我想,你想做的是制作一个独立的apk文件,其中包括python解释和你的脚本代码。

我不知道这是否可以在Android中完成。我所知道的唯一一个是从Android Scripting Environment运行你的脚本。

答案 2 :(得分:0)

如果网络界面是普通用户界面,请查看此讨论http://groups.google.com/group/android-scripting/browse_thread/thread/f86812549d2686e2/f828f916411d7a95。您可以使用Python,webView,HTML5和JavaScript

答案 3 :(得分:0)

我遇到了类似的问题,最后通过在Java中编写一个小的单例类来解决它,该类在使用java.lang.ProcessBuilder创建的子进程中运行SL4A安装中的Python-4-Android二进制文件。所以我根本没有使用SL4A机制(触发器,上传等),只是借用Python。

这似乎比尝试通过SL4A启动并连接到Python进程更简洁。

这是Python 2.7.1,交叉编译来自Mac OS X Snow Leopard的扩展。我的Python模块只进行文本输入和输出,接受套接字连接等。不与Android API交互。一切正常:将Java流写入Python输入并读取Java流以获取Python输出。使用P4A instructions构建C扩展。 (在添加

之前,Android无法找到.so dynalibs
[build_ext]
inplace=1
在构建期间

到setup.cfg。我认为这是因为在Android上永远不会调用setup'install'。我只是推着adb。

所有活动生命周期状态似乎都有效,但我还不能确定子进程是否在主进程处于停止状态时自动挂起。

如果感兴趣,我可以在几周内发布代码。 (只是去度假。)

我的打包计划是将Python代码的ZIP存档放在/ assets中,并在第一次onCreate期间解压缩应用程序。我还没有实现这个,但我不希望有任何问题。