qmake: Find Apple ID via IDEProvisioningTeamByIdentifier for Xcode 16.2

The format of the Xcode preferences has changed, so we need to account
for the new format when looking up the default development team.

The account identifier (previously an email address) was not used by
any consumers of the provisioningTeams() function, so it was left out.

Pick-to: 6.8 6.5
Change-Id: I81a400000615594336e14c95db86ffa71a5c5ff9
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
(cherry picked from commit 380a9fdc872e14e537f3e148c7a1e72be5face2d)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Tor Arne Vestbø 2025-02-04 12:51:44 +01:00 committed by Qt Cherry-pick Bot
parent 6a23dfba36
commit 761d516fd4

View File

@ -470,18 +470,15 @@ static QList<QVariantMap> provisioningTeams()
const QSettings xcodeSettings(
QDir::homePath() + QLatin1String("/Library/Preferences/com.apple.dt.Xcode.plist"),
QSettings::NativeFormat);
const QVariantMap teamMap = xcodeSettings.value(QLatin1String("IDEProvisioningTeams")).toMap();
QList<QVariantMap> flatTeams;
for (QVariantMap::const_iterator it = teamMap.begin(), end = teamMap.end(); it != end; ++it) {
const QString emailAddress = it.key();
const QVariantList emailTeams = it.value().toList();
for (QVariantList::const_iterator teamIt = emailTeams.begin(),
teamEnd = emailTeams.end(); teamIt != teamEnd; ++teamIt) {
QVariantMap team = teamIt->toMap();
team[QLatin1String("emailAddress")] = emailAddress;
flatTeams.append(team);
}
QVariantMap teamMap = xcodeSettings.value(QLatin1String("IDEProvisioningTeamByIdentifier")).toMap();
if (teamMap.isEmpty())
teamMap = xcodeSettings.value(QLatin1String("IDEProvisioningTeams")).toMap();
QList<QVariantMap> flatTeams;
for (const auto &[accountIdentifier, associatedTeams] : teamMap.asKeyValueRange()) {
for (const auto &team : associatedTeams.toList())
flatTeams.append(team.toMap());
}
// Sort teams so that Free Provisioning teams come last