uni-app 离线打包manifest.json的versionName有非数字字符时 Android热更新报错

uni-app 离线打包manifest.json的versionName有非数字字符时 Android热更新报错

开发环境 版本号 项目创建方式
Mac 10.15.7 HBuilderX

操作步骤:

Android端,manifest.json的versionName填写如1.0.1a的文本,进行热更新

预期结果:

热更新成功

实际结果:

热更新失败,抛出数字转换异常,消息如下:

java.lang.NumberFormatException: For input string: "1a"

更多关于uni-app 离线打包manifest.json的versionName有非数字字符时 Android热更新报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app 离线打包manifest.json的versionName有非数字字符时 Android热更新报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在 uni-app 中,如果你在 manifest.json 文件中设置了 versionName 包含非数字字符(例如字母、特殊符号等),在进行 Android 热更新时可能会遇到报错。这是因为 Android 系统对版本号的格式有严格的要求,尤其是在热更新时。

问题原因

Android 系统要求 versionName 必须符合一定的格式规范,通常建议使用数字和点号(.)的组合。如果 versionName 包含非数字字符,可能会导致热更新失败。

解决方案

为了避免这个问题,你可以采取以下措施:

  1. 使用纯数字和点号的版本号: 将 versionName 设置为仅包含数字和点号的格式,例如 1.0.02.3.4。这是最推荐的做法。

    {
      "versionName": "1.0.0"
    }
    
  2. 使用符合规范的版本号: 如果你确实需要在 versionName 中包含非数字字符,确保它符合 Android 的版本号规范。例如,可以使用 1.0.0-beta1.0.0-rc1 这样的格式。

    {
      "versionName": "1.0.0-beta"
    }
    
  3. 检查热更新配置: 确保你的热更新配置正确,并且与 versionName 的格式兼容。如果你使用的是 uni-app 官方提供的热更新插件,确保它支持你使用的 versionName 格式。

  4. 手动处理版本号: 如果你必须使用包含非数字字符的 versionName,可以在热更新时手动处理版本号,将其转换为符合规范的格式。

示例

假设你当前的 manifest.json 文件如下:

{
  "name": "MyApp",
  "versionName": "1.0.0-beta",
  "versionCode": 1
}

你可以将其修改为:

{
  "name": "MyApp",
  "versionName": "1.0.0",
  "versionCode": 1
}

或者,如果你需要保留 beta 标识,可以尝试使用以下格式:

{
  "name": "MyApp",
  "versionName": "1.0.0-beta",
  "versionCode": 1
}
回到顶部