Fix iOS app icon and extension bundle version validation
Declare XSAppIconAssets in the app manifest so actool receives --app-icon and the bundle carries CFBundleIconName, and always pass both Xcode version placeholders to the ReplayKit extension so an empty build number cannot drop CFBundleVersion and fail installd.
This commit is contained in:
@@ -66,8 +66,11 @@ public class PublishServerScriptTests
|
||||
Assert.Contains("group.me.iamtalon.voicecat", entitlements);
|
||||
Assert.Contains("CODE_SIGN_STYLE=Manual", script);
|
||||
Assert.Contains("PROVISIONING_PROFILE_SPECIFIER=\"$VOICECAT_BROADCAST_CODESIGN_PROVISION\"", script);
|
||||
Assert.Contains("CURRENT_PROJECT_VERSION=\"$VOICECAT_BUILD_NUMBER\"", script);
|
||||
// Both version placeholders must always be passed to xcodebuild. A conditional
|
||||
// CURRENT_PROJECT_VERSION expands to an empty CFBundleVersion, which installd rejects.
|
||||
Assert.Contains("CURRENT_PROJECT_VERSION=\"${VOICECAT_BUILD_NUMBER:-1}\"", script);
|
||||
Assert.Contains("MARKETING_VERSION=\"${VOICECAT_DISPLAY_VERSION:-0.0.1}\"", script);
|
||||
Assert.DoesNotContain("if [[ -n \"${VOICECAT_BUILD_NUMBER:-}\" ]]; then", script);
|
||||
|
||||
string deviceScript = await File.ReadAllTextAsync(Path.Combine(
|
||||
root, "clients", "apple", "build-ios-device.sh"));
|
||||
@@ -81,6 +84,24 @@ public class PublishServerScriptTests
|
||||
Assert.Contains("<string>$(CURRENT_PROJECT_VERSION)</string>", extensionManifest);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task IosHostDeclaresItsAppIconAssetForAppStoreValidation()
|
||||
{
|
||||
string root = FindRoot();
|
||||
string manifest = await File.ReadAllTextAsync(Path.Combine(
|
||||
root, "clients", "apple", "VoiceCat.iOS", "Info.plist"));
|
||||
string iconSet = await File.ReadAllTextAsync(Path.Combine(
|
||||
root, "clients", "apple", "VoiceCat.iOS",
|
||||
"Assets.xcassets", "AppIcon.appiconset", "Contents.json"));
|
||||
|
||||
// XSAppIconAssets is an app-manifest key, not an MSBuild property. Without it actool
|
||||
// never receives --app-icon, so the bundle ships without CFBundleIconName and App Store
|
||||
// Connect rejects the upload with errors 90022, 90023, and 90713.
|
||||
Assert.Contains("<key>XSAppIconAssets</key>", manifest);
|
||||
Assert.Contains("<string>Assets.xcassets/AppIcon.appiconset</string>", manifest);
|
||||
Assert.Contains("AppIcon-1024.png", iconSet);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task IosScreenSharingDeclaresBackgroundCaptureAndKeepsReplayKitFallback()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user