admin 管理员组文章数量: 887031
2023年12月25日发(作者:hellmy)
Beyond Compare使用技巧
在移植Baidu ROM过程中,我们经常需要对比分析源包代码和工程代码两套smali代码,并把源包代码中的feature代码或bug fix代码合并到工程代码中,使用一个专业、高效的文件对比工具将会让我们patch事半功倍,这里推荐Beyond Compare这款优秀的文件对比软件。Beyond Compare同时有Windows和Linux版本可使用,这里就不多介绍,具体可自行上网搜索,这里介绍利用这款软件在合并代码过程的一些使用技巧。
1、 忽略行号差异
在对比smali代码过程,会发现很多文件的差异缩略图(下图左侧)几乎全部标红,文件差异似乎很大。其实很多只是行号的差异,我们并不关心,但这些差异会让所关心的差异难以定位,因此可以设置一个对比规则忽略掉行号的差异,设置方法如下:
a. 点击“规则”选项按钮,弹出对话“重要”选项对话框,点击编辑语法,新建一个语法,按照下图所示配置语法项目。
b. 确定后便在“重要”选项卡中生成一个“行号”勾选项,取消该选项的勾选,确定后返回。
c. 按下“忽略不重要差异项”选项按钮示出实重要代码差异的位置。
,就能忽略行号的差异,左侧缩略图便能显
2、 smali语法高亮
smali代码虽然不是一种官方标准语言,但也遵循一定的语法规范,如有语法高亮辅助功能将能大大增强smali代码的可读性。Beyond Compare允许自定义文件格式,对自定义的语法高亮显示,下面介绍针对smali代码进行语法高亮设置的方法:
a. 在选项菜单“工具”中打开“文件格式”对话框,新建一个文本格式类型的选项并命名为”smali”,文件过滤条件为”*.smali”,完成后先点击保存。如下图所示:
b. 点击“语法”选项卡,这里会创建“关键字”、“字符串”和“注释”三种语法,点击“新建”弹出语法项目对话,按照下图配置:
关键字列表添加了部分匹配字段,可根据需要自行删减。
关键字列表使用了:
.class
.super
.source
.field
.end field
.implements
.annotation
.end annotation
.method
.end method
.locals
.parameter
.prologue
public
private
protected
constructor
static
final
字符串语法匹配规则:
注释语法匹配使用正则表达式匹配了”#”和”.line”两个字段:
c. 创建完成后便把“关键字”、“字符串”和“注释”三种语法添加进匹配规则列表中,保存后关闭文件格式对话框。
d. 选中选项菜单“查看”中的“语法高亮”选项,Beyond Compare即可对所有smali文件进行smali语法高亮显示。
3、 全工程文件夹比较
机型工程下smali代码目录结构繁杂、文件数量庞大,我们又经常需要同时对比分析源包代码和工程代码多个文件,如何方便快捷地定位到需要对比的文件,这里介绍使用Beyond
Compare全工程文件比较的方法。
a. 新建“文件夹比较”会话,分别添加源包代码文件夹和工程代码文件夹。
b. 在上方过滤器中输入需要查找的文件名关键词。
c. 所有文件名不包含输入关键字的文件会过滤掉而不显示,包含差异文件父目录颜色会标红,可以快速定位到查找的文件。
4、 把Beyond Compare做为git的可视化比较工具
准确说这应该是git的使用技巧,但涉及Beyond Compare这个工具,这里一并做下介绍。
a. 在Linux下,执行以下命令配置git的默认可视化比较工具。
git config --global bc3
git config --global false
b. 使用Beyond Compare比较两个commit的差异,git difftool命令其他使用与git diff一致。
git difftool commit_old [commit_new] [file] &
版权声明:本文标题:BeyondCompare使用手册 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1703485616h453411.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论