APK导出配置
生成 APK 的打包与身份设置。这是编辑器中的导出抽屉。
位置:编辑通用配置编辑器中的 APK导出配置 抽屉(由 ApkExportConfig 支撑)。
身份
- 自定义包名 —— APK 的 application id(按包名模式校验)。
- 版本号 / 版本名 —— APK 版本。
- 自动提升版本号 —— 当设备已安装同包名且 versionCode 更高的应用时,构建器自动提升版本以便覆盖安装。默认开启;关闭后始终使用上方填写的版本(降级安装可能因此失败)。
- 引擎类型 —— 导出应用使用系统 WebView 或 GeckoView。
- 自定义 minSdk —— 把
minSdkVersion提高到 shell 模板的 23 以上(可选 23/24/26/28/31/33/34/35/36,且不能高于当前 targetSdk)。关闭时保持 23。打包运行时按 API 23 编译,不能再往下。 - 自定义 targetSdk —— 为生成的 APK 固定其他
targetSdkVersion(可选 28/31/33/34/35/36);关闭时保持 shell 模板的 35。服务端运行时类型仍固定 28。发布 Play 时 AAB 导出仍会强制 Play 要求的级别。
签名
- 密钥库 —— 创建/导入/管理签名密钥(PKCS12/PFX/JKS/BKS)。
- 签名方案 —— V1/V2/V3 独立,旧证书自动回退,可自定义 V1 签名者文件名。
运行时权限
这一栏按 Android 官方里第三方应用能声明、能申请的权限来填,从最低版本 API 23 到 Android 17。每一行是一条清单权限,标了引入它的 API;废弃的会标废弃版本,过了那个版本不再弹窗。签名级、系统内部、角色专用和厂商私有权限不在这里。
- 以前保存的开关仍按原来的组合导出。例如打开相机仍会带上
CAMERA和FOREGROUND_SERVICE_CAMERA。在这一栏里单独关掉某一行,只影响这一条。 - 功能仍会自动勾上自己需要的权限(
RuntimePermissionSync)。导出时会裁掉模板里用不到的权限。 - 前台服务类型跟着留下来的服务走。
DATA_SYNC只属于宿主。生成的应用只为自己保留的服务声明specialUse,媒体会话打开时才声明mediaPlayback。 - 局域网(
ACCESS_LOCAL_NETWORK)在应用需要网络时默认写入,避免 Android 16/17 访问局域网失败。可以单独关掉。纯 file、没有网络的 HTML 不会带上INTERNET、ACCESS_NETWORK_STATE和这条。 - 读取应用列表(
QUERY_ALL_PACKAGES)默认没有。勾上才会写进生成的 APK,Play 可能拒审。宿主 GitHub 渠道自己的清单里已有这条,和生成 APK 无关。 - 短信、通话记录、外拨电话、所有文件访问、使用情况、安装未知应用、精确闹钟这类 Play 会卡的权限各自成行,并标了受限。打开会写进清单;危险权限会在首次启动时弹系统框。网页里没有对应的 JS API。
- 蓝牙不再顺带「附近的 Wi-Fi 设备」。读取图片不再顺带「用户选择的照片和视频」。这两条要单独打开。后台位置单独成行,打开时会同时打开大致位置和精确位置。
静态 SAEP 策略
导出抽屉和构建 APK 页面中的可选 静态 SAEP 策略 开关按应用保存 (ApkExportConfig.saepEnabled)。默认 关闭,旧配置也保持关闭:关闭只省略 SAEP 元数据,并非声明拒绝策略。开启通过静态策略元数据声明 无额外限制,不会授予 Android 权限、绕过授权,也不保证智能体支持 SAEP。
此功能只作用于生成的 APK,不修改构建器宿主的策略。导出时以真实 Android 资源引用写入 com.obric.agentrobots.POLICY_JSON,策略绑定最终包名,在开启资源加密后仍可被系统读取。切换开关会触发完整重建。需要重新构建壳模板;旧模板缺少策略资源时,启用 SAEP 将明确报错,而非输出无效声明。系统及智能体是否支持、自动化操作能否成功,仍须在兼容设备上验证。参见官方 SAEP 示例。
网络信任
- 客户端证书认证 (mTLS) —— 当服务器请求客户端证书时,生成的应用会打开 Android 系统证书选择器,并使用设备上已安装的身份凭据。这与信任服务器 CA 是两项不同的设置。选定的身份会在后续连接同一服务器时自动复用。
构建时选项(在构建对话框中)
这些在你构建 APK 时选择:
- 资源加密 —— PBKDF2 + AES-256-GCM,可选自定义密码。加密的 HTML 站点以密文留在 APK 里,每次请求在内存中解密。无效的 AdMob 应用 ID 会在导出前被拒绝,包括空 ID,以及把广告单元 ID 填进应用 ID。
- 隔离 —— 按应用隔离存储/WebRTC/Canvas/Audio/WebGL/字体/头部/IP。指纹以手机身份出现,请求的 User-Agent 与客户端提示一致。已保存的桌面指纹会在下次启动时换掉。自定义 User-Agent、桌面模式和桌面内核风味保持你的设置。
- 后台运行 —— 保持服务存活(
backgroundRunConfig)。 - 通知 —— 定时/持久通知和轮询(
notificationConfig)。 - 强制全量重建 —— 跳过增量缓存。
说明
- 要发布到 Play 商店,从 Google Play 导出 AAB,它会把
targetSdk重写到 Play 要求的级别。
