美文网首页
打包脚本

打包脚本

作者: 出来遛狗了 | 来源:发表于2023-01-04 16:27 被阅读0次

    一、脚本

    1、打包自动更换build版本号脚本

    image.png
    # Type a script or drag a script file from your workspace to insert its path.
    if [ $CONFIGURATION == Release ]; then
    echo " Bumping build number... "
    
    build_number=$(date +%Y%m%d%H%M)
    /usr/libexec/PlistBuddy -c "Set CFBundleVersion ${build_number}" ${INFOPLIST_FILE}
    
    fi
    

    2、打包脚本
    文件命名为:uat_development.sh

    SFDate=`date +%Y-%m-%d`
    SFDateTime=`date +%Y-%m-%d,%H.%M`
    user="/Users/${USER}"
    echo $user
    cd $user/arichive-app/sf_express_international 
    git checkout .
    git pull
    flutter pub get 
    cd ios 
    pod install
    
    xcodebuild  clean \
    archive \
    -workspace "$user/arichive-app/sf_express_international/ios/Runner.xcworkspace" \
    -scheme "Runner_UAT" \
    -configuration "Release" \
    -archivePath "$user/Archives/$SFDate/Runner_UAT $SFDateTime" \
    -derivedDataPath "$user/DerivedData/" \
    -quiet
    

    3、打包移除32位架构包脚本

    image.png
    APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"
    
    # This script loops through the frameworks embedded in the application and
    # removes unused architectures.
    find "$APP_PATH" -name '*Lite.framework' -type d | while read -r FRAMEWORK
    do
        FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable)
        FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME"
        echo "Executable is $FRAMEWORK_EXECUTABLE_PATH"
    
        EXTRACTED_ARCHS=()
    
        for ARCH in $ARCHS
        do
            echo "Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME"
            lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH"
            EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH")
        done
    
        echo "Merging extracted architectures: ${ARCHS}"
        lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}"
        rm "${EXTRACTED_ARCHS[@]}"
    
        echo "Replacing original executable with thinned version"
        rm "$FRAMEWORK_EXECUTABLE_PATH"
        mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH"
    
    done
    

    4、查找Flutter中无用图片脚本(python)
    命名为 imgAnalyze.py

    # coding=utf8
    #!/user/local/bin/python3
    # 将本文件放在Flutter项目的根目录
    
    from genericpath import isdir
    import imghdr
    from operator import delitem
    import os
    from re import search
    import re
    import string
    from sys import path
    import sys
    from tokenize import String
    from typing import List
    
    print("---Analyze unused Assets----")
    # 项目目录
    projectAbsRootPath = sys.path[0]
    # 图片所在的资源目录路径
    assetPath = "/assets"
    # 项目中dart代码所在目录
    libPath = projectAbsRootPath + "/lib"
    assetAbPath = projectAbsRootPath+assetPath
    
    print("projectRootPath:" + projectAbsRootPath +
          "   assets:" + assetAbPath + "     lib:" + libPath)
    print("----------开始查找图片--------------")
    # 遍历目录,将图片存储到list中的方法
    
    
    def searchImage(filePath: String):
        list = []
        isDir = os.path.isdir(filePath)
        if isDir:
            for f in os.listdir(filePath):
                if f.startswith("."):
                    print(filePath+"/"+f)
                else:
                    tList = searchImage(filePath+"/"+f)
                    list.extend(tList)
        else:
            if imghdr.what(filePath) in {"jpg", "bmp", "jpeg", "rgb", "tif", "png"}:
                list.append(filePath)
        return list
    
    
    # 项目中使用的图片资源路径集合
    imageList = searchImage(assetAbPath)
    
    print("-------------遍历dart文件,分析未使用的图片---------")
    
    
    def matchAndDelImage(contentStr: String, list: List):
        # 遍历拷贝的list,操作原始的list,list[:]是对原始的一个拷贝
        for imgPath in list[:]:
            # 以文件名匹配图片的使用
            # pList = imgPath.split("/")
            # imgName = pList[-1]
            # 以使用的文件路径匹配图片
            index = imgPath.find(assetPath)
            imgName = imgPath[index+1:]
            imgName = imgName.replace("assets/img/", "")
            imgName = imgName.replace("/3.0x", "")
            imgName = imgName.split(".")[0]
            match = re.search(imgName, contentStr)
            if match:
                list.remove(imgPath)
                # print("used-->" + imgPath)
    
    #
    
    
    def searchImageInDart(filePath: String, list: List):
        if os.path.isdir(filePath):
            for f in os.listdir(filePath):
                searchImageInDart(filePath+"/"+f, list)
        else:
            with open(filePath, "r", encoding="utf-8") as f:
                print(f)
                contentStr = f.read()
                f.close()
                if len(contentStr) != 0:
                    matchAndDelImage(contentStr, list)
    
    #
    searchImageInDart(libPath, imageList)
    
    print("------在dart文件中未找到被使用的图片如下-----size:" + str(len(imageList)))
    for img in imageList:
        print("may be unused-->" + img)
        # os.remove(img)
    print("-------------------分析完成-------------------------------")
    

    相关文章

      网友评论

          本文标题:打包脚本

          本文链接:https://www.haomeiwen.com/subject/fnjlcdtx.html