Mobilefirst cli 构建失败:读取 info.plist 文件 1 字节 UTF-8

Posted

技术标签:

【中文标题】Mobilefirst cli 构建失败:读取 info.plist 文件 1 字节 UTF-8【英文标题】:Mobilefirst cli build failed : reading info.plist file 1-byte UTF-8 【发布时间】:2015-07-28 07:44:31 【问题描述】:

我们有一个 mobilefirst 7.0 混合应用程序项目,其中包括 iosandroid 原生环境。 我们想在 windows 7 上使用 mobile first cli 7.0 来构建项目并在我们从 git 服务器签出这个项目后生成构建时资源。 并且在开始解析 iOS 项目的 info.plist 时失败。 下面的错误信息是我从 mfcli 得到的:

[Error: 
BUILD FAILED
D:\programs\IBM\MobileFirst-CLI7\mobilefirst-cli\node_modules\generator-worklight-server\lib\build.xml:135: The following error occurred while executing this line:
D:\programs\IBM\MobileFirst-CLI7\mobilefirst-cli\node_modules\generator-worklight-server\lib\build.xml:341: The following error occurred while executing this line:
D:\programs\IBM\MobileFirst-CLI7\mobilefirst-cli\node_modules\generator-worklight-server\lib\build.xml:351: The following error occurred while executing this line:
D:\programs\IBM\MobileFirst-CLI7\mobilefirst-cli\node_modules\generator-worklight-server\lib\build.xml:330: Failed building application: com.worklight.builder.exception.WorklightBuildException: com.worklight.builder.exception.WorklightBuildRuntimeException: Resource Manager - Problem reading info.plist file 1-byte UTF-8 �ǦC���L�Ħ줸�� 1�C Nested exception: 1-byte UTF-8 �ǦC���L�Ħ줸�� 1�C

Total time: 18 seconds
]

“资源管理器 - 读取 info.plist 文件 1 字节 UTF-8 的问题”是什么意思?

我们在 Windows 7 上的 git 本地存储库设置为 core.autocrlf = true。 info.plist 文件中存在繁体中文字符,因此此问题可能与字符设置有关。

【问题讨论】:

我很确定这是由于文件的保存方式以及 Git 如何解析它们以及如何将它们移动到 Windows 造成的。一般来说,当你为 iOS 开发时,你不应该真正混合和匹配 Mac 和 Windows。你为什么要这样做? 如果你在 Mac 中使用 CLI,是不是也会这样失败? 用 mfcli 在 windows 上解析 iOS 项目不是我们的目的。我们只希望 mfcli 生成 android 本机项目资源,这些资源在从 git 检查出来后记录在 not to commit to vcs 中。但似乎 mfcli 没有一个开关来阻止它在 windows 上解析整个混合项目。 我很好奇 mobilefirst 混合项目是否被设计为每次在构建过程开始之前生成和配置原生源项目?作为我们的观点......准备,配置并将这些本地源项目提交到git,然后在不同的操作系统上签出和构建它们的方法比以前的方法更可靠。这就是为什么您看到我们的混合项目在这种情况下包含 iOS 原生源项目。 【参考方案1】:

使用.gitattributes 文件来控制行尾(不要依赖core.autocrlf)并明确排除 plist 和其他二进制文件从行尾转换。

例如:

* text=auto
*.plist binary

【讨论】:

谢谢~让我试试...顺便说一句....我通过设置iphone项目中的所有文件都应该以换行符(/**/apps/**/iphone/native/* eol=lf)结尾来控制git转换的行尾每个操作系统,但为什么它不起作用? 经过多次测试,我确信这种方法不能解决我们的问题。但无论如何,谢谢你的建议。我已经解决了。【参考方案2】:

MFP CLI 不会更改文件的编码。

这听起来像是 Git 服务器——也许是它托管在 Windows 上的事实——确实会影响文件的编码。

文件应该是 UTF-8。

【讨论】:

不,它不会更改编码,但 CLI 会在结帐时破坏行尾。服务器不会做任何事情,否则你会破坏提交哈希。 MFP CLI 没有进行任何检查;我不清楚你的这个评论。 显然“CLI”术语有些混乱。显然,您在谈论 MFP CLI?我说的是 git CLI。 作为一名在过去一年中处理工作灯设计缺陷的开发人员,当我第一次阅读这篇文章时看到您将责任归咎于 git,我感到很失望。显然worklight团队对git知之甚少,一个源代码控制系统占据了40%以上的市场份额。到目前为止,我们花了很多精力让worklight工具与git一起工作,但是worklight似乎没有考虑到它与git之间的合作。我强烈建议您的团队在最近的补丁中改进 Worklight Studio 的设计及其构建工具。顺便说一句....我们的 git 服务器托管在 Mac 上,而不是 Windows。 谢谢。如果您发现产品存在缺陷,我强烈建议您开具支持票,以便开发团队尽快纠正。【参考方案3】:

经过进一步调查,我们发现这个问题肯定与mfcli有关。 也许 Windows 上的 mfcli 不接受 Info.plist 中的非 ascii 代码字符。我们可以通过在 ios 项目中为 info.plist 文件应用本地化字符串来轻松解决此问题。

【讨论】:

以上是关于Mobilefirst cli 构建失败:读取 info.plist 文件 1 字节 UTF-8的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 MobileFirst CLI 为远程服务器构建

MobileFirst Platform CLI 无法使用 JSON 存储构建 xcode 7.2 项目

找不到 worklightconsole.war

运行 IBM MobileFirst 6.3 CLI 时无法检索 NativeApplicationBuilder

在 Xcode 中运行时,IBM MobileFirst 7.1 混合应用程序构建失败

Angular-cli aot 构建在生产模式下失败