原生函数(Native Functions)

NativePHP 内置自定义 PHP 扩展,深度打通移动端多平台能力,提供统一、高性能的跨平台抽象层,开发者可仅在单一环境开发,同时打包适配安卓、iOS 双端。

1 PHP 直接调用设备原生能力 无需切换开发语言,沿用 Laravel 开发习惯与开发效率,直接调用各平台专属硬件 / 系统功能。

2 插件体系封装原生能力 所有原生设备能力通过插件提供,插件内置 PHP 类,并配套 Laravel 门面(Facade),调用、单元测试更简便。

3 双端调用通道

  • 纯 PHP 层:直接调用原生 API,应用运行不依赖 WebView;
  • WebView 场景:JS 通过官方 #nativephp 库跨语言调用原生函数,适配 Vue/React 等 SPA 单页应用。

4 PHP / JS API 对齐 JS 接口与 PHP 接口设计高度统一,底层共用同一套 PHP 交互逻辑,两端 API 能力完全同步,无功能差异;文档会标注极少数两端不一致的接口。

5 TS 完整类型支持 JS 库自带类型定义,IDE 自动提示属性、方法,自带代码补全。

PHP 门面(Facade)

各类硬件、系统能力均通过命名空间 Native\Mobile\Facades 门面调用,每个门面对应独立插件

例如,如果你像调用指纹、打开当前设备内置的浏览器、调用相机拍照。

<?php
// 生物识别(指纹/面容)
use Native\Mobile\Facades\Biometrics;
// 系统内置浏览器
use Native\Mobile\Facades\Browser;
// 相机拍摄
use Native\Mobile\Facades\Camera;

// 示例:唤起生物识别验证
$success = Biometrics::authenticate('请验证身份以解锁');

// 示例:打开外部浏览器访问链接
Browser::open('https://laravel.com');

// 示例:调用相机拍照
$imagePath = Camera::capture();Code language: PHP (php)

上面三行是分别引入各自功能从门面(Facades),下面三条是调用的实例。

把上面代码复制到 例子项目中的php,如下是路径

D:\phpproject\myapp\resources\views\welcome.blade.phpD:\phpproject\my-app\resources\views\welcome.blade.php

cmd到 my-app的项目目录 然后用测试手机链接你的电脑,手机要开启调试模式。

php artisan native:runCode language: CSS (css)

native:jump:极速预览调试工具(日常开发首选,不用编译 APK/IPA)

native:run:完整原生打包编译(生成真实安装包,模拟上架环境)

读者也可以使用:php artisan native:jump 不打包

gradle 安装失败问题

gradle下载失败的问题

对于部分国家,可能会出现gradle下载失败的问题,如果您的网络也出现,可以通过其他途径下载gradle的zip包来解决。或者其他代理的方式来下载。

如果您的网络无法下载,可以使用下面的方式

解决办法

浏览器手动下载:https://services.gradle.org/distributions/gradle-8.13-bin.zip

Windows Gradle 缓存目录: C:\Users\你的用户名\.gradle\wrapper\dists\gradle-8.13-bin\一串随机字符\

把 zip 拷贝到该文件夹,不要解压,再执行打包命令。

JavaSDK错误

解决Java17错误

FAILURE: Build failed with an exception.

* Where:
Build file 'D:\phpproject\my-app\nativephp\android\app\build.gradle.kts' line: 1

* What went wrong:
An exception occurred applying plugin request [id: 'com.android.application']
> Failed to apply plugin 'com.android.internal.application'.
   > Android Gradle plugin requires Java 17 to run. You are currently using Java 11.
      Your current JDK is located in C:\Program Files\Zulu\zulu-11
      You can try some of the following options:
       - changing the IDE settings.
       - changing the JAVA_HOME environment variable.
       - changing `org.gradle.java.home` in `gradle.properties`.

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.

BUILD FAILED in 4m 41s
 Build failed.

 Check the build log for details: D:\phpproject\my-app\nativephp\android-build.logCode language: JavaScript (javascript)

nativephp需要java 17,如果您的版本不对,可能会出现以上的错误

请重新安装java 17.如果你使用的是zulu的,下载地址:https://www.azul.com/downloads/?version=java-17-lts&os=windows&architecture=x86_64&package=msi

安装后 打开安装目录,通常是:C:\Program Files\Zulu\zulu-17

然后配置到你的项目里面,打开文件:nativephp/android/gradle.properties

在文件最后添加这一行(路径按你实际安装目录填写)

配置后,再次执行php artisan native:run

Android SDK错误

Android SDK错误

* What went wrong:
A problem occurred configuring project ':app'.
> SDK location not found. Define a valid SDK location with an ANDROID_HOME environment variable or 
by setting the sdk.dir path in your project's local properties file at 'D:\phpproject\my-app\nativephp\android\local.properties'.

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.

BUILD FAILED in 33s
 Build failed.

 Check the build log for details: D:\phpproject\my-app\nativephp\android-build.logCode language: PHP (php)

修改项目内 local.properties

进入目录:D:\phpproject\my-app\nativephp\android\ (你自己的项目)如果没有 local.properties,新建这个文件;有就直接打开编辑

# 替换成你自己真实的SDK路径
sdk.dir=C:\\Users\\[你的用户名]\\AppData\\Local\\Android\\SdkCode language: PHP (php)
二维码手机链接

使用 php artisan native:jump

上面输入命令后,由于作者是双网卡的,所以需要选择IP,如果读者环境部署这样,应该不需要出现选择ip,如果您同样情况,则需要复制两个IP中的一个,然后才会出现二维码的。否则会一直等待你输入。

然后用手机扫码

电脑、手机连同一个 WiFi

或者不扫码,发送url给你的手机,手机要和电脑同一个wifi

http://192.168.124.82:3000/jump/qr

如果你只有一个wifi,只有一张网卡的时候,不需要选择IP

需要在防火墙中开启端口3000

访问上面链接如果出现下面图片,则表示你需要安装Jump这个APP

手机浏览器打开 https://bifrost.nativephp.com/jump 下载安装 Jump App;

Jump(全称 Bifrost Jump)是 NativePHP 官方推出的移动端通用调试 App,专门为了方便调试:不用编译、不用打包 APK,手机直接运行本地电脑上的 Laravel Mobile 项目

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注