打包为应用

2022年10月22日

打包为应用

当我们完成代码后,可以将代码打包为独立apk。打包可以分为单文件打包、项目打包,其中单文件打包只能打包一个js文件,如果这个js文件依赖了其他的资源、代码文件,无法被打包进apk中,此时需要用项目打包。有关项目的功能请参考下一节“项目与打包”,这里我们重点介绍打包功能。

在文件列表中,点击需要打包的文件右边的更多图标(三个点),选择“打包单文件”。

打包单文件

进入打包界面。打包界面包含多个配置,你可以自定义权限、包名、应用名称等。调整后这些配置后,点击右下角的完成(√)图标,即可进行打包。

这里我们依次介绍关键的打包配置。

应用配置

  • 应用名称:打包后应用安装后显示在桌面的名称
  • 包名:应用的唯一标识符,相同包名和签名的安装包可以覆盖安装。包名只能包含字母、数字、下划线、英文点等,并且至少包含一个英文点,比如"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权限,则打包后应用启动后会弹出权限申请框。一些权限不可申请,只能在权限清单中配置。

特性

  • 图色模块:使用到OpenCV、图片处理(剪切、二值化等)、找图找色等功能,需要勾选此特性。如果不勾选,运行时会报错"UnsatisfiedLinkError: No implementation found for org.opencv.core..."。
  • 内置图标包:使用到内置图标,比如ic_add_black_48dp等,需要勾选此特性。
  • 无障碍服务:使用到点击、滑动、控件选择器等无障碍功能,需要勾选此特性。不勾选此特性时,在系统的无障碍服务管理中不会出现打包的应用。
  • 处理外部文件:使用到任务中的IntentTask(打开、编辑文件等),需要勾选此特性。勾选后,在文件管理器中打开一些文件,会提示使用打包的应用打开。
  • Node.js引擎:是否使用Node.js引擎(第二代API)。Node.js引擎的体积较大,单架构达到十几MB。
    • 自动:自动根据打包的文件、项目中是否使用第二代API而决定
    • 禁用:一律禁用Node.js引擎
    • 启用:一律启用Node.js引擎
  • 内置PaddleOCR:使用到内置的$ocr模块时选择。
    • 禁用:不使用内置ocr模块
    • 附带所有模型:使用内置ocr模块并附带default, slim模型
    • 附带default模型:使用内置ocr模块并附带default模型
    • 附带slim模型:使用内置ocr模块并附带slim模型
  • 插件:当使用到MLKit OCR、FFMpeg等插件时,需要在这里勾选使用到的插件,插件才能被打包到apk中。内置OCR模块则无需在这里勾选插件。

构建配置

  • 加密:选择加密等级。参考加密与级别说明open in new window
  • CPU架构:默认为当前设备的架构。CPU架构将影响软件的体积、兼容性、占用内存、允许速度,arm64-v8a架构速度更快、占用内存更高、且仅适用支持64位的机器,通常来说模拟器不支持arm64-v8a。如果要让软件兼容性更好,可以选择armeabi-v7a或者双架构。
  • 混淆组件名称:是否将内置的组件(比如广播、Activity、服务)等名称随机化。勾选此选项后,打包时间将变得很长,并且务必打包时保持在前台,以保持较高的调度优先级。

运行配置

  • 隐藏日志:打包后应用是否显示日志界面,当脚本有UI界面时此选项不生效。一般来说,建议脚本不要没有任何界面,否则一些依赖界面的功能会出现错误,或者是容易被系统杀死。
  • 显示启动界面:是否显示启动界面,默认是软件图标的界面。即使设置为关闭,在首次启动时由于需要初始化,仍然会显示一次。
  • 启动界面文本:默认为Powered by Auto.js Pro,可自定义文本内容。
  • 启动界面图标:默认为软件图标。此图标不能铺满屏幕,如果你需要自定义,请使用自定义启动图功能。(参见应用内示例 -> 项目与打包 -> 自定义启动图)

签名

只有包名相同且签名相同的应用才能覆盖安装和升级。如果你需要持续更新某个应用,建议你使用自定义签名。因为默认签名是每次安装Auto.js Pro时随机生成的,一旦你卸载Auto.js Pro或者清除数据,默认签名将会丢失并且不能找回。签名丢失后,你更新应用重新打包后需要让用户卸载旧版本才能安装新版本。

要创建自定义签名,在签名管理中创建签名,输入密码、别名和别名密码即可创建。一个签名可以用于多个软件,每个软件用不同的别名和别名密码,但是Auto.js Pro自带的签名管理只支持创建一个别名。

签名文件、密码、别名、别名密码需要保存好,一旦丢失或忘记,没有任何途径可以找回。

上次编辑于:
贡献者: hyb1996