美文网首页看场电影
无越狱IPhone安装多个同样应用的方法(三)自动化重签名

无越狱IPhone安装多个同样应用的方法(三)自动化重签名

作者: struggle3g | 来源:发表于2018-05-24 01:19 被阅读163次

    回顾

    已经做了手动、xcode重新签名,基本上的操作大致都差不多,都是将能够重新签名的进行重新签名、不能签名的干掉

    自动化签名原理

    其实说白了,就是将自己手动做的操作直接写成一个shell脚本进行重签名,按照一定规则对App进行重签名,解决了重复操作步骤的一些麻烦

    准备、操作步骤

    • 新建一个项目AutomatedResigning
    • AutomatedResigning根目录创建ResignedApp文件夹、temp文件夹
    • 越狱的ipa文件
    • 编写自己的shell脚本
    TEMP_PATH="${SRCROOT}/Temp"
    ASSETS_PATH="${SRCROOT}/ResignedApp"
    MY_IPA_PATH="${ASSETS_PATH}/*.ipa"
    
    #-----------------------————————————————————————
    #1.保证 Temp文件夹中是空的
    rm -rf "${SRCROOT}/Temp"
    mkdir -p "${SRCROOT}/Temp"
    
    #-----------------------————————————————————————
    #2.解压ipa包到Temp文件夹
    unzip -oqq "$MY_IPA_PATH" -d "$TEMP_PATH"
    
    #-----------------------————————————————————————
    #3.拿到Temp目录下App的路径
    TEMP_APP_PATH=$(set -- "$TEMP_PATH/Payload/"*.app;echo "$1")
    echo "lujing:$TEMP_APP_PATH"
    
    #-----------------------————————————————————————
    #4.将解压出来的.app拷贝进入工程下
    #BUILT_PRODUCTS_DIR 工程下生成app包的路径
    #TARGET_NAME target名称
    TARGET_APP_PATH="$BUILT_PRODUCTS_DIR/$TARGET_NAME.app"
    echo "app路径:$TARGET_APP_PATH"
    
    rm -rf "$TARGET_APP_PATH"
    mkdir -p "$TARGET_APP_PATH"
    cp -rf "$TEMP_APP_PATH/"  "$TARGET_APP_PATH"
    
    #-----------------------————————————————————————
    #5.删除extension文件和WatchApp、PlugIns 个人证书没法签名extension
    rm -rf "$TARGET_APP_PATH/PlugIns"
    rm -rf "$TARGET_APP_PATH/Watch"
    
    #-----------------------————————————————————————
    #6.更新plist CFBundleIdentifier的值
    #/usr/libexec
    
    /usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier $PRODUCT_BUNDLE_IDENTIFIER" "$TARGET_APP_PATH/Info.plist"
    
    #-----------------------————————————————————————
    #7.给MachO执行权限
    APP_BINARY=`plutil -convert xml1 -o - $TARGET_APP_PATH/Info.plist|grep -A1 Exec|tail -n1|cut -f2 -d\>|cut -f1 -d\<`
    chmod +x "$TARGET_APP_PATH/$APP_BINARY"
    
    #-----------------------————————————————————————
    #8.给MachO执行权限
    TARGET_APP_FRAMEWORKS_PATH="$TARGET_APP_PATH/Frameworks"
    if [ -d "$TARGET_APP_FRAMEWORKS_PATH" ];
    then
    #遍历出所有动态库的路径
    for FRAMEWORK in "$TARGET_APP_FRAMEWORKS_PATH/"*
    do
    echo "😊😊😊😊😊😊😊😊 Find FRAMEWORK : $FRAMEWORK"
    #签名
    /usr/bin/codesign --force --sign "$EXPANDED_CODE_SIGN_IDENTITY" "$FRAMEWORK"
    done
    fi
    

    • run下工程OK

    相关文章

      网友评论

        本文标题:无越狱IPhone安装多个同样应用的方法(三)自动化重签名

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