开发
开发 NativePHP 应用可以在浏览器中完成,使用你已经熟悉的工作流程。
这允许你快速迭代 UI 和主要功能等部分,甚至可以使用你喜欢的测试工具等。
但当你想测试_原生_功能时,你必须在真实或模拟设备上运行应用。
无论你在模拟器还是真实设备上运行原生应用,更改后都需要重新编译。
平台
我们非常努力地确保你的应用在两个平台上几乎完全相同地运行——除了明显的平台差异。在大多数情况下,你应该可以在不考虑应用运行平台的情况下进行构建,但如果需要,你可以使用以下辅助方法检查:
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:
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] 选项。在为每个平台编译应用之前依次运行:
npm run build -- --mode=ios
npm run build -- --mode=android编译应用
要编译和运行应用,只需运行:
php artisan native:run这个命令处理所有事情,允许你运行应用的新构建版本,而无需学习任何新的编辑器或平台特定工具。
经验法则
在开发期间,保持 NATIVEPHP_APP_VERSION=DEBUG 以始终刷新原生应用内的 Laravel 应用程序。你的应用启动会稍慢,但你会发现一切都如你所期望的那样。
这比花一个小时挠头想弄清楚为什么你的更改没有显示要好得多!
使用 Xcode 或 Android Studio
有时,从目标平台的专用开发工具(Android Studio 和 Xcode)内部编译应用是很有用的。
如果你熟悉这些工具,可以使用以下 Artisan 命令轻松打开项目:
php artisan native:open配置
你可以在 config/nativephp.php 文件中配置 watch 命令关注的文件夹:
'hot_reload' => [
'watch_paths' => [
'app',
'routes',
'config',
'database',
// 确保 "public" 列在你的配置中 [tl! highlight:1]
'public',
],
]跳过提示
如果你厌倦了提示,你可以使用参数和选项运行大多数命令——如 native:run——来跳过各种提示。在命令上使用 --help 标志来了解可以直接传递给它的值:
php artisan native:run --help热重载
我们已经尽力使编译应用尽可能快,但对于来自我们都喜欢的典型基于浏览器的 PHP 开发的"做出更改;刷新"世界的开发者来说,编译应用可能感觉是一个缓慢且耗时的过程。
热重载旨在使你的应用开发体验感觉像在家一样。
你可以通过运行以下命令启动热重载:
php artisan native:watch🔥 热门提示!
你也可以将 --watch 选项传递给 native:run 命令。这将构建并部署应用的新版本到目标设备,_然后_启动监视器,一步完成。
这将启动一个长期运行的进程,监视应用程序的源文件更改,在任何更新后将它们推送到模拟器并重新加载当前屏幕。
如果你使用 Vite,我们还会使用你选择的 Node CLI 工具(npm、bun、pnpm 或 yarn)来运行 Vite 的 HMR 服务器。
启用 HMR
要使 HMR 工作,你需要在 vite.config.js 中将 hot 文件助手添加到 laravel 插件的配置中:
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 监视器:
# 终端 1
php artisan native:watch ios
# 终端 2
php artisan native:watch android这样你可以同时在两个平台上实时看到你的更改。太棒了。
这在开发期间非常有用,可以快速测试更改而无需重新编译整个应用。当你对 Laravel 应用中的任何文件进行更改时,Web 视图将重新加载,你的更改应该几乎立即显示。
Vite HMR 非常适合使用 Vue 或 React 等 SPA 框架构建 UI 的应用。它甚至可以在真实设备上工作,而不仅仅是模拟器!只要设备与开发机器在同一网络上。
不要忘记将 public/ios-hot 和 public/android-hot 添加到你的 .gitignore 文件中!
真实 iOS 设备支持
完整的热重载支持在模拟器上效果最好。真实 iOS 设备上非 JS 更改的完整热重载支持尚不可用。
Laravel Boost
NativePHP for Mobile 支持 Laravel Boost,它旨在通过提供 AI 生成高质量、Laravel 特定代码所需的基本上下文和结构来加速 AI 辅助开发。
安装 nativephp/mobile 和 laravel/boost 后,只需运行 php artisan boost:install 并按照提示为 Laravel Boost 激活 NativePHP!