mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
105 lines
3.3 KiB
Bash
105 lines
3.3 KiB
Bash
#!/bin/sh
|
|
|
|
set -x
|
|
set -e
|
|
|
|
if [ -z "$1" ] || [ -z "$2" ]; then
|
|
echo "Usage: sh package_app.sh path/to/buck platform-flavors"
|
|
exit 1
|
|
fi
|
|
|
|
BUCK="$1"
|
|
BUCK_OPTIONS="$2"
|
|
PLATFORM_FLAVORS="$3"
|
|
|
|
BUILD_PATH="build"
|
|
APP_NAME="Telegram"
|
|
|
|
IPA_PATH="$BUILD_PATH/$APP_NAME.ipa"
|
|
DSYMS_FOLDER_NAME="DSYMs"
|
|
DSYMS_ZIP="$BUILD_PATH/$DSYMS_FOLDER_NAME.zip"
|
|
DSYMS_DIR="$BUILD_PATH/$DSYMS_FOLDER_NAME"
|
|
|
|
mkdir -p "$BUILD_PATH"
|
|
rm -f "$IPA_PATH"
|
|
rm -f "$DSYMS_ZIP"
|
|
rm -rf "$DSYMS_DIR"
|
|
mkdir -p "$DSYMS_DIR"
|
|
|
|
cp "buck-out/gen/AppPackage#$PLATFORM_FLAVORS.ipa" "$IPA_PATH.original"
|
|
rm -rf "$IPA_PATH.original.unpacked"
|
|
rm -f "$BUILD_PATH/${APP_NAME}_signed.ipa"
|
|
mkdir -p "$IPA_PATH.original.unpacked"
|
|
unzip "$IPA_PATH.original" -d "$IPA_PATH.original.unpacked/"
|
|
rm "$IPA_PATH.original"
|
|
|
|
UNPACKED_PATH="$IPA_PATH.original.unpacked"
|
|
APP_PATH="$UNPACKED_PATH/Payload/Telegram.app"
|
|
FRAMEWORKS_DIR="$APP_PATH/Frameworks"
|
|
|
|
rm -rf "$IPA_PATH.original.unpacked/SwiftSupport/iphoneos/"*
|
|
rm -rf "$IPA_PATH.original.unpacked/Symbols/"*
|
|
rm -rf "$FRAMEWORKS_DIR/"*
|
|
|
|
for DEPENDENCY in $(${BUCK} query "kind('apple_library|apple_binary', deps('//:Telegram#$PLATFORM_FLAVORS', 1))" ${BUCK_OPTIONS}); do
|
|
case "$DEPENDENCY" in
|
|
*"#"*)
|
|
;;
|
|
*)
|
|
DEPENDENCY="$DEPENDENCY#$PLATFORM_FLAVORS"
|
|
;;
|
|
esac
|
|
DEPENDENCY_PATH=$(echo "$DEPENDENCY" | sed -e "s#^//##" | sed -e "s#:#/#")
|
|
DEPENDENCY_NAME=$(echo "$DEPENDENCY" | sed -e "s/#.*//" | sed -e "s/^.*\://")
|
|
DYLIB_PATH="buck-out/gen/$DEPENDENCY_PATH/lib$DEPENDENCY_NAME.dylib"
|
|
if [ -f "$DYLIB_PATH" ]; then
|
|
TARGET_DYLIB_PATH="$FRAMEWORKS_DIR/lib$DEPENDENCY_NAME.dylib"
|
|
cp "$DYLIB_PATH" "$TARGET_DYLIB_PATH"
|
|
fi
|
|
DSYM_PATH="buck-out/gen/$(echo "$DEPENDENCY" | sed -e "s/#/#apple-dsym,/" | sed -e "s#^//##" | sed -e "s#:#/#").dSYM"
|
|
cp -f -r "$DSYM_PATH" "$DSYMS_DIR/"
|
|
done
|
|
|
|
for LIB in $(ls "$FRAMEWORKS_DIR"/*.dylib); do
|
|
strip -S -T "$LIB"
|
|
done
|
|
|
|
xcrun swift-stdlib-tool --scan-folder "$IPA_PATH.original.unpacked/Payload/Telegram.app" --scan-folder "$IPA_PATH.original.unpacked/Payload/Telegram.app/Frameworks" --scan-folder "$IPA_PATH.original.unpacked/Payload/Telegram.app/PlugIns" --strip-bitcode --platform iphoneos --copy --destination "$IPA_PATH.original.unpacked/SwiftSupport/iphoneos"
|
|
|
|
for LIB in $(ls "$IPA_PATH.original.unpacked/SwiftSupport/iphoneos/"*.dylib); do
|
|
codesign --remove-signature "$LIB"
|
|
lipo -remove armv7s -remove arm64e "$LIB" -o "$LIB"
|
|
xcrun bitcode_strip -r "$LIB" -o "$LIB"
|
|
strip -S -T "$LIB"
|
|
done
|
|
|
|
cp "$IPA_PATH.original.unpacked/SwiftSupport/iphoneos/"*.dylib "$FRAMEWORKS_DIR/"
|
|
|
|
CERTIFICATE="76F9BA5C281AA72599FE015E0CE1A5D82F5A3DED"
|
|
|
|
for framework in "$FRAMEWORKS_DIR"/*; do
|
|
if [[ "$framework" == *.framework || "$framework" == *.dylib ]]; then
|
|
/usr/bin/codesign ${VERBOSE} ${KEYCHAIN_FLAG} -f -s "$CERTIFICATE" "$framework"
|
|
else
|
|
log "Ignoring non-framework: $framework"
|
|
fi
|
|
done
|
|
|
|
PROVISIONING_PROFILE="buildbox/transient-data/codesigning/profiles/InHouse_org.telegram.Telegram-iOS.mobileprovision"
|
|
cp "$PROVISIONING_PROFILE" "$APP_PATH/embedded.mobileprovision"
|
|
|
|
ENTITLEMENTS="Entitlements.entitlements"
|
|
|
|
/usr/bin/codesign ${VERBOSE} -f -s "$CERTIFICATE" --entitlements "$ENTITLEMENTS" "$APP_PATH"
|
|
|
|
DIR=$(pwd)
|
|
|
|
cd "$UNPACKED_PATH"
|
|
zip -r "../${APP_NAME}_signed.ipa" Payload SwiftSupport
|
|
cd "$DIR"
|
|
|
|
cd "$BUILD_PATH"
|
|
zip -r "$DSYMS_FOLDER_NAME.zip" "$DSYMS_FOLDER_NAME"
|
|
|
|
cd "$DIR"
|