Skip to content

开发

开发 NativePHP 应用可以在浏览器中完成,使用你已经熟悉的工作流程。

这允许你快速迭代 UI 和主要功能等部分,甚至可以使用你喜欢的测试工具等。

但当你想测试_原生_功能时,你必须在真实或模拟设备上运行应用。

无论你在模拟器还是真实设备上运行原生应用,更改后都需要重新编译。

平台

我们非常努力地确保你的应用在两个平台上几乎完全相同地运行——除了明显的平台差异。在大多数情况下,你应该可以在不考虑应用运行平台的情况下进行构建,但如果需要,你可以使用以下辅助方法检查:

php
use Native\Mobile\Facades\System;

System::isIos() // -> 在 iOS 上返回 `true` 
System::isAndroid() // -> 在 Android 上返回 `true`

构建前端

如果你使用 Vite 或类似工具来构建 UI 的任何部分(例如 React/Vue、Tailwind 等),你需要在编译应用_之前_运行资源构建命令。

为了方便开发,你应该安装 nativephpMobile Vite 插件。

nativephpMobile Vite 插件

要使前端构建过程与 NativePHP 良好配合,只需将 nativephpMobile 插件添加到你的 vite.config.js

js
import { nativephpMobile, nativephpHotFile } from './vendor/nativephp/mobile/resources/js/vite-plugin.js'; // [tl! focus]

export default defineConfig({
    plugins: [
        laravel({
            input: ['resources/css/app.css', 'resources/js/app.js'],
            refresh: true,
            hotFile: nativephpHotFile(), // [tl! focus]
        }),
        tailwindcss(),
        nativephpMobile(), // [tl! focus]
    ]
});

完成后,你需要在为每个平台创建构建时调整 Vite 构建命令——只需添加 --mode=[ios|android] 选项。在为每个平台编译应用之前依次运行:

shell
npm run build -- --mode=ios

npm run build -- --mode=android

编译应用

要编译和运行应用,只需运行:

shell
php artisan native:run

这个命令处理所有事情,允许你运行应用的新构建版本,而无需学习任何新的编辑器或平台特定工具。

经验法则

在开发期间,保持 NATIVEPHP_APP_VERSION=DEBUG 以始终刷新原生应用内的 Laravel 应用程序。你的应用启动会稍慢,但你会发现一切都如你所期望的那样。

这比花一个小时挠头想弄清楚为什么你的更改没有显示要好得多!

使用 Xcode 或 Android Studio

有时,从目标平台的专用开发工具(Android Studio 和 Xcode)内部编译应用是很有用的。

如果你熟悉这些工具,可以使用以下 Artisan 命令轻松打开项目:

shell
php artisan native:open

配置

你可以在 config/nativephp.php 文件中配置 watch 命令关注的文件夹:

php
'hot_reload' => [
    'watch_paths' => [
        'app',
        'routes',
        'config',
        'database',
        // 确保 "public" 列在你的配置中 [tl! highlight:1]
        'public',  
    ],
]

跳过提示

如果你厌倦了提示,你可以使用参数和选项运行大多数命令——如 native:run——来跳过各种提示。在命令上使用 --help 标志来了解可以直接传递给它的值:

shell
php artisan native:run --help

热重载

我们已经尽力使编译应用尽可能快,但对于来自我们都喜欢的典型基于浏览器的 PHP 开发的"做出更改;刷新"世界的开发者来说,编译应用可能感觉是一个缓慢且耗时的过程。

热重载旨在使你的应用开发体验感觉像在家一样。

你可以通过运行以下命令启动热重载:

shell
php artisan native:watch

🔥 热门提示!

你也可以将 --watch 选项传递给 native:run 命令。这将构建并部署应用的新版本到目标设备,_然后_启动监视器,一步完成。

这将启动一个长期运行的进程,监视应用程序的源文件更改,在任何更新后将它们推送到模拟器并重新加载当前屏幕。

如果你使用 Vite,我们还会使用你选择的 Node CLI 工具(npmbunpnpmyarn)来运行 Vite 的 HMR 服务器。

启用 HMR

要使 HMR 工作,你需要在 vite.config.js 中将 hot 文件助手添加到 laravel 插件的配置中:

js
import { nativephpMobile, nativephpHotFile } from './vendor/nativephp/mobile/resources/js/vite-plugin.js'; // [tl! focus]

export default defineConfig({
    plugins: [
        laravel({
            input: ['resources/css/app.css', 'resources/js/app.js'],
            refresh: true,
            hotFile: nativephpHotFile(), // [tl! focus]
        }),
        tailwindcss(),
        nativephpMobile(),
    ]
});

注意: 在真实设备上测试时,热重载与运行在开发机器上的 Vite 服务器通信。为此,确保测试设备连接到与开发机器相同的 Wi-Fi 网络。

同时运行两个!

如果你在 macOS 上开发,你可以在单独的终端中同时运行 Android 和 iOS 监视器:

shell
# 终端 1
php artisan native:watch ios

# 终端 2
php artisan native:watch android

这样你可以同时在两个平台上实时看到你的更改。太棒了。

这在开发期间非常有用,可以快速测试更改而无需重新编译整个应用。当你对 Laravel 应用中的任何文件进行更改时,Web 视图将重新加载,你的更改应该几乎立即显示。

Vite HMR 非常适合使用 Vue 或 React 等 SPA 框架构建 UI 的应用。它甚至可以在真实设备上工作,而不仅仅是模拟器!只要设备与开发机器在同一网络上。

不要忘记将 public/ios-hotpublic/android-hot 添加到你的 .gitignore 文件中!

真实 iOS 设备支持

完整的热重载支持在模拟器上效果最好。真实 iOS 设备上非 JS 更改的完整热重载支持尚不可用。

Laravel Boost

NativePHP for Mobile 支持 Laravel Boost,它旨在通过提供 AI 生成高质量、Laravel 特定代码所需的基本上下文和结构来加速 AI 辅助开发。

安装 nativephp/mobilelaravel/boost 后,只需运行 php artisan boost:install 并按照提示为 Laravel Boost 激活 NativePHP!

基于 NativePHP 官方文档翻译