iOS脚本批量修改资源MD5值

一、下载python3.x

  1. https://www.python.org/downloads/
    官网下载最新的(我当前用的是3.10)下载完后点击安装,使用默认安装位置(有些版本默认位置不相同,出现路径找不到,自行修改脚本的路径)

  2. 安装完后,查看python版本发现并没有配置

    $python —version
    
  3. 打开~/.zshrc环境配置文件(bash一样的方式)配置一下:

    $vim ~/.zshrc
    

    i 进入编辑模式,粘贴脚本

    esc 退出编辑模式

    :wq 后回车 保存zsh文件

  4. 配置路径,粘贴内容如下,如果是别的版本的,换掉3.10就行

#python 3.10

PATH="/Library/Frameworks/Python.framework/Versions/3.10/bin:${PATH}"

export PATH

alias python="/Library/Frameworks/Python.framework/Versions/3.10/bin/python3.9"

  1. 运行一下zsh文件:
$source  ~/.zshrc

  1. 再查看一下python版本就好了:
$python —version  

二、执行修改脚本

提前复制一下源文件便于修改后对比,cd到你图片资源目录,然后执行脚本,XXXXXX替换成你存放资源的根目录

$cd XXXXXX

执行python3脚本, XXXXXX换成你脚本的路径名(拖进去就行了)

$python3 XXXXXX

然后使用脚本查看md5值 XXXXXX换成你的资源(拖进去就行)

$md5 XXXXXX

本脚本如果在打包前修改,打包后Xcode会把你的修改给修正过来导致无效,记得打完包之后在ipa里进行修改一次就行了

脚本如下:

import os
import sys
import struct
# 十六进制转十进制
def hex2dec(str_num):
    return int(str_num.upper(),16)

# 获取目录中的所有png文件
def get_png_files(d):
    for root,dirs,fs in os.walk(d):
        for f in fs:
            if f.endswith('.png'):
                yield os.path.join(root, f)


# 给png图片末尾写入tag
def write_tag_to_png(f):
    offset = 12
    tag = 0
    with open(f, 'rb') as f1:
        
        while True:
            f1.seek(-offset, 2)
            t = {}
            for i in range(0,3):
                t[i] = int.from_bytes(f1.read(4), 'little', signed=False)
            # png结束符
            if 0 == t[0] and hex2dec('0x444E4549') == t[1] and hex2dec('0x826042AE') == t[2]:
                break
            else:
                offset = offset + 1

        # 读取tag
        f1.seek(- offset + 12, 2)
        tag = int.from_bytes(f1.read(), 'little', signed=True)
        f1.seek(0)
        data = f1.read()
        f1.seek(0)
        data2 = f1.read(len(data) - offset + 12)
        with open(f, 'wb') as f2:
            f2.write(data2)
            # 在结尾写入tag + 1
            f2.write(struct.pack('L', tag + 1))
            print(f + ', write tag: ' + str(tag + 1))
            
if '__main__' == __name__:
    for f in get_png_files('.'):
        write_tag_to_png(f)


三、使用工具MD5change批量修改

免费,支持格式种类众多,有前后md5对比功能,很好用(推荐!)

地址: MD5change
提取码: rfri

--END--

你可能感兴趣的:(iOS脚本批量修改资源MD5值)