diff --git a/Build-tf b/Build-tf index 2ccea9ac..888526dc 100644 --- a/Build-tf +++ b/Build-tf @@ -1,30 +1,80 @@ #!/usr/bin/env bash -IDENTITY="Apple Distribution: ITVIO, OOO (VL68C36HYS)" -P12_TMP_PATH="certs/distribution.p12" +#!/bin/bash -echo "🔑 Decoding certificate..." -echo "$CERTIFICATES_FILE_BASE64" | base64 --decode > "$P12_TMP_PATH" -ls -l "$P12_TMP_PATH" # Проверим размер и существование файла - -echo "📦 Preparing certificate..." -mkdir -p certs -echo "$CERTIFICATES_FILE_BASE64" | base64 --decode > "$P12_TMP_PATH" - -echo "🔑 Importing .p12 certificate..." -security import "$P12_TMP_PATH" -k login.keychain -P "$CERTIFICATES_PASSWORD" -T /usr/bin/codesign || { - echo "❌ Failed to import .p12" - exit 1 -} - -security set-key-partition-list -S apple-tool:,apple: -s -k "$CERTIFICATES_PASSWORD" login.keychain - -# 🧾 Проверка, что identity доступен -if ! security find-identity -v -p codesigning | grep -q "${IDENTITY}"; then - echo "❌ Signing identity '${IDENTITY}' not found in keychain." +# Убедимся, что переменные CERTIFICATES_FILE_BASE64 и CERTIFICATES_PASSWORD установлены +if [ -z "$CERTIFICATES_FILE_BASE64" ] || [ -z "$CERTIFICATES_PASSWORD" ]; then + echo "❌ Переменные CERTIFICATES_FILE_BASE64 или CERTIFICATES_PASSWORD не установлены." exit 1 fi +# Указываем путь для временного файла .p12 +P12_TMP_PATH="./certs/distribution.p12" + +# Создаем каталог, если его нет +echo "📦 Preparing certificate..." +mkdir -p certs + +# Выводим первые 10 символов BASE64 строки для проверки +echo "🔍 Проверка содержимого base64 строки..." +echo "$CERTIFICATES_FILE_BASE64" | head -n 10 + +# Декодируем строку base64 и сохраняем в файл +echo "🔑 Decoding certificate..." +echo "$CERTIFICATES_FILE_BASE64" | base64 --decode > "$P12_TMP_PATH" + +# Проверим, что файл был успешно создан +if [ ! -f "$P12_TMP_PATH" ]; then + echo "❌ Не удалось создать файл сертификата: $P12_TMP_PATH" + exit 1 +else + echo "✅ Файл сертификата успешно создан: $P12_TMP_PATH" + ls -l "$P12_TMP_PATH" # Выведем информацию о файле +fi + +# Попробуем импортировать сертификат +echo "🔑 Importing .p12 certificate..." +security import "$P12_TMP_PATH" -k login.keychain -P "$CERTIFICATES_PASSWORD" -T /usr/bin/codesign + +# Проверим, был ли сертификат успешно импортирован +if [ $? -ne 0 ]; then + echo "❌ Ошибка при импорте сертификата. Проверьте правильность пароля." + exit 1 +fi + +echo "✅ Сертификат успешно импортирован." + +# Проверим наличие нужной identity в ключнице +IDENTITY="Apple Distribution: ITVIO, OOO (VL68C36HYS)" +if ! security find-identity -v -p codesigning | grep -q "${IDENTITY}"; then + echo "❌ Подпись identity '${IDENTITY}' не найдена в ключнице." + exit 1 +fi + +# Определяем пути +ARCHIVE_PATH="./archive" # Убедитесь, что ARCHIVE_PATH правильно задан +APP_PATH="${ARCHIVE_PATH}/Products/Applications/Runner.app" +FRAMEWORKS_PATH="${APP_PATH}/Frameworks" + +# Убираем старые подписи +echo "🔐 Removing old signatures..." +codesign --remove-signature "${FRAMEWORKS_PATH}/App.framework/App" +codesign --remove-signature "${FRAMEWORKS_PATH}/Flutter.framework/Flutter" + +# Повторно подписываем фреймворки +echo "🔐 Resigning App.framework..." +codesign -f --deep --no-strict -s "${IDENTITY}" --preserve-metadata=entitlements,identifier,flags "${FRAMEWORKS_PATH}/App.framework/App" + +echo "🔐 Resigning Flutter.framework..." +codesign -f --deep --no-strict -s "${IDENTITY}" --preserve-metadata=entitlements,identifier,flags "${FRAMEWORKS_PATH}/Flutter.framework/Flutter" + +# Подписываем самое приложение +echo "🔐 Resigning Runner.app..." +codesign -f --deep --no-strict -s "${IDENTITY}" --preserve-metadata=entitlements,identifier,flags "${APP_PATH}" + +echo "✅ Resigning completed." + + #set -xeu #set -o pipefail #