summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAndrej Mihajlov <and@mullvad.net>2022-06-02 07:45:49 +0200
committerAndrej Mihajlov <and@mullvad.net>2022-06-02 12:44:39 +0200
commit29ebb186fd6562a17fa530f271776922ca27646d (patch)
tree3a5b7b2404556f6c7a7d4e691ea2ea799412e574
parente6714d142bb5d08c49d1f19884ea9bfd7d25290f (diff)
downloadmullvadvpn-29ebb186fd6562a17fa530f271776922ca27646d.tar.xz
mullvadvpn-29ebb186fd6562a17fa530f271776922ca27646d.zip
Xcode: add build config template
-rw-r--r--.github/workflows/ios.yml8
-rw-r--r--ios/BuildInstructions.md24
-rw-r--r--ios/Configurations/.gitignore3
-rw-r--r--ios/Configurations/App.xcconfig.template6
-rw-r--r--ios/Configurations/Base.xcconfig.template12
-rw-r--r--ios/Configurations/PacketTunnel.xcconfig.template6
-rw-r--r--ios/Configurations/Screenshots.xcconfig.template9
-rw-r--r--ios/MullvadVPN.xcodeproj/project.pbxproj56
-rw-r--r--ios/MullvadVPN/ApplicationConfiguration.swift20
-rw-r--r--ios/MullvadVPN/Info.plist2
-rw-r--r--ios/MullvadVPN/MullvadVPN.entitlements2
-rw-r--r--ios/PacketTunnel/Info.plist2
-rw-r--r--ios/PacketTunnel/PacketTunnel.entitlements2
-rw-r--r--ios/README.md9
14 files changed, 113 insertions, 48 deletions
diff --git a/.github/workflows/ios.yml b/.github/workflows/ios.yml
index 4963e34311..122c9881b9 100644
--- a/.github/workflows/ios.yml
+++ b/.github/workflows/ios.yml
@@ -37,6 +37,14 @@ jobs:
sudo mkdir -p /Library/Developer/CoreSimulator/Profiles/Runtimes
sudo ln -s /Applications/Xcode_11.7.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime /Library/Developer/CoreSimulator/Profiles/Runtimes/iOS\ 13.7.simruntime
+ - name: Configure Xcode project
+ run: |
+ cp Base.xcconfig.template Base.xcconfig
+ cp App.xcconfig.template App.xcconfig
+ cp PacketTunnel.xcconfig.template PacketTunnel.xcconfig
+ cp Screenshots.xcconfig.template Screenshots.xcconfig
+ working-directory: ios/Configurations
+
- name: Build and test
run: |
xcodebuild test \
diff --git a/ios/BuildInstructions.md b/ios/BuildInstructions.md
index e3b114153a..e21992a346 100644
--- a/ios/BuildInstructions.md
+++ b/ios/BuildInstructions.md
@@ -178,6 +178,30 @@ xcrun altool --store-password-in-keychain-item <KEYCHAIN_ITEM_NAME> \
[Apple ID website]: https://appleid.apple.com/account/manage
+# Configure Xcode project
+
+Copy template files of Xcode build configuration:
+
+```
+cp ./ios/Configurations/Base.xcconfig.template ./ios/Configurations/Base.xcconfig
+cp ./ios/Configurations/App.xcconfig.template ./ios/Configurations/App.xcconfig
+cp ./ios/Configurations/PacketTunnel.xcconfig.template ./ios/Configurations/PacketTunnel.xcconfig
+cp ./ios/Configurations/Screenshots.xcconfig.template ./ios/Configurations/Screenshots.xcconfig
+```
+
+Template files provide our team ID and correct provisioning profiles and generally do not require
+any changes when configuring our build server or developer machines for members of Mullvad
+development team. In all other cases perform the following steps to configure the project:
+
+1. Edit `Base.xcconfig` and fill in your Apple development team ID, which can be found on Apple
+developer portal in the top right corner next to your organization name (uppercase letters and
+digits).
+1. Edit `App.xcconfig` and `PacketTunnel.xcconfig` and supply the names of your provisioning profiles
+for development (Debug) and distribution (Release).
+1. Edit `Screenshots.xcconfig` and supply the name of your provisioning profile. We only specify
+development profile here as we never build UI testing targets for distribution. Skip this step if
+you do not intend to generate screenshots for the app.
+
# Automated build and deployment
Build script does not bump the build number, so make sure to do that manually and commit to repo:
diff --git a/ios/Configurations/.gitignore b/ios/Configurations/.gitignore
index 7431e305b0..974fcd39de 100644
--- a/ios/Configurations/.gitignore
+++ b/ios/Configurations/.gitignore
@@ -1 +1,4 @@
+Base.xcconfig
+App.xcconfig
+PacketTunnel.xcconfig
Screenshots.xcconfig
diff --git a/ios/Configurations/App.xcconfig.template b/ios/Configurations/App.xcconfig.template
new file mode 100644
index 0000000000..5725f32dd0
--- /dev/null
+++ b/ios/Configurations/App.xcconfig.template
@@ -0,0 +1,6 @@
+#include "Base.xcconfig"
+
+// Provisioning profiles
+// Comment out the lines below if using automatic code sign
+PROVISIONING_PROFILE_SPECIFIER[config=Debug][sdk=*][arch=*] = Mullvad VPN Development
+PROVISIONING_PROFILE_SPECIFIER[config=Release][sdk=*][arch=*] = Mullvad VPN Distribution
diff --git a/ios/Configurations/Base.xcconfig.template b/ios/Configurations/Base.xcconfig.template
new file mode 100644
index 0000000000..6861503a66
--- /dev/null
+++ b/ios/Configurations/Base.xcconfig.template
@@ -0,0 +1,12 @@
+// Development team
+DEVELOPMENT_TEAM = CKG9MXH72F
+
+// Bundle ID
+APPLICATION_IDENTIFIER = net.mullvad.MullvadVPN
+
+// Shared container security group ID
+SECURITY_GROUP_IDENTIFIER = group.net.mullvad.MullvadVPN
+
+// Code signing style
+// Possible values: Manual or Automatic
+CODE_SIGN_STYLE = Manual
diff --git a/ios/Configurations/PacketTunnel.xcconfig.template b/ios/Configurations/PacketTunnel.xcconfig.template
new file mode 100644
index 0000000000..5783ab6d49
--- /dev/null
+++ b/ios/Configurations/PacketTunnel.xcconfig.template
@@ -0,0 +1,6 @@
+#include "Base.xcconfig"
+
+// Provisioning profiles
+// Comment out the lines below if using automatic code sign
+PROVISIONING_PROFILE_SPECIFIER[config=Debug][sdk=*][arch=*] = Packet Tunnel Development
+PROVISIONING_PROFILE_SPECIFIER[config=Release][sdk=*][arch=*] = Packet Tunnel Distribution
diff --git a/ios/Configurations/Screenshots.xcconfig.template b/ios/Configurations/Screenshots.xcconfig.template
index 9e472844da..ff966b82c1 100644
--- a/ios/Configurations/Screenshots.xcconfig.template
+++ b/ios/Configurations/Screenshots.xcconfig.template
@@ -1 +1,8 @@
-MULLVAD_ACCOUNT_TOKEN=<ACCOUNT TOKEN>
+#include "Base.xcconfig"
+
+// Provisioning profiles
+// Comment out the lines below if using automatic code sign
+PROVISIONING_PROFILE_SPECIFIER[config=Debug][sdk=*][arch=*] = Screenshots Development
+
+// Mullvad account number used when taking screenshots
+MULLVAD_ACCOUNT_TOKEN =
diff --git a/ios/MullvadVPN.xcodeproj/project.pbxproj b/ios/MullvadVPN.xcodeproj/project.pbxproj
index 800ab1655b..fad611075f 100644
--- a/ios/MullvadVPN.xcodeproj/project.pbxproj
+++ b/ios/MullvadVPN.xcodeproj/project.pbxproj
@@ -329,6 +329,9 @@
5801C9A427A14B2A0031566A /* TunnelManagerState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TunnelManagerState.swift; sourceTree = "<group>"; };
5807E2BF2432038B00F5FF30 /* String+Split.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "String+Split.swift"; sourceTree = "<group>"; };
5807E2C1243203D000F5FF30 /* StringTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StringTests.swift; sourceTree = "<group>"; };
+ 5808273928487E3E006B77A4 /* Base.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Base.xcconfig; sourceTree = "<group>"; };
+ 5808273B284888BC006B77A4 /* App.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = App.xcconfig; sourceTree = "<group>"; };
+ 5808273C284888E5006B77A4 /* PacketTunnel.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = PacketTunnel.xcconfig; sourceTree = "<group>"; };
58095C4A2760B4F200890776 /* AddressCacheStoreError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddressCacheStoreError.swift; sourceTree = "<group>"; };
58095C4E2760BA9100890776 /* AddressCacheStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddressCacheStore.swift; sourceTree = "<group>"; };
58095C502760BBB400890776 /* AddressCacheTracker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddressCacheTracker.swift; sourceTree = "<group>"; };
@@ -946,6 +949,9 @@
58ECD29023F178FD004298B6 /* Configurations */ = {
isa = PBXGroup;
children = (
+ 5808273928487E3E006B77A4 /* Base.xcconfig */,
+ 5808273B284888BC006B77A4 /* App.xcconfig */,
+ 5808273C284888E5006B77A4 /* PacketTunnel.xcconfig */,
58ECD29123F178FD004298B6 /* Screenshots.xcconfig */,
);
path = Configurations;
@@ -1498,9 +1504,8 @@
/* Begin XCBuildConfiguration section */
58B0A2A6238EE67E00BC001D /* Debug */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = 5808273928487E3E006B77A4 /* Base.xcconfig */;
buildSettings = {
- CODE_SIGN_STYLE = Automatic;
- DEVELOPMENT_TEAM = CKG9MXH72F;
INFOPLIST_FILE = MullvadVPNTests/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
@@ -1515,9 +1520,8 @@
};
58B0A2A7238EE67E00BC001D /* Release */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = 5808273928487E3E006B77A4 /* Base.xcconfig */;
buildSettings = {
- CODE_SIGN_STYLE = Manual;
- DEVELOPMENT_TEAM = "";
INFOPLIST_FILE = MullvadVPNTests/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
@@ -1526,8 +1530,6 @@
);
PRODUCT_BUNDLE_IDENTIFIER = net.mullvad.MullvadVPNTests;
PRODUCT_NAME = "$(TARGET_NAME)";
- PROVISIONING_PROFILE_SPECIFIER = "";
- "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = "";
SWIFT_VERSION = 5.0;
};
name = Release;
@@ -1565,7 +1567,6 @@
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "Apple Development";
- CODE_SIGN_STYLE = Manual;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
@@ -1629,7 +1630,6 @@
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "Apple Distribution";
- CODE_SIGN_STYLE = Manual;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
@@ -1656,14 +1656,13 @@
};
58CE5E73224146210008646E /* Debug */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = 5808273B284888BC006B77A4 /* App.xcconfig */;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = MullvadVPN/MullvadVPN.entitlements;
- CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 3;
- DEVELOPMENT_TEAM = CKG9MXH72F;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = MullvadVPN/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
@@ -1671,9 +1670,8 @@
"@executable_path/Frameworks",
);
MARKETING_VERSION = 2022.2;
- PRODUCT_BUNDLE_IDENTIFIER = net.mullvad.MullvadVPN;
+ PRODUCT_BUNDLE_IDENTIFIER = "$(APPLICATION_IDENTIFIER)";
PRODUCT_NAME = "$(TARGET_NAME)";
- PROVISIONING_PROFILE_SPECIFIER = "Mullvad VPN Development";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
@@ -1682,14 +1680,13 @@
};
58CE5E74224146210008646E /* Release */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = 5808273B284888BC006B77A4 /* App.xcconfig */;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = MullvadVPN/MullvadVPN.entitlements;
- CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 3;
- DEVELOPMENT_TEAM = CKG9MXH72F;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = MullvadVPN/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
@@ -1697,9 +1694,8 @@
"@executable_path/Frameworks",
);
MARKETING_VERSION = 2022.2;
- PRODUCT_BUNDLE_IDENTIFIER = net.mullvad.MullvadVPN;
+ PRODUCT_BUNDLE_IDENTIFIER = "$(APPLICATION_IDENTIFIER)";
PRODUCT_NAME = "$(TARGET_NAME)";
- PROVISIONING_PROFILE_SPECIFIER = "Mullvad VPN Release";
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
};
@@ -1707,12 +1703,11 @@
};
58CE5E83224146470008646E /* Debug */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = 5808273C284888E5006B77A4 /* PacketTunnel.xcconfig */;
buildSettings = {
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = PacketTunnel/PacketTunnel.entitlements;
- CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 3;
- DEVELOPMENT_TEAM = CKG9MXH72F;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = PacketTunnel/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
@@ -1721,9 +1716,8 @@
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 2022.2;
- PRODUCT_BUNDLE_IDENTIFIER = net.mullvad.MullvadVPN.PacketTunnel;
+ PRODUCT_BUNDLE_IDENTIFIER = "$(APPLICATION_IDENTIFIER).PacketTunnel";
PRODUCT_NAME = "$(TARGET_NAME)";
- PROVISIONING_PROFILE_SPECIFIER = "Packet Tunnel Development";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
};
@@ -1731,12 +1725,11 @@
};
58CE5E84224146470008646E /* Release */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = 5808273C284888E5006B77A4 /* PacketTunnel.xcconfig */;
buildSettings = {
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = PacketTunnel/PacketTunnel.entitlements;
- CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 3;
- DEVELOPMENT_TEAM = CKG9MXH72F;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = PacketTunnel/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
@@ -1745,9 +1738,8 @@
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 2022.2;
- PRODUCT_BUNDLE_IDENTIFIER = net.mullvad.MullvadVPN.PacketTunnel;
+ PRODUCT_BUNDLE_IDENTIFIER = "$(APPLICATION_IDENTIFIER).PacketTunnel";
PRODUCT_NAME = "$(TARGET_NAME)";
- PROVISIONING_PROFILE_SPECIFIER = "Packet Tunnel Release";
SWIFT_VERSION = 5.0;
};
name = Release;
@@ -1756,16 +1748,13 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 58ECD29123F178FD004298B6 /* Screenshots.xcconfig */;
buildSettings = {
- "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
- CODE_SIGN_STYLE = Automatic;
- DEVELOPMENT_TEAM = CKG9MXH72F;
INFOPLIST_FILE = MullvadVPNScreenshots/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
- PRODUCT_BUNDLE_IDENTIFIER = net.mullvad.MullvadVPNScreenshots;
+ PRODUCT_BUNDLE_IDENTIFIER = "$(APPLICATION_IDENTIFIER).Screenshots";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TEST_TARGET_NAME = MullvadVPN;
@@ -1776,19 +1765,14 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 58ECD29123F178FD004298B6 /* Screenshots.xcconfig */;
buildSettings = {
- "CODE_SIGN_IDENTITY[sdk=macosx*]" = "-";
- CODE_SIGN_STYLE = Manual;
- DEVELOPMENT_TEAM = "";
INFOPLIST_FILE = MullvadVPNScreenshots/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
- PRODUCT_BUNDLE_IDENTIFIER = net.mullvad.MullvadVPNScreenshots;
+ PRODUCT_BUNDLE_IDENTIFIER = "$(APPLICATION_IDENTIFIER).Screenshots";
PRODUCT_NAME = "$(TARGET_NAME)";
- PROVISIONING_PROFILE_SPECIFIER = "";
- "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = "";
SWIFT_VERSION = 5.0;
TEST_TARGET_NAME = MullvadVPN;
};
@@ -1796,8 +1780,8 @@
};
58FBDA9822A519BC00EB69A3 /* Debug */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = 5808273928487E3E006B77A4 /* Base.xcconfig */;
buildSettings = {
- CODE_SIGN_STYLE = Automatic;
DEBUGGING_SYMBOLS = YES;
DEBUG_INFORMATION_FORMAT = dwarf;
GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
@@ -1810,8 +1794,8 @@
};
58FBDA9922A519BC00EB69A3 /* Release */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = 5808273928487E3E006B77A4 /* Base.xcconfig */;
buildSettings = {
- CODE_SIGN_STYLE = Automatic;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
OTHER_CFLAGS = "";
OTHER_LDFLAGS = "";
diff --git a/ios/MullvadVPN/ApplicationConfiguration.swift b/ios/MullvadVPN/ApplicationConfiguration.swift
index 17bd6f04a1..6c6acbe05c 100644
--- a/ios/MullvadVPN/ApplicationConfiguration.swift
+++ b/ios/MullvadVPN/ApplicationConfiguration.swift
@@ -9,14 +9,20 @@
import Foundation
import struct Network.IPv4Address
-enum ApplicationConfiguration {}
+class ApplicationConfiguration {
+ /// Shared container security group identifier.
+ static var securityGroupIdentifier: String {
+ let securityGroupIdentifier = Bundle(for: Self.self)
+ .object(forInfoDictionaryKey: "ApplicationSecurityGroupIdentifier") as? String
+ return securityGroupIdentifier!
+ }
-extension ApplicationConfiguration {
- /// The application group identifier used for sharing application preferences between processes
- static let securityGroupIdentifier = "group.net.mullvad.MullvadVPN"
+ /// The application identifier for packet tunnel extension.
+ static var packetTunnelExtensionIdentifier: String {
+ let mainBundleIdentifier = Bundle.main.bundleIdentifier!
- /// The application identifier for the PacketTunnel extension
- static let packetTunnelExtensionIdentifier = "net.mullvad.MullvadVPN.PacketTunnel"
+ return "\(mainBundleIdentifier).PacketTunnel"
+ }
/// Container URL for security group
static var containerURL: URL? {
@@ -64,4 +70,6 @@ extension ApplicationConfiguration {
/// API address background task identifier
static let addressCacheUpdateTaskIdentifier = "net.mullvad.MullvadVPN.AddressCacheUpdate"
+
+ private init() {}
}
diff --git a/ios/MullvadVPN/Info.plist b/ios/MullvadVPN/Info.plist
index d4f8f9020f..4c782bc735 100644
--- a/ios/MullvadVPN/Info.plist
+++ b/ios/MullvadVPN/Info.plist
@@ -2,6 +2,8 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
+ <key>ApplicationSecurityGroupIdentifier</key>
+ <string>$(SECURITY_GROUP_IDENTIFIER)</string>
<key>BGTaskSchedulerPermittedIdentifiers</key>
<array>
<string>net.mullvad.MullvadVPN.AppRefresh</string>
diff --git a/ios/MullvadVPN/MullvadVPN.entitlements b/ios/MullvadVPN/MullvadVPN.entitlements
index a34daec96d..4b3f467000 100644
--- a/ios/MullvadVPN/MullvadVPN.entitlements
+++ b/ios/MullvadVPN/MullvadVPN.entitlements
@@ -8,7 +8,7 @@
</array>
<key>com.apple.security.application-groups</key>
<array>
- <string>group.net.mullvad.MullvadVPN</string>
+ <string>$(SECURITY_GROUP_IDENTIFIER)</string>
</array>
</dict>
</plist>
diff --git a/ios/PacketTunnel/Info.plist b/ios/PacketTunnel/Info.plist
index 59c8676089..d7c46d333a 100644
--- a/ios/PacketTunnel/Info.plist
+++ b/ios/PacketTunnel/Info.plist
@@ -2,6 +2,8 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
+ <key>ApplicationSecurityGroupIdentifier</key>
+ <string>$(SECURITY_GROUP_IDENTIFIER)</string>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key>
diff --git a/ios/PacketTunnel/PacketTunnel.entitlements b/ios/PacketTunnel/PacketTunnel.entitlements
index a34daec96d..4b3f467000 100644
--- a/ios/PacketTunnel/PacketTunnel.entitlements
+++ b/ios/PacketTunnel/PacketTunnel.entitlements
@@ -8,7 +8,7 @@
</array>
<key>com.apple.security.application-groups</key>
<array>
- <string>group.net.mullvad.MullvadVPN</string>
+ <string>$(SECURITY_GROUP_IDENTIFIER)</string>
</array>
</dict>
</plist>
diff --git a/ios/README.md b/ios/README.md
index 160245eeee..a6ba7a35f9 100644
--- a/ios/README.md
+++ b/ios/README.md
@@ -5,9 +5,12 @@ This is the iOS version of the Mullvad VPN app. The app can be found on the Appl
All releases have signed git tags on the format `ios/<version>`. For changes between each
release, see the [changelog].
+For Xcode project configuration please refer to [Configure Xcode project] section of build
+instructions document.
+
[App Store]: https://apps.apple.com/us/app/mullvad-vpn/id1488466513
[changelog]: CHANGELOG.md
-
+[Configure Xcode project]: BuildInstructions.md#configure-xcode-project
## Screenshots for AppStore
@@ -16,7 +19,7 @@ a part of Fastlane tools.
### Configuration
-The screenshot script uses the real account token to log in, which is provided via Xcode build
+The screenshot script uses the real account number to log in, which is provided via Xcode build
configuration.
1. Create the build configuration using a template file:
@@ -25,7 +28,7 @@ configuration.
cp ios/Configurations/Screenshots.xcconfig.template ios/Configurations/Screenshots.xcconfig
```
-1. Edit the configuration file and put your account token without quotes:
+1. Edit the configuration file and put your account number without quotes:
```
vim ios/Configurations/Screenshots.xcconfig