泡泡包装 CLI
Bubblewrap 是帮助开发者创建的命令行界面( CLI) a Android应用项目,使用 受托网络活动(TWA)。 。 。 .
所需资源
- 节点.js 18.0.0或以上(含)
建立环境
当首次运行 Bubblewrap 时, 它会自动下载和安装 外部依赖性。 这是推荐的设置,但有可能 手动设置环境。 。 。 .
集装箱
作为直接用节点(Node.js)运行您机器上的cli的替代方案,您可以使用此功能
预装了 Cli 和所有依赖性 。 使用 CL 运行
docker run --rm -ti ghcr.io/googlechromelabs/bubblewrap:latest [cmd] 就像你平常一样
使用情况 bubblewrap [cmd]。 。 。 .
快速启动指南
安装泡泡包装
npm i -g @bubblewrap/cli
: 警告: 警告: 别用 sudo npm i -g @bubblewrap/cli 安装泡泡包装。 使用 npm 命令为 sudo
应避免造成不同种类的问题(见e/cn.4/sub.2/2000/l.48)
这里 财务报告和审定财务报表
这里) (中文(简体) ).
启动一个 Android 项目
从已有的 Web 声明生成一个 Android 项目:
bubblewrap init --manifest https://my-twa.com/manifest.json
当启动项目时, Bubblewrap 将下载《网络宣言》, 请您确认 用于构建Android工程的数值.
它还会要求您提供生成签名密钥所需的细节,用于签名 在上传到 Play Store 之前应用 .
:grey exclaim:尽管我们推荐了 Bubblewrap 用于建造和生成一个签名 APK, 来自
init命令是一个正常的Android工程,可以打开 并使用 Android 工作室请参考 文档 用于构建和签名 使用Android Studio的应用程序.
建造Android项目
bubblewrap build
在首次构建项目时,需要安装Android Build Tools.
该工具将引用构建工具的安装过程. 确保阅读和接受
许可协议在程序前。 此进程将在 directory/decompressed android CLI 软件包的根目录.
由于建设步骤,该工具将生成一个签名APK(app-release-signed.apk(中文(简体) )
用于测试应用程序和已签名的 AppBundle(./app-release-bundle.aab这可以是 上传到游戏存储器。您还需要向
验证您的域 。 这个
TWA 快速启动指南
解释如何提取生成信息所需的信息.
图标
上图显示(在黑框中)哪些命令作为输入或输出各种文件(以白色椭圆)而产生. 指向文件的箭头指"创建或修改",指向命令的箭头指"被用做输入".
init
用法 :
从网络宣言中初始化一个信任的网络活动Android项目. 输入脚本 分析 Web 显示并生成Android 项目的默认值。 这个 将提示用户确认或输入无法生成的值.
bubblewrap init --manifest="<web-manifest-url>" [--directory="<path-to-output-location>"] [--chromeosonly] [--metaquest]
选项 :
--directory: 生成工程的路径。 当前目录的默认值 .--chromeosonly:此旗下指定了只用于Chrome OS的构建,并阻止非Chrome OS设备安装应用.--metaquest: 此旗帜指定构建将兼容Meta Quest设备.--alphaDependencies: 启用依赖于即将到来的Android 库版本的特性 用于信任的网络活动或仍然不稳定的网络活动.
build
将项目构建为最终的APK,可以上传到Play Store.
命令会向用户询问它们存储密钥密码. 或者,用户可以设置
密码为 environtic 变量, 允许运行 build 作为持续整合的一部分.
设定 BUBBLEWRAP_KEYSTORE_PASSWORD 密钥存储密码和 BUBBLEWRAP_KEY_PASSWORD 作为密钥密码.
用法 :
bubblewrap build [--skipPwaValidation] [--skipSigning] [--manifest="<path-twa-manifest>"] [--signingKeyPath="<path-to-signing-key>"] [--signingKeyAlias="<key-alias>"]
选项 :
--skipPwaValidation:跳过将包裹的PWA与质量标准进行验证.--skipSigning:跳过已建APK和App Bundle的签名. 其他与签名相关的旗帜在使用时会被忽略.--signingKeyPath: 用于签名已建APK和App Bundle的密钥托尔路径 。 覆盖签名 Key. path 指定于twa-manifest.json。 。 。 .--signingKeyAlias: 键名. 签名twa-manifest.json。 。 。 .--manifest: 客户端应当查找的目录twa-manifest.json。 。 。 .
update
重生成 Android 项目文件 twa-manifest.json 文档.
: 警告: 警告: Bubblewrap不期望生成的Android项目会使用
外出编辑. 手动添加到Android项目的任何文件将被删除或覆盖
何时 update 执行。 变动至 twa-manifest.json 被保留下来.
用法 :
bubblewrap update [--appVersionName="<version-string>"] [--skipVersionUpgrade] [--manifest="<path-twa-manifest>"]
选项 :
--appVersionName: 升级时使用版本名. 如果--skipVersionUpgrade已使用.--skipVersionUpgrade: 跳过升级appVersion财务报告和审定财务报表appVersionCode。 。 。 .--manifest: 客户端应当查找的目录twa-manifest.json。 。 。 .
validate
验证PWA再次验证在信任的网络活动中使用的质量标准.
用法 :
bubblewrap validate --url=[pwa-url]
install
将输出命令中生成的应用程序安装到连接用于调试的设备上 .
用法 :
bubblewrap install [--apkFile="/path-to-apk/apkfile.apk"]
选项 :
--apkFile:要安装的APK文件路径. 默认为./app-release-signed.apk。 。 。 .--verbose:打印正在执行的adb命令.
help
显示命令和选项列表.
用法 :
bubblewrap help
doctor
验证 jdk 和 AndroidSdk 位于您配置指定的路径 他们必定是遵循正道的.
用法 :
bubblewrap doctor
updateConfig
设置 jdk 或 AndroidSdk 到给定路径的路径 .
用法 :
bubblewrap updateConfig --jdkPath="/path-to-jdk" --androidSdkPath="/path-to-androidSdk"
选项 :
--jdkPath:设置jdk路径到给定路径.--androidSdkPath:设置AndroidSdk给定的路径.
merge
将用户的网络显示合并到他们的twaManifest.json.
用法 :
bubblewrap merge --ignore [fields-list]
选项 :
--appVersionName: 升级时使用版本名. 如果--skipVersionUpgrade已使用.--skipVersionUpgrade: 跳过升级appVersion财务报告和审定财务报表appVersionCode。 。 。 .--ignore:忽略列表中的所有字段。 接受所有可能字段 在《网络宣言》中.
fingerprint
管理用于生成用于网络应用程序的数字资产链接文件的指纹列表.
用法 :
bubblewrap fingerprint [subcommand]
全球旗帜 :
--manifest=<manifest>: 信任的网络活动配置路径 。',
子命令 :
add
在工程配置中添加指纹.
用法 :
bubblewrap fingerprint add [SHA-256 fingerprint] <flags>
其它旗帜 :
--name=<name>:可选设置名来帮助识别指纹. 名字已经打印 与指纹一起使用list子命令 .
remove
从工程配置中删除指纹.
用法 :
bubblewrap fingerprint remove [SHA-256 fingerprint] <flags>
list
列出项目配置中的指纹.
用法 :
bubblewrap fingerprint list <flags>
generateAssetLinks
从工程配置生成一个资产链接文件
用法 :
bubblewrap fingerprint generateAssetLinks <flags>
旗帜 :
--output=<filename>: 从何处装入工程配置的路径.
play
管理您的 Google 游戏项目的文物 .
用法 :
bubblewrap play [subcommand]
说明数字 : 这些功能需要有一个服务账户文件才能正确工作. 请看 此文档 设立服务账户.
全局旗 (可以适用于所有特性命令):
--serviceAccountFile: 将服务账户json文件位置设置在 twa - manifest 中 .--manifest: 指定当前目录中未使用的显示文件.
子命令
publish
向 Play Store 提供捆绑的发布 .
用法 :
bubblewrap play publish --serviceAccountFile="/path/to/service/account.json" --track="beta" --appBundleLocation="/home/appBundle.aab"
选项 :
--track: 将预建文件发布到 Google Play Store 指定音轨(默认为内部音轨).--appBundleLocation:指定上传到Google Play的应用程序位置(默认为当前目录).
retain
:警告:这是一个实验性特征.
用法 :
bubblewrap play retain --add=86
选项 :
--add:指定要保存的捆绑以放出(如果只放出一款Chrome OS,这只能是Android捆绑).--remove: 如果不再相关, 删除指定的捆绑 .--list:在 twa-manifest.json 中显示已保留捆绑的列表,而非从游戏中保留的内容.
versionCheck
用法 :
bubblewrap play versionCheck --serviceAccountFile="/path/to/service/account.json" --targetDirectory="/home/my/app/dir"
选项 :
--targetDirectory: 版本检查应运行的目录(默认为当前目录)。 这应该是你的气泡包工程目录.
twa-manifest.json 参考文献
这个 twa-manifest.json 文件以 init 已昏迷并包含配置
安卓应用.
运行后想要更改应用程序配置的开发者 init 可以通过
编辑此文件然后运行 update 命令.
字段 :
| 名称 | 类型 | 需求 | 说明 |
|---|---|---|---|
| 额外信任的奥里金斯 | 字符串 [] | 虚假 | 由开发商拥有并被"数字资产链接"验证的额外起源列表. 用户在浏览应用程序内部的出处时会保持全屏模式. |
| 字母 | 阿尔法依赖 | 虚假 | 允许Android应用程序使用依赖性的α版本. 默认为 false。 。 。 . |
| 应用程序 | 字符串 | 虚假 | versionName android应用软件。 检查 Android 文档 详细情况. |
| 应用程序代码 | 编号 | 虚假 | versionCode android应用软件。 检查 Android 文档 详细情况. |
| 背景颜色 | 字符串 | 真实 | 喷出屏幕背景所用的颜色 . |
| 显示 | 'standalone' | 'fullscreen' | 'fullscreen-sticky' | 虚假 | 初始数据 显示模式 android应用软件. fullscreen-sticky 对应于Android的: 隐形粘贴默认为 standalone。 。 。 . |
| 启用通知 | 布尔 | 真实 | 设定为 true 允许通知代表团. |
| 启用SiteSettingsShortcut | 布尔 | 虚假 | 向应用程序启动器中的站点设置添加快捷键。 默认为 true。 。 。 . |
| 倒置类型 | 'customtabs' | 'webview' | 虚假 | 当用户设备上没有支持信任的Web活动的浏览器时使用的倒置策略. 默认为 'customtabs'。 。 。 . |
| 特性 | 特征 | 虚假 | 启用Android应用程序中的可选特性。 读取 特征 详细情况. |
| 指纹 | 指纹[ | 虚假 | 用于生成"数字资产链接"文件的指纹列表. 读取 指纹 详细情况. |
| 生成器App | 字符串 | 虚假 | 用于生成Android项目的工具的标识符 。 泡泡包装的使用 bubblewrap-cli。只能由生成程序修改. |
| 东道主 | 字符串 | 真实 | 将在信任的网络活动中打开的源 . |
| 图标Url | 字符串 | 真实 | 应用程序启动器和喷出屏幕所用的图标的完整 URL 。 必须是至少512x512px. |
| 是 ChromeOS 仅此而已 | 布尔 | 虚假 | 生成只针对ChromeOS设备的应用程序. 默认为 false。 。 。 . |
| 是 Meta 查询 | 布尔 | 虚假 | 生成一个兼容Meta Quest设备的应用程序. 默认为 false。 。 。 . |
| 发射器Name | 字符串 | 虚假 | 在Android发射器上显示的Android应用程序的简称 |
| 可掩码IconUrl | 字符串 | 虚假 | 当设备支持时,可遮掩图标所用的图标的完整 URL . |
| 单色IconUrl | 字符串 | 虚假 | 完整 URL 到单色图标, 当显示通知时使用 . |
| 名称 | 字符串 | 真实 | Android应用程序的名称,安装在Android设备时显示在平地上. |
| 导航颜色 | 字符串 | 真实 | 导航栏所用的颜色 . |
| 导航颜色 | 字符串 | 虚假 | 设备处于暗模式时用于导航栏的颜色. 默认为 #000000。 。 。 . |
| 导航 分块颜色 | 字符串 | 虚假 | 导航条分隔符所用的颜色 。 默认为 #000000。 。 。 . |
| 导航 Divider 颜色 | 字符串 | 虚假 | 当设备为暗模式时用于导航条分隔器的颜色. 默认为 #000000。 。 。 . |
| 方向 | 'default' | 'any' | 'natural' | 'landscape' | 'portrait' | 'portrait-primary' | 'portrait-secondary' | 'landscape-primary' | 'landscape-secondary' | 虚假 | 初始方向用于启动Android应用. 默认为 'default'。 。 。 . |
| 软件包编号 | 字符串 | 真实 | 这个 应用程序编号 用于输出Android应用程序. |
| 保留 套装 | 阵列 | 虚假 | 这些是您在发布新捆绑时想要保留的应用程序捆绑的捆绑. |
| 服务账户JsonFile | 字符串 | 虚假 | Play Store服务了账户信息. 设立指南 |
| 共享目标 | 共享目标 | 虚假 | 网络共享目标 应用程序的配置 . |
| 快捷键 | 快捷键信息[ | 虚假 | 快捷键 应用程序的配置 . |
| 签名键 | 签名KeyInfo | 真实 | 用于签名Android应用程序的签名密钥和别名. 读取 签名KeyInfo 详细情况. |
| 飞出时间 | 编号 | 真实 | 喷出屏幕的持续时间淡出动画 . |
| 启动Url | 字符串 | 真实 | TWA的起步路径. 必须是相对于域. |
| 主题颜色 | 字符串 | 真实 | 状态栏所用的颜色 . |
| 主题颜色 | 字符串 | 真实 | 暗状态栏所用的颜色 . |
| 网络管理 | 字符串 | 虚假 | PWA网络宣言的完整URL. 要求应用程序与Chrome OS和Meta Quest设备兼容. |
| 全部扩展Url | 字符串 | 虚假 | 浏览器认为在应用程序内的导航范围. 如果用户在范围外导航,则返回浏览器标签或窗口内的普通网页. 必须是完整的 URL 。 仅由 Meta Quest 设备要求和使用 . |
| 薄荷丝克Version | 编号 | 虚假 | 最低限度 Android API 级别 用于应用程序运行。 默认为 23,如果 isMetaQuest 实值 true,以及 19 否则. |
| 操作程序 | 礼宾管理员[ | 虚假 | 清单 协议处理器 由应用程序支持. |
| 文件处理器 | 文件处理器[ | 虚假 | 清单 文件汉德尔斯 由应用程序支持. |
| 启动手提电脑模式 | 字符串 | 虚假 | 启动( h) 客户端 模式 该应用程序. |
特征
开发者可以在他们的Android应用中启用额外的功能. 一些特性可能包括应用程序中更多的依赖性并增加二进制大小.
| 名称 | 类型 | 需求 | 增加二进制大小 | 说明 |
|---|---|---|---|---|
| 应用程序飞行器 | 应用飞行器配置 | 虚假 | 真实 | 读取 应用飞行器配置 详细情况. |
| 第一个运行旗 | 第一跑道旗舰 | 虚假 | 虚假 | 读取 第一跑道旗舰 详细情况. |
| 代表团 | 代表团配置 | 虚假 | 真实 | 读取 代表团配置 详细情况. |
| 播放比灵 | 播放比尔林配置 | 虚假 | 真实 | 读取 播放比尔林配置 详细情况. |
应用飞行器配置
启用 应用飞行器 SDK 在Android应用程序中。 包括额外的库并不符合Chrome OS.
| 名称 | 类型 | 需求 | 说明 |
|---|---|---|---|
| 应用程序飞行器 | 布尔 | 真实 | 应用飞行器识别码. |
| 启用 | 布尔 | 真实 | 设定为 true 以启用特性. |
代表团配置
向Android系统代表位置权限对话框,而不是显示浏览器对话框. 当应用程序请求定位许可时被推荐,但默认无法启用,因为它包含了应用程序中的额外依赖性.
| 名称 | 类型 | 需求 | 说明 |
|---|---|---|---|
| 启用 | 布尔 | 真实 | 设定为 true 以启用特性. |
播放比尔林配置
启用应用程序中的 Play Billing 集成并允许网络应用程序到 使用数字货物 API 接收付款。包括Android应用中的额外依赖性.
| 名称 | 类型 | 需求 | 说明 |
|---|---|---|---|
| 启用 | 布尔 | 真实 | 设定为 true 以启用特性. |
第一跑道旗舰
启动应用程序时添加额外的查询参数,显示应用程序是否首次运行.
| 名称 | 类型 | 需求 | 说明 |
|---|---|---|---|
| 启用 | 布尔 | 真实 | 设定为 true 以启用特性. |
| 查询参数Name | 字符串 | 真实 | 用于将首个运行信息附加到 start-url。 。 。 . |
阿尔法依赖
| 名称 | 类型 | 需求 | 说明 |
|---|---|---|---|
| 启用 | 布尔 | 虚假 | 设定为 true 允许应用程序使用 alpha 版本 android-browser-helper。 。 。 . |
签名KeyInfo
关于文件系统位置和用于签名Android应用程序的别名的信息.
| 名称 | 类型 | 需求 | 说明 |
|---|---|---|---|
| 路径 | 字符串 | 真实 | 本地文件系统中的密钥文件路径 |
| 别名 | 字符串 | 真实 | 用于在密钥托里签名的密钥的别名 |
指纹
申请的签名指纹信息. 用于生成 assetlinks.json 文件,并由 fingerprint 命令.
| 名称 | 类型 | 需求 | 说明 |
|---|---|---|---|
| 名称 | 字符串 | 虚假 | 指纹的可选名称. |
| 价值 | 字符串 | 真实 | 指纹的SHA-256值. |
礼宾管理员
为申请注册的礼宾处理员名单. 这些条目可能并不完全符合网页上最初的内容,因为这些条目已经正常化并经过验证 这些 规则。 如果一个webmanifest条目出于任何原因(无效协议,错误的目标url,丢失"%s"令牌)是不正确的,将会被忽略并打印出警告. 见 这里 欲了解更多关于《议定书》处理器规格的信息。 支持协议的完整列表是 这里。 。 。 .
| 名称 | 类型 | 需求 | 说明 |
|---|---|---|---|
| 协议 | 字符串 | 真实 | 登记的数据方案(例如:. bitcoin, (中文(简体) ), irc, (中文(简体) ), web+coffee) (中文(简体) ). |
| url 密码 | 字符串 | 真实 | 将自定义数据方案转换回 http(s) 链接的公式,必须包含“%s” , 并且与 Web 显示文件来源相同 。 示例 https://test.com/?target=%s |
文件处理器
为应用程序注册的文件处理器列表 。 这些条目可能并不完全符合网页上的最初内容。 如果一个webmanifest条目因任何原因不正确,将会被忽略并打印出警告. 见 这里 关于文件处理的更多信息 这里 用于文件 handlers webmanifest spec.
| 名称 | 类型 | 需求 | 说明 |
|---|---|---|---|
| 动作Url | 字符串 | 真实 | 如果文件处理器发射时匹配相应的 MIME 类型, 要导航的 URL |
| mIME 类型 | 字符串 [] | 真实 | 文件处理器的 MIME 类型列表 |
发射手
字符串,指定应用程序在启动时要加载的上下文 。 可能的值有:"自动","焦点-存在","navigate-存在","navigate-new"等. 见 启动( h) 更多信息.
手动建立环境
获得Java开发工具包(JDK) 17.
Android命令行工具需要JDK的正确版本来运行. 防止版本 与已经安装的 JDK 版本相冲突, Bubblewrap 使用可以解析的 JDK 一个单独的文件夹.
下载与您的操作系统兼容的 JDK 17 版本 收养 在自己的文件夹中提取它.
: 警告: 警告: 使用低于17的版本将无法编译项目和更高 版本与Android命令行工具不相容.
获取 Android 命令行工具
下载与您的操作系统兼容的Android命令行工具 https://developer.android.com/studio#命令-行-工具-只限。 。 。 . 创建文件夹并提取下载的文件到其中 。 这将进一步安装AndroidSdk和Android SDK管理器而无需安装整个Android IDE.
告诉 Bubblewrap JDK 和 Android 命令行工具在哪里
运行时 bubblewrap 它将首次询问它在哪里能找到 JDK 和 Android 命令
线上工具。 所以,注意双方被解压的地点.
为确保您注意到正确的位置, 请检查每个目录是否包含以下文件 :
- 打开 窗口 财务报告和审定财务报表 链接,对 打开 JDK 路径应当包含
bin, (中文(简体) ),include, (中文(简体) ),lib等 (中文(简体) ). 打开 麦克OS, (中文(简体) ), 目录应包含Contents子目录. - 这个 AndroidSDK 软件 路径应当包含
tools应该有bin, (中文(简体) ),cli
更新 JDK 和 / 或 Android 命令行工具的位置 .
如果 JDK 或 Android 命令行工具的位置设置错误路径或
如果它们的位置在初始配置后有所改变,则其中任何一个的位置都可以
通过编辑配置文件来更改 ${USER_HOME}/.bubblewrap/config.json。 。 。 .
样本配置.json
{
"jdkPath":"\\user\\home\\bubblewrap-user\\open-jdk",
"androidSdkPath":"\\user\\home\\bubblewrap-user\\android-cli"
}
(注:确保你没有 spaces 在机器人SdkPath。 检查 此链接 详细情况。 )
捐款
见 捐款 为了更多.
许可证
见 自由主义 为了更多.
免责声明
这不是谷歌的产品.