用PHP编写代码的人会尽一切努力不切换到其他语言。 是的,我知道在Habré上较早时已有一种用PHP编写Android应用程序的方法 ,但已决定对其进行调整,以使其更快并与Java JPHP兼容。

关于JPHP
我想你可能有一个问题。 什么是JPHP? 答案就在哈布雷(Habré)上:
好吧,我们将继续。 自撰写这些有关JPHP的文章以来已经过去了四年,这种语言已经变得越来越好。 例如,有一个我们自己的jppm软件包管理器,我们今天也必须讨论。
一切如何开始
这一切始于我的朋友提出在JPHP上创建Android应用程序的想法。 我给了他一开始我们谈到的帖子,但是他不喜欢这种方法,因为它使用常规的PHP。 好吧,我们使用未知的JPHP语言编写的开发人员决定自己做所有事情。
浏览Internet之后,除了使用JavaFXPorts之外,我们找不到其他任何方法。 这种语言的创建者本人想将其用作JPHP的GUI引擎已有2年之久,而无需做任何事情。
俗话说“谁,但你呢?” ..我急于在全球范围内研究JPHP语言的工作。
前几周没有成功。 我已经为gradle编写了一个自动生成的生成脚本,apk可以正常运行,但是一切都很好,但是当我开始时,当时我不知道一个错误。 我立即意识到她是由于JPHP引起的,但是我以前从未见过这样的人。 现在我可以肯定地说这个错误是由于生成的字节码引起的。 DalvikVM corny无法运行为JVM生成的字节码。 那已经成为一个巨大的障碍。 由于JPHP应用程序中的PHP文件根本没有编译。 phb文件有一个选项,但这根本不能解决我们的问题。 唯一的方法是编写自己的编译器,该方法确实有效,但是带来了与include和eval相关的许多限制,谢谢,Dalvik。
经过多次尝试和错误,我仍然设法制作了第一个版本。 它的来源在这里 。 这个版本不是很快。 是的,在Android上使用JavaFX是一种假象。
因此,我决定从头开始重写所有内容。 我是最近才做出这个决定的。 因此,用于JPHP的库有点潮湿。 但这有效。
如何运作
一切都从jppm开始,将所有源和依赖项收集到一个jar文件中。 然后将所有php
文件编译成class
文件。 之后,根据gradle添加生成的jar文件。 然后,他将这些类文件编译为dex。 这是整个秘密。
启动应用程序更加复杂。 在AndroidManifest.xml
最初只有一个BootstrapActivity
可以加载所有JPHP。 加载后,可以从JPHP修改此BootstrapActivity
。 对于Activity
我创建了相同名称的类。
<? use php\android\app\Application; $bootstrapActivity = Application::getMainActivity();
使用此代码,您可以获得从中加载JPHP的BootstrapActivity
。
我认为您已经了解了JPHP加载程序的工作。
一个小例子
例如,为了创建最原始的答题器,您需要使用以下代码:
<? use php\android\app\Application; use php\android\widget\Button; Application::setMainActivityHandler(fn => {
结果,我们得到了一个带有按钮的简单应用程序:

结论
我认为没有人会对我的项目感兴趣。 由于尚未描述10%的Android API。 用PHP编写Android应用程序并不是一个经典。 但我认为该项目将吸引观众。
→ Github项目
→ Github JPHP
→ 在VK中分组