nopilot
nopilot
  • 发布:2023-12-29 19:08
  • 更新:2024-01-20 10:10
  • 阅读:120

【报Bug】安卓国际化打包报错

分类:HBuilderX

产品分类: HbuilderX

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: ventura13.01

HBuilderX版本号: 3.99

示例代码:

安卓平台

初次打包(标准基座或者自定义基座)

Bug:app在启动图阶段会报错:zip file size less than 。。。,如果是标准基座还会有“本应用无法独立运行”报错

测试原因:应该是多语言支持bug

操作步骤:

复现步骤:

manifest-应用名称=%app.name%
平台:安卓(IOS没有这个问题)
基座:标准和自定义无差别

手工修改应用名称=xxxx(中文)就可以触发差异编辑正常启动app,否则就不可以(多种报错,app无法正常启动)。启动后再把应用名称改回=%app.name%,在差异编辑后app仍然可以正常启动。

结论:初次安装基座,应用名称=多语言格式时,bug可复现

预期结果:

app正常启动

实际结果:

app正常启动

bug描述:

复现步骤:

manifest-应用名称=%app.name%
平台:安卓(IOS没有这个问题)
基座:标准和自定义去差别

Bug:app在启动图阶段会报错:zip file size less than 。。。

手工修改应用名称=xxxx(中文)就可以触发差异编辑正常启动app,否则就不可以。启动后再把应用名称改回=%app.name%,在差异编辑后app仍然可以正常启动。

所以可能是初次安装基座,应用名称=多语言格式时,bug出现

2023-12-29 19:08 负责人:DCloud_App_Array 分享
已邀请:
DCloud_App_Array

DCloud_App_Array

请提供appid,我们查下后台打包日志。

nopilot

nopilot (作者)

UNI92039FE

当时有多个项目有同样的问题,都是手工把%app.name%改成中文的APP名称后,触发差异编译暂时可以调试但不能提交商店。改中文名称之前IOS和安卓各自有一些其它的报错,提请复现时注意,应该是hbuilderX多语言的一些处理逻辑有bug。之前还反馈过有3个框架组件或api(比如启动图)多语言时也有fallback处理的bug,但似乎没有官方回复确认。谢谢!

nopilot

nopilot (作者)

另外一个APPID:UNI7CBE1CD

DCloud_App_Array

DCloud_App_Array

云端打包只保留3天的日志,请重新提交云打包。为了能快速排查问题,最好是可以上传下项目工程。

nopilot

nopilot (作者)

APPID:UNI7CBE1CD(配置了框架自带和自定义多语言)

已经重新打了自定义基座,和云打包。公司规定,工程不方便上传。

补充:安装自定义基座apk到华为手机-文件管理-压缩包: %app.name%.zip,猜测可能是类似这样的中间结果导致了zip报错,无法启动app。

这个apk也可以顺便复现多语言不一致的bug(手机语言、应用切换语言、fallback语言之间)。

  • DCloud_App_Array

    从云端打包日志看配置的国际化是正常的,后台日志显示默认语言时中文,配置了zh-Hans、en、ko、th、vi、zh-Hant国际化名称。

    你是手动修改manifest.json中的name值为中文吗?请提供下修改前的manifest.json文件以及国际化配置文件。

    2024-01-02 16:02

  • nopilot (作者)

    回复 DCloud_App_Array: 请问这个bug确认能修复吗?现在国际版安卓卡在这里无法提交商店了,之前IOS是带着bug提交商店的。

    2024-01-04 17:49

nopilot

nopilot (作者)

manifest当前设置:
"locale" : "auto",
"fallbackLocale" : "zh-Hans",

手机语言切换成英文试试就可以复现之前另外帖子报的bug。

手机设置为英文、中文,问题都是一样的。

如果fallback=中文简体,那么开屏图的APP名字是中文、2个IOS权限弹窗(相册读取、用户跟踪)都是显示中英换杂(提示语标题是正确的中文,但副标题是英文),虽然手机语言=英文。

如果fallback=en,那么那么开屏图的APP名字是英文、2个IOS权限弹窗(相册读取、用户跟踪)都是显示中英混杂(提示语标题是正确的英文,但副标题是中文),虽然手机语言=中文。

这个换了测试手机和hbuilderX版本,问题同样,所以应该是框架组件多语言实现的bug。

  • DCloud_App_Array

    ios平台隐私权限描述国际化参考这里:https://ask.dcloud.net.cn/article/35860

    2024-01-09 17:16

nopilot

nopilot (作者)

manifest.json->name: %app.name% (手工修改为中文名称就可以,否则就报错)

locale/index.js:
// 国际化json文件,文件内容详见下面的示例
import en from './en.json'
import zhHans from './zh-Hans.json'
import zhHant from './zh-Hant.json'
// 如果是韩语等,需要自定义语言,包括框架的组件、API、权限等相关多语言配置处理都需要自定义
import ko from './ko.json'
import th from './th.json'
import vi from './vi.json'

// export多语言json object(messages)
export default {
en,
'zh-Hans': zhHans,
'zh-Hant': zhHant,
'ko': ko,
'th': th,
'vi': vi,
}

locale/en.json
{
"lang": "English",
"app.name": "XXX",
}

  • DCloud_App_Array

    用测试项目没有复现你反馈的问题,请提交下完整示例项目。

    2024-01-09 17:37

nopilot

nopilot (作者)

关于国际化的这几个bug已经提供了非常详细的错误信息和错误表象,从定位bug到汇报bug到回复已经花了不止3个工作日。例如;apk安装到手机的文件名还是%app_name%.apk,导致zip报错。这个已经把hbuilder的错误定位的非常具体了吧。再例如:中英文同时混杂的框架组件名和截图也提供了,这个走读下自身代码,按技术常理也应该能在10分钟之内定位了吧。

抱歉,实在没有精力再写一个完整示例项目。国际化的这些bug都不大,都是框架基本的代码逻辑不严谨导致,可能就是内部优先级不在这方面吧,我看社区里面反馈的此类问题一般都没有得到最终解决。

要回复问题请先登录注册