타사 응용 프로그램에 의해 엑스 코드 스크립트 디버깅

이름을 프로젝트 디버깅 할 앱과 동일한 만들기 (필요하지,하지만 스크립트를 수정)
다음은 같은 디렉토리에 해당 디렉토리를 만드는 것입니다. 이것은 원하는 스크립트를 수정하지 않습니다.
첫 번째 디렉토리 (TEMP)는 이미 넣어 응용 프로그램 암호를 해독
타사 응용 프로그램에 의해 엑스 코드 스크립트 디버깅
앱 디렉토리가 여기에 복사 한 후 두 번째 디렉토리가 생성됩니다. 내부에 아무것도 넣지 마십시오.
타사 응용 프로그램에 의해 엑스 코드 스크립트 디버깅
다음과 같이 스크립트입니다 :

#${SRCROOT} 它是工程文件所在的目录
TEMP_PATH="${SRCROOT}/Temp"
#资源文件夹,我们提前在工程目录下新建一个app文件夹, 里面放ipa包
ASSETS_PATH="${SRCROOT}APP"
#目录ipa包路径
TARGET_IPA_PATH="${SRCROOT}/*.ipa"
#清空Temp 文件夹
rm -rf   "${SRCROOT}/Temp"
mkdir -p "${SRCROOT}/Temp"
#---------------------------
#1.解压IPA到Temp下
unzip -oqq "$TARGET_IPA_PATH" -d "$TEMP_PATH"
# 拿到解压临时的APP的路径
TEMP_APP_PATH=$(set -- "$TEMP_PATH/Payload/"*.app;echo "$1")
#---------------------------
#---------------------------
#2.将解压出来的.app 拷贝进入工程下
TARGET_APP_PATH="$BUILT_PRODUCTS_DIR/$TARGET_NAME.app"  #真是醉了这样不行
echo "temp:$TARGET_APP_PATH"
echo "app路径:$BUILT_PRODUCTS_DIR/$TARGET_NAME.app"
rm -rf "$BUILT_PRODUCTS_DIR/$TARGET_NAME.app"
mkdir -p "$BUILT_PRODUCTS_DIR/$TARGET_NAME.app"
cp -rf "$TEMP_APP_PATH/" "$BUILT_PRODUCTS_DIR/$TARGET_NAME.app"
#---------------------------
#---------------------------
#3.删除一些无法签名的
rm -rf "$BUILT_PRODUCTS_DIR/$TARGET_NAME.app/PlugIns"
rm -rf "$BUILT_PRODUCTS_DIR/$TARGET_NAME.app/Watch"
#---------------------------
#---------------------------
#4. 更新info.plist文件 的Bundle identifier
#设置:“Set :KEY Value ” “目标文件路径”
/usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier  $PRODUCT_BUNDLE_IDENTIFIER" "$BUILT_PRODUCTS_DIR/$TARGET_NAME.app/Info.plist"
echo "Set :CFBundleIdentifier  $PRODUCT_BUNDLE_IDENTIFIER"
echo "$BUILT_PRODUCTS_DIR/$TARGET_NAME.app/Info.plist"
#---------------------------
#---------------------------
#5. 给Maho文件上执行 仅限
APP_BINARY=`plutil -convert xml1 -o - $BUILT_PRODUCTS_DIR/$TARGET_NAME.app/Info.plist | grep -A1 Exec|tail -n1|cut -f2 -d\>|cut -f1 -d\<`
echo "APP_BINARY $APP_BINARY"
chmod +x "$BUILT_PRODUCTS_DIR/$TARGET_NAME.app/$APP_BINARY"
#---------------------------
#---------------------------
#6.重签名第三方app
#TARGET_APP_FRAMEWORK_PATH="$BUILT_PRODUCTS_DIR/$TARGET_NAME.app/frameworks”
#if [-d "$TARGET_APP_FRAMEWORK_PATH"];
#then
#for FRAMEWORK in "$TARGET_APP_FRAMEWORK_PATH/"*
#do
#/usr/bin/codesign --force --sign "$EXPANDED_CODE_SIGN_IDENTITY" "$FRAMEWORK"
#done
#fi
#签名所有framework和动态库
function mycodesign(){
#遍历文件$1 为shell语法 相当于ls遍历的东西在一个数组中$1为下标为1  1开始 https://blog.csdn.net/xungjhj/article/details/73613883
for file in `ls $1`;
do
# 获取目录名字${file#*.}:拿掉第一个 .  及其左边的字符串:file.txt https://www.cnblogs.com/xunbu7/p/6187017.html
extension="${file#*.}"
#判断是否为目录 就是 普通的比较与[]相似 http://manual.51yip.com/shell/tests.html#DBLBRACKETS
if [[ -d "$1/$file" ]]; then
#判断后辍是否为framework framework因为也是一个目录
if [[ "$extension" == "framework" ]]; then
/usr/bin/codesign --force --sign "$EXPANDED_CODE_SIGN_IDENTITY" "$1/$file"
else
codesign "$1/$file"
fi
#判断是否为文件
elif [[ -f "$1/$file" ]]; then
#判断后辍
if [[ "$extension" == "dylib" ]]; then
/usr/bin/codesign --force --sign "$EXPANDED_CODE_SIGN_IDENTITY" "$1/$file"
fi
fi
done
}
mycodesign "$BUILT_PRODUCTS_DIR/$TARGET_NAME.app"

#codesign -fs "$EXPANDED_CODE_SIGN_IDENTITY" --no-strict --entitlements entitlements.plist "$BUILT_PRODUCTS_DIR/$TARGET_NAME.app"

입구 스크립트 :
타사 응용 프로그램에 의해 엑스 코드 스크립트 디버깅
결과는 다음과 같습니다
타사 응용 프로그램에 의해 엑스 코드 스크립트 디버깅
프로젝트 주소 :

추천

출처blog.51cto.com/haidragon/2406523