Skip to content

Ето един пример на чисто bash-скрипт (с вградено Ruby), който за даден Xcode проект и за конфигурация Release променя настройките на signing на Automatically и задава DEVELOPMENT_TEAM според подадена променлива.

Скрипт:

!/usr/bin/env bash

usage: ./set_signing.sh [CONFIG_NAME]

пример: ./set_signing.sh ABCDE12345 ./MyApp.xcodeproj Release

if [ $# -lt 2 ]; then
echo "Usage: $0 [CONFIGURATION]"
exit 1
fi

TEAM_ID="$1"
PROJECT_PATH="$2"
CONFIGURATION="${3:-Release}"

Проверка дали проектът съществува

if [ ! -d "$PROJECT_PATH" ]; then
echo "Error: project not found at $PROJECT_PATH"
exit 1
fi

Проверка за ruby-библиотеката xcodeproj

if ! ruby -e "require 'xcodeproj'" &> /dev/null; then
echo "Missing gem 'xcodeproj'. Install with: gem install xcodeproj"
exit 1
fi

Вграждане на Ruby код за модификация на .pbxproj

ruby <<RUBY
require 'xcodeproj'

proj = Xcodeproj::Project.open("$PROJECT_PATH")
changed = false

proj.targets.each do |t|
t.build_configurations.each do |conf|
if conf.name == "$CONFIGURATION"
conf.build_settings["CODE_SIGN_STYLE"] = "Automatic"
conf.build_settings["DEVELOPMENT_TEAM"] = "$TEAM_ID"
changed = true
puts "[+] #{t.name} (#{conf.name}): set CODE_SIGN_STYLE=Automatic, DEVELOPMENT_TEAM=#{$TEAM_ID}"
end
end
end

if changed
proj.save
puts "[✓] Saved changes to #{proj.path}"
else
puts "[!] No configurations named '#{$CONFIGURATION}' found."
end
RUBY

exit 0

Как работи:

  1. Приема два (по избор три) аргумента:
  2. TEAM_ID – вашият Apple Development Team ID
  3. PROJECT_PATH – път до .xcodeproj папката
  4. CONFIGURATION – име на конфигурацията (по подразбиране Release)

След като скриптът е готов, го направете изпълним (chmod +x set_signing.sh) и го викайте така:

./set_signing.sh ABCDE12345 ./MyApp.xcodeproj Release