PilBox-在PicoLisp中构建Android应用(2019年)

2020-09-28 01:19:33

在没有Android SDK PilBox(";PicoLisp Box";)的PicoLisp中构建您的应用程序是一个通用的Android应用程序,它允许编写不纯PicoLisp的应用程序,不需要Java,也不需要Android SDK。您不需要对设备进行根操作。而且-如果您愿意-您不需要单独的开发机器(PC或笔记本电脑):所有这些都可以在设备上的终端上完成,甚至可以在应用程序运行时在Lisp REPL中完成。注:PilBox需要Android>;=5.0!它预装了用于ARM64的PicoLisp二进制文件。如果您的设备有ARM32CPU,您可以-在安装PilBox App之后但在启动之前-下载并安装仿真器版本https://software-lab.de/arm32.zip.If这是不小心完成的,您可以使用https://software-lab.de/arm64.zip.恢复到ARM64二进制文件。PilBox应用程序本身(称为PilBox内核)是用Java编写的,这是一种常见的Android方式。它显示WebView GUI,并启动为ARM64CPU编译的PicoLisp二进制文件。这个二进制文件现在可以运行任何PicoLisp程序,方法是设置WebView组件连接到的本地Web服务器,可能打开一个数据库,然后执行任何所需的操作。PilBox内核提供了一个到Android Java运行时环境的接口,对于PicoLisp代码来说,它看起来像一个远程数据库,Java对象被映射到PicoLisp DB对象,Java函数和方法通过远程过程调用执行。如果在启动时将ZIP文件传递给PilBox内核,则会将其解压缩,并可能覆盖或扩展已安装的任何内容。这通常是通过单击下载的ZIP或通过从其他应用程序共享ZIP来完成的。然后,它在App的工作目录中查找文件";App.l&34;,加载该文件,并侦听在文件";Port&34;中找到的端口号。开箱即用的";port";is8081,";App.l&34;是一个元应用程序,它为管理通过ZIP机制安装的应用程序提供了一个方便的运行时环境。你可以从Google play商店下载PilBox App,也可以直接从https://software-lab.de/pilBox.apk.获取。在后一种情况下,您可能需要在设置中启用";未知源";。要尝试本文中的示例,请下载这些文件:pilBox.apk包含PilBox内核App作为APK(";Android包";),ZIP文件是小型演示应用程序。然后转到应用程序->;PilBox->;权限并启用";位置&34;和";存储";。最初,当没有任何ZIP文件启动时,PilBox内核会显示一个空白屏幕,左上角有PicoLisp徽标,右上角有一个设置图标(屏幕截图是在平板电脑上拍摄的,所以在手机上,比例可能会有所不同):如果你点击左边的PicoLisp徽标,它会打开一个REPL(Read-Eval-PrintLoop)-一种进入应用程序的终端窗口:REPL让你可以控制应用程序的许多方面。它有一个用于显示结果和编辑文本的大文本字段,底部有一个用于命令输入的单行文本字段,以及三个按钮";Eval";、";Edit";和";ClearCache";。主要目的是输入命令,并在文本区中查看它们的结果。由于Eval&34;按钮是页面上的第一个按钮,因此如果您在键入命令时按Enter键,它将被隐式激活。作为特例,如果命令以美元符号开头:它被视为Shell命令,这里是ls-l,并在文本区域中显示清单:否则(不是以美元符号开头),命令行将被计算为Lisp表达式。例如,键入(pp';gps)后,我们会看到:如果您在命令行中键入文件或路径名(如App.l),然后按";编辑&34;按钮,则该文件将在文本区域中打开并可以进行编辑:按";完成&34;按钮可再次关闭该文件。清除缓存按钮可使WebView缓存失效,并且在更改App的CSS文件后非常有用。轻触PicoLisp徽标会将您带回开始屏幕。通常,您不会在REPL中编辑App的源代码,而是使用Vim或emacs在Termux等终端程序中编辑它们,并将它们作为Azip文件传递给PilBox,如下所述。如果您轻触开始屏幕右侧的设置图标,则会打开默认设置页面。最初它显示两个选项卡,一个包含所有标准的PicoLisp本地化,另一个列出已安装的Pils(PicoLisp Apps):最初列表是空的。REPL行为和默认设置页面通常会被已安装的应用程序覆盖,并且仅在开始屏幕上可用。除了在REPL中探索AppEnvironment之外,空的PilBox内核并不是很有用。要安装您自己的应用程序,请准备一个ZIP文件,其中包含文件App.l是必需的,并且加载该文件后才能启动应用程序。如果其中一个*.l文件名为settings.l,则它会在此应用程序运行时覆盖这些设置图标的行为