打包为应用
2022年10月22日
打包为应用
当我们完成代码后,可以将代码打包为独立apk。如果这个js文件依赖了其他的资源、代码文件,无法被打包进apk中,此时需要用项目打包。有关项目的功能请参考下一节“项目与打包”,这里我们重点介绍打包功能。
在云控app脚本管理页面,点击顶部的+,创建脚本项目。
在云控app脚本管理页面,点击顶部的机器人,打包脚本项目。
进入打包界面。打包界面包含多个配置,你可以自定义权限、包名、应用名称等,也支持批量打包。调整后这些配置后,点击右下角的完成(√)图标,即可进行打包。
这里我们依次介绍关键的打包配置。
应用配置
- 应用名称:打包后应用安装后显示在桌面的名称
- 包名:应用的唯一标识符,相同包名和签名的安装包可以覆盖安装。包名只能包含字母、数字、下划线、英文点等,并且至少包含一个英文点,比如"com.example"。不合法的包名打包后无法安装,可能提示“安装包解析失败”。
- 版本名称:显示给用户的版本名称,比如"1.10.2"。
- 版本号:一个整数,代表内部版本号。每次更新版本时,需要增加这个整数。
- 图标:应用安装后显示在桌面的图标
- 权限:配置应用权限清单中的权限,默认为126个权限。你可以按需要配置权限,不同功能需要不同的权限:
- 读写文件:需要READ_EXTERNAL_STORAGE,WRITE_EXTERNAL_STORAGE权限
- 前台服务:需要FOREGROUND_SERVICE权限
- 访问网络:需要INTERNET权限
- 任务:需要WAKE_LOCK权限
- 开机启动:需要RECEIVE_BOOT_COMPLETED权限
- 悬浮窗:需要SYSTEM_ALERT_WINDOW权限
- adb权限运行shell命令:需要moe.shizuku.manager.permission.API_V23权限
如果用到某些功能,但没有配置相应的权限,运行时可能报错。比如使用到前台服务,但是没有配置FOREGROUND_SERVICE权限,使用到相应功能时会崩溃。
权限还可配置为启动时自动申请,比如自动申请WRITE_EXTERNAL_STORAGE权限,则打包后应用启动后会弹出权限申请框。一些权限不可申请,只能在权限清单中配置。
特性
- 内置图标包:使用到内置图标,比如ic_add_black_48dp等,需要勾选此特性。
- 处理外部文件:使用到任务中的IntentTask(打开、编辑文件等),需要勾选此特性。勾选后,在文件管理器中打开一些文件,会提示使用打包的应用打开。
- Node.js引擎:是否使用Node.js引擎(第二代API)。Node.js引擎的体积较大,单架构达到十几MB。
- 自动:自动根据打包的文件、项目中是否使用第二代API而决定
- 禁用:一律禁用Node.js引擎
- 启用:一律启用Node.js引擎
- 插件:当使用到MLKit OCR、FFMpeg等插件时,需要在这里勾选使用到的插件,插件才能被打包到apk中。内置OCR模块则无需在这里勾选插件。
构建配置
- 加密:选择加密等级。
- CPU架构:默认为当前设备的架构。CPU架构将影响软件的体积、兼容性、占用内存、允许速度,arm64-v8a架构速度更快、占用内存更高、且仅适用支持64位的机器,通常来说模拟器不支持arm64-v8a。如果要让软件兼容性更好,可以选择armeabi-v7a或者双架构。
- 混淆组件名称:是否将内置的组件(比如广播、Activity、服务)等名称随机化。勾选此选项后,打包时间将变得很长,并且务必打包时保持在前台,以保持较高的调度优先级。
运行配置
- 隐藏日志:打包后应用是否显示日志界面,当脚本有UI界面时此选项不生效。一般来说,建议脚本不要没有任何界面,否则一些依赖界面的功能会出现错误,或者是容易被系统杀死。
- 显示启动界面:是否显示启动界面,默认是软件图标的界面。即使设置为关闭,在首次启动时由于需要初始化,仍然会显示一次。
- 启动界面文本:默认为Powered by CloudControl Pro,可自定义文本内容。
- 启动界面图标:默认为软件图标。此图标不能铺满屏幕,如果你需要自定义,请使用自定义启动图功能。(参见应用内示例 -> 项目与打包 -> 自定义启动图)
签名
只有包名相同且签名相同的应用才能覆盖安装和升级。如果你需要持续更新某个应用,建议你使用自定义签名。因为默认签名是每次安装CloudControl Pro时随机生成的,一旦你卸载CloudControl Pro或者清除数据,默认签名将会丢失并且不能找回。签名丢失后,你更新应用重新打包后需要让用户卸载旧版本才能安装新版本。
要创建自定义签名,在签名管理中创建签名,输入密码、别名和别名密码即可创建。一个签名可以用于多个软件,每个软件用不同的别名和别名密码,但是CloudControl Pro自带的签名管理只支持创建一个别名。
签名文件、密码、别名、别名密码需要保存好,一旦丢失或忘记,没有任何途径可以找回。