Skip to content

Fix CocoaPods xcconfig argument parsing#942

Merged
AGulev merged 1 commit into
devfrom
fix-for-crashlitics
May 21, 2026
Merged

Fix CocoaPods xcconfig argument parsing#942
AGulev merged 1 commit into
devfrom
fix-for-crashlitics

Conversation

@AGulev

@AGulev AGulev commented May 20, 2026

Copy link
Copy Markdown
Contributor

Fix CocoaPods xcconfig argument parsing

This fixes iOS bundling with Firebase Crashlytics pods where escaped spaces in generated .xcconfig values were split incorrectly. In particular, CLS_SDK_NAME=Crashlytics\ SDK\ iOS was previously expanded into separate defines, producing -DiOS and breaking Firebase source that uses @available(iOS 15, *).

  • Add a shared command-line tokenizer that understands escaped whitespace and simple quotes.
  • Use it for ProcessExecutor command splitting and CocoaPods xcconfig argument parsing.
  • Preserve quoted compiler define values such as -DDLIB_LOG_DOMAIN="FIREBASEEXT".
  • Preserve escaped-space CocoaPods values as one logical argument.
  • Add focused tests for escaped spaces, quoted defines, xcconfig post-processing, and CocoaPods preprocessor definitions.

@AGulev AGulev requested a review from ekharkunov May 20, 2026 13:52
@github-actions

Copy link
Copy Markdown

Summary - Extender code coverage report

Summary
Generated on: 05/20/2026 - 13:53:57
Coverage date: 05/20/2026 - 13:53:24
Parser: JaCoCo
Assemblies: 13
Classes: 83
Files: 83
Line coverage: 35.5% (2043 of 5751)
Covered lines: 2043
Uncovered lines: 3708
Coverable lines: 5751
Total lines: 11766
Branch coverage: 39.6% (892 of 2248)
Covered branches: 892
Total branches: 2248
Method coverage: Feature is only available for sponsors
Tag: 200_26167032479

Coverage

com/defold/extender - 28.3%
Name Line Branch
com/defold/extender 28.3% 33.2%
com/defold/extender/AppManifestConfiguration 100%
com/defold/extender/AppManifestPlatformConfig 100%
com/defold/extender/AsyncBuilder 0% 0%
com/defold/extender/BuilderConstants 0%
com/defold/extender/Configuration 100%
com/defold/extender/Extender 11.4% 10.3%
com/defold/extender/ExtenderApplication 0%
com/defold/extender/ExtenderBuildState 63.1% 57.1%
com/defold/extender/ExtenderConst 0%
com/defold/extender/ExtenderController 17.6% 21.9%
com/defold/extender/ExtenderException 85.7%
com/defold/extender/ExtenderUtil 66.5% 57.6%
com/defold/extender/ExtenderYamlSafeConstructor 100%
com/defold/extender/ExtensionManifestValidator 94.3% 84.6%
com/defold/extender/ManifestConfiguration 100%
com/defold/extender/ManifestPlatformConfig 100%
com/defold/extender/PlatformConfig 100%
com/defold/extender/PlatformNotSupportedException 0%
com/defold/extender/SandboxedPath 70.9% 69%
com/defold/extender/TemplateExecutor 33.3% 50%
com/defold/extender/Timer 0%
com/defold/extender/TreePrinter 0% 0%
com/defold/extender/Version 0%
com/defold/extender/VersionNotSupportedException 0%
com/defold/extender/WebSecurityConfig 0% 0%
com/defold/extender/WhitelistConfig 100%
com/defold/extender/ZipUtils 65.8% 56.2%
com/defold/extender/builders - 0%
Name Line Branch
com/defold/extender/builders 0% 0%
com/defold/extender/builders/CSharpBuilder 0% 0%
com/defold/extender/cache - 33.3%
Name Line Branch
com/defold/extender/cache 33.3% 16.6%
com/defold/extender/cache/CacheEntry 64.7% 75%
com/defold/extender/cache/CacheKeyGenerator 81.8% 100%
com/defold/extender/cache/DataCache
com/defold/extender/cache/DataCacheFactory 5% 0%
com/defold/extender/cache/DummyDataCache 80%
com/defold/extender/cache/GCPDataCache 0% 0%
com/defold/extender/cache/LocalDiskDataCache 64.7% 16.6%
com/defold/extender/cache/info - 100%
Name Line Branch
com/defold/extender/cache/info 100% ****
com/defold/extender/cache/info/CacheInfoFileParser 100%
com/defold/extender/cache/info/CacheInfoFileWriter 100%
com/defold/extender/cache/info/CacheInfoWrapper 100%
com/defold/extender/log - 0%
Name Line Branch
com/defold/extender/log 0% 0%
com/defold/extender/log/ExtenderLogEnhancer 0% 0%
com/defold/extender/log/ExtenderLogEnhancerConfiguration 0% 0%
com/defold/extender/log/Markers 0%
com/defold/extender/metrics - 7.4%
Name Line Branch
com/defold/extender/metrics 7.4% ****
com/defold/extender/metrics/MetricsWriter 7.4%
com/defold/extender/process - 48%
Name Line Branch
com/defold/extender/process 48% 55.5%
com/defold/extender/process/CommandLineTokenizer 95.5% 83.8%
com/defold/extender/process/ProcessExecutor 12.6% 9.3%
com/defold/extender/process/ProcessUtils 0% 0%
com/defold/extender/remote - 4.9%
Name Line Branch
com/defold/extender/remote 4.9% 0%
com/defold/extender/remote/RemoteBuildException 0%
com/defold/extender/remote/RemoteEngineBuilder 0% 0%
com/defold/extender/remote/RemoteHostConfiguration 0%
com/defold/extender/remote/RemoteInstanceConfig 87.5%
com/defold/extender/services - 44%
Name Line Branch
com/defold/extender/services 44% 40.8%
com/defold/extender/services/DataCacheService 79.8% 61.9%
com/defold/extender/services/DefoldSdkService 76.8% 63.8%
com/defold/extender/services/DefoldSdkServiceConfiguration
com/defold/extender/services/GCPInstanceService 0% 0%
com/defold/extender/services/GradleService 0%
com/defold/extender/services/GradleServiceInterface
com/defold/extender/services/HealthReporterService 80% 55.2%
com/defold/extender/services/MockGradleService 0%
com/defold/extender/services/RealGradleService 0% 0%
com/defold/extender/services/UserUpdateService 0% 0%
com/defold/extender/services/cocoapods - 53.2%
Name Line Branch
com/defold/extender/services/cocoapods 53.2% 56.5%
com/defold/extender/services/cocoapods/CocoaPodsService 2% 1.8%
com/defold/extender/services/cocoapods/CocoaPodsServiceBuildState 16.6% 0%
com/defold/extender/services/cocoapods/CreateBuildSpecArgs 60.7%
com/defold/extender/services/cocoapods/IConfigParser
com/defold/extender/services/cocoapods/LanguageSet 66.6% 50%
com/defold/extender/services/cocoapods/MainPodfile 20%
com/defold/extender/services/cocoapods/PlatformAndLanguageSet 0% 0%
com/defold/extender/services/cocoapods/PlatformSet 0% 0%
com/defold/extender/services/cocoapods/PlistBuddyWrapper 0% 0%
com/defold/extender/services/cocoapods/PodBuildSpec 81.4% 65.4%
com/defold/extender/services/cocoapods/PodfileParser 94.9% 82.2%
com/defold/extender/services/cocoapods/PodfileParsingException 100%
com/defold/extender/services/cocoapods/PodSpec 60.4% 40%
com/defold/extender/services/cocoapods/PodSpecParser 89.5% 79.1%
com/defold/extender/services/cocoapods/PodUtils 63% 51.4%
com/defold/extender/services/cocoapods/ResolvedPods 52.7% 45.6%
com/defold/extender/services/cocoapods/XCConfigParser 94.5% 85.2%
com/defold/extender/services/data - 80.7%
Name Line Branch
com/defold/extender/services/data 80.7% 75%
com/defold/extender/services/data/DefoldSdk 87.5% 75%
com/defold/extender/services/data/GCPInstanceState 0%
com/defold/extender/tracing - 18.7%
Name Line Branch
com/defold/extender/tracing 18.7% 12.5%
com/defold/extender/tracing/ExtenderExecutor 0% 0%
com/defold/extender/tracing/ExtenderTracerInterceptor 85.7% 50%
com/defold/extender/tracing/TraceIdInResponseServletFilter 0% 0%
com/defold/extender/utils - 0%
Name Line Branch
com/defold/extender/utils 0% 0%
com/defold/extender/utils/FrameworkUtil 0% 0%
com/defold/extender/utils/PodBuildUtil 0% 0%

}
return List.of(postProcessScalarValue(replaceValue, allValues, nextVisitedKeys));
} else {
LOGGER.warn("Can't find value for substitution for key {}", replaceKey);
// For example: ${PODS_ROOT}/Headers (where PODS_ROOT=${SRCROOT}) -> ${SRCROOT}/Headers
matcher = VARIABLE_PATTERN.matcher(element);
} else {
LOGGER.warn("Can't find value for substitution for key {}", replaceKey);
@AGulev AGulev merged commit 9740336 into dev May 21, 2026
4 of 5 checks passed
@AGulev AGulev deleted the fix-for-crashlitics branch May 21, 2026 16:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants