目录

Git 行尾换行符,导致无法进入游戏

问题

CP 把工程给过来,在我本地(window 环境)直接打包、安装、运行是正常的

当我把工程通过 Git 上传到仓库,在远程通过 Jenkins 拉取工程到打包机(window)打包,安装、运行异常,弹出下面的错误弹窗,组织进入游戏。

分析问题

混淆导致的吗?

在 Jenkins 打包,首先是出了一个混淆包,期初还以为是混淆导致的

后来关闭了混淆打包,发现仍然存在问题,因此排除是混淆导致的

对比资源

apktool 分别反编译正常包和异常包,使用 Beyond Compare 文件对比工具对比反编译后的文件

这是一个 laya 游戏,游戏主要资源在 assets 目录下,排除其他文件,发现 assets/cache 下的游戏资源存在差异

同一份游戏资源怎么存在差异呢?

仔细看,文件之间差异非常小,文件大小仅相差几到十几个字节

任选一个文件细看,文件内容几乎一致,仅是内容行末存在差异:结尾换行符差异

还有一个显眼的地方是:

  • 右侧:正常的包文件是 PC(window?)
  • 左侧:异常的包文件是 混合(有些文件还显示 Unix,那基本能确定 PC 就是 window 了)

一开始还不清楚这两个是什么,但是联想到换行符,有一点印象是不同系统之间换行符是存在差异的

  • window:换行符 CRLF
  • Unix、Linux:换行符 LF

macOS 是基于 Unix 系统开发,看来 CP 的开发环境是 Mac 系统了

资源差异

对比这两个安装包,assets 下面的 laya 资源是存在差异的,难道问题出现在这?

那问题来了:为什么同一份资源打出来的包还能存在差异呢?而且还仅是换行符差异!

问题解决

最后通过 AL 问答,了解到这可能是由 Git 导致的,通过按下面两篇文章实践操作,问题真解决了,还真是这个换行符导致的。

至于换行符为什么导致错误就不深究了。

现在英文文章 AL 可以轻松翻译,再也不用担心我的英语水平了

本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
_一条咸鱼_3 小时前
深度揭秘!Android HorizontalScrollView 使用原理全解析
android·面试·android jetpack
_一条咸鱼_3 小时前
揭秘 Android RippleDrawable:深入解析使用原理
android·面试·android jetpack
_一条咸鱼_3 小时前
深入剖析:Android Snackbar 使用原理的源码级探秘
android·面试·android jetpack
_一条咸鱼_3 小时前
揭秘 Android FloatingActionButton:从入门到源码深度剖析
android·面试·android jetpack
_一条咸鱼_3 小时前
深度剖析 Android SmartRefreshLayout:原理、源码与实战
android·面试·android jetpack
_一条咸鱼_3 小时前
揭秘 Android GestureDetector:深入剖析使用原理
android·面试·android jetpack
_一条咸鱼_3 小时前
深入探秘 Android DrawerLayout:源码级使用原理剖析
android·面试·android jetpack
_一条咸鱼_3 小时前
深度揭秘:Android CardView 使用原理的源码级剖析
android·面试·android jetpack
_一条咸鱼_3 小时前
惊爆!Android RecyclerView 性能优化全解析
android·面试·android jetpack
_一条咸鱼_3 小时前
探秘 Android RecyclerView 惯性滑动:从源码剖析到实践原理
android·面试·android jetpack