/PyTool

Primary LanguagePython

FieldsFormatter.py

主要是用来格式化资源文件(如:string),适用于字段不统一的国际化资源,通过打补丁的方式保证字段的完整性。然后将文件国际化。避免了人工手动的繁琐,方便codeReview也提高了研发效率。

达到的目的:找出最完整的字段信息,并将不同资源中(国际化:中文,英文等资源文件)字段的位置统一。

使用场景:在项目开发阶段,开发人员可能会对字段国际化的遗漏(导致项目不完整),或者字段位置不同步(codeReview时不方便)。

使用说明:准备chinese.xml,english.xml,fanti.xml
  如:
      editFile = parseFile("chinese.xml") # 表示:将要修改的文件
      referFile = parseFile("english.xml") # 表示:参考的文件
      首先将chinese.xml备份,然后将english.xml中有而chinese.xml没有的字段一同写入到all.xml文件中(此时该文件中的字段是最完整的),
      然后将all.xml备份a,并对应将english.xml中字段的值在a中替换(中文的值修改为英文),最后输出新的chinese.xml,english.xml文件(此时的文件,
      即可达到字段的同步(不遗漏,位置对应))。
      以此类推,可以实现不同语言中字段的同步。
SMParser.py
主要用力整理StrictMode生成的日志包括合并、去重、排序等。
可以在项目中使用StrictMode,用adb logcat -s StrictMode  > log.txt生成日志,然后放置与SMParser.py同级目录并运行。
StrictMode示例:
public class StrictModeManager {
    public static void init() {
        StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
                .detectAll()
                .penaltyLog()
                .build());
        StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
                .detectAll()
                .penaltyLog()
                .build());
    }
}
parser.py
按照excel中的列(可一对多)归并为xml中的结构。input是实例文件,output是归并结果(可能需要手动导入xlrd库:pip3 install xlrd)

night-mode.py
用来统一颜色,将定义相同颜色值的color引用到相同的color,方便夜间模式的修改,也方便后续的维护。使用方法:将apk反编译拿到colors,在同级目录运行即可

layoutParser.py 
遍历Android中的所有布局的层级并排序输出(然后将层级到的布局使用约束布局去优化,参数需要指定layout的目录。如:python3 LayoutParser.py /Users/igor/workspace/app/res/layout

EyeLogParser.py

用来解析GodEye生产出来的日志,可以展示一段时间内被测的情况从而进一步优化。通过指定apk的路径得到大小,然后反编译后用LayoutParser得到应用的布局层级。其中BASE_INFO的数据GodEye没有,是从app中输出的,GodEye集成见eye_monitor.patch。最终展示信息如:

{
    "===================基本信息===================":"",
    "包名":"x.x.x",
    "版本名":"6.391.0.debug",
    "版本号":179,
    "最小版本号":21,
    "目标版本号":26,
    "系统版本":"7.0",
    "设备型号":"Android Google Nexus 5X",
    "测试时长":"00:40:25",
    "测试页面":"44个",
    "===================优化指标===================":"",
    "启动":"类型: cold, 最长耗时: 24350ms, 平均耗时: 13552.0ms ",
    "流畅度":"平均值:28.29帧/秒",
    "内存泄漏":"18次",
    "耗电量":"1%",
    "CPU":"最大使用率:30.36%, 平均使用率:18.92%",
    "HEAP":"最大占用:262144KB, 平均占用:256589.76KB",
    "RAM":"最大占用:710140KB, 平均占用:479022.93KB",
    "生命周期":"最长耗时: 137ms, 平均耗时: 15.99ms",
    "APK大小":"31481.38KB",
    "布局层级":"最大值:9, 平均值:2.69"
}