mirror of
https://github.com/moltbot/moltbot.git
synced 2026-03-07 22:44:16 +00:00
fix(ios): support Xcode 16+ team detection and fix ntohl build error
Xcode 16+/26 no longer writes IDEProvisioningTeams to the preferences plist, breaking ios-team-id.sh for newly signed-in accounts. Add provisioning profile fallback and actionable error when an account exists but no team ID can be resolved. Also replace ntohl() with UInt32(bigEndian:) for Swift 6 compatibility and gitignore Xcode build output directories. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
committed by
Peter Steinberger
parent
9ccc15f3a6
commit
73f526f025
6
.gitignore
vendored
6
.gitignore
vendored
@@ -102,6 +102,12 @@ skills-lock.json
|
||||
|
||||
# Local iOS signing overrides
|
||||
apps/ios/LocalSigning.xcconfig
|
||||
|
||||
# Xcode build directories (xcodebuild output)
|
||||
apps/ios/build/
|
||||
apps/shared/OpenClawKit/build/
|
||||
Swabble/build/
|
||||
|
||||
# Generated protocol schema (produced via pnpm protocol:gen)
|
||||
dist/protocol.schema.json
|
||||
.ant-colony/
|
||||
|
||||
@@ -80,9 +80,45 @@ load_teams_from_legacy_defaults_key() {
|
||||
)
|
||||
}
|
||||
|
||||
load_teams_from_xcode_managed_profiles() {
|
||||
local profiles_dir="${HOME}/Library/MobileDevice/Provisioning Profiles"
|
||||
[[ -d "$profiles_dir" ]] || return 0
|
||||
|
||||
while IFS= read -r team; do
|
||||
[[ -z "$team" ]] && continue
|
||||
append_team "$team" "0" ""
|
||||
done < <(
|
||||
for p in "${profiles_dir}"/*.mobileprovision; do
|
||||
[[ -f "$p" ]] || continue
|
||||
security cms -D -i "$p" 2>/dev/null \
|
||||
| /usr/bin/python3 -c '
|
||||
import plistlib, sys
|
||||
try:
|
||||
d = plistlib.load(sys.stdin.buffer)
|
||||
for tid in d.get("TeamIdentifier", []):
|
||||
print(tid)
|
||||
except Exception:
|
||||
pass
|
||||
' 2>/dev/null
|
||||
done | sort -u
|
||||
)
|
||||
}
|
||||
|
||||
has_xcode_account() {
|
||||
local plist_path="${HOME}/Library/Preferences/com.apple.dt.Xcode.plist"
|
||||
[[ -f "$plist_path" ]] || return 1
|
||||
local accts
|
||||
accts="$(defaults read com.apple.dt.Xcode DVTDeveloperAccountManagerAppleIDLists 2>/dev/null || true)"
|
||||
[[ -n "$accts" ]] && [[ "$accts" != *"does not exist"* ]] && grep -q 'identifier' <<< "$accts"
|
||||
}
|
||||
|
||||
load_teams_from_xcode_preferences
|
||||
load_teams_from_legacy_defaults_key
|
||||
|
||||
if [[ ${#team_ids[@]} -eq 0 ]]; then
|
||||
load_teams_from_xcode_managed_profiles
|
||||
fi
|
||||
|
||||
if [[ ${#team_ids[@]} -eq 0 && "$allow_keychain_fallback" == "1" ]]; then
|
||||
while IFS= read -r team; do
|
||||
[[ -z "$team" ]] && continue
|
||||
@@ -95,7 +131,19 @@ if [[ ${#team_ids[@]} -eq 0 && "$allow_keychain_fallback" == "1" ]]; then
|
||||
fi
|
||||
|
||||
if [[ ${#team_ids[@]} -eq 0 ]]; then
|
||||
if [[ "$allow_keychain_fallback" == "1" ]]; then
|
||||
if has_xcode_account; then
|
||||
echo "An Apple account is signed in to Xcode, but no Team ID could be resolved." >&2
|
||||
echo "" >&2
|
||||
echo "On Xcode 16+, team data is not written until you build a project." >&2
|
||||
echo "To fix this, do ONE of the following:" >&2
|
||||
echo "" >&2
|
||||
echo " 1. Open the iOS project in Xcode, select your Team in Signing &" >&2
|
||||
echo " Capabilities, and build once. Then re-run this script." >&2
|
||||
echo "" >&2
|
||||
echo " 2. Set your Team ID directly:" >&2
|
||||
echo " export IOS_DEVELOPMENT_TEAM=<your-10-char-team-id>" >&2
|
||||
echo " Find your Team ID at: https://developer.apple.com/account#MembershipDetailsCard" >&2
|
||||
elif [[ "$allow_keychain_fallback" == "1" ]]; then
|
||||
echo "No Apple Team ID found. Open Xcode or install signing certificates first." >&2
|
||||
else
|
||||
echo "No Apple Team ID found in Xcode accounts. Open Xcode → Settings → Accounts and sign in, then retry." >&2
|
||||
|
||||
Reference in New Issue
Block a user