Skip to main content

Posts

Showing posts with the label Xcode

Fixing "ITMS-91053: Missing API Declaration" in Flutter iOS Builds

  Few things disrupt a release pipeline like a rejection email from App Store Connect immediately after a successful CI/CD build. If you are targeting iOS 17+, you are likely encountering   ITMS-91053: Missing API Declaration . Apple now enforces strict declarations for "Required Reason APIs." If your Flutter app—or any plugin you rely on—uses specific APIs (like  NSUserDefaults ,  stat() , or  fstat() ), you must declare a valid reason in a  PrivacyInfo.xcprivacy  manifest. Failure to do so results in warnings now and rejections starting May 1, 2024. The Root Cause: API Fingerprinting Apple's initiative is designed to prevent "fingerprinting"—the practice of using device signals to track users without consent. Historically, APIs like  NSUserDefaults  or file system timestamp attributes have been misused to generate unique device identifiers. Apple has categorized these into  Required Reason APIs . For a Flutter developer, this is tricky...

Solved: Flutter iOS 18 Build Failures & Xcode 16 "Session.modulevalidation" Errors

  The transition to Xcode 16 and the iOS 18 SDK has introduced a new class of build failures for Flutter developers. You have likely encountered a build log ending abruptly with a   Session.modulevalidation   error, often accompanied by "Input file lists" errors or corrupted   DerivedData   warnings. These errors persist despite standard  flutter clean  operations and are particularly aggressive in CI/CD pipelines. This post details the architectural root cause and provides the definitive configuration fix to resolve these collisions permanently. The Root Cause: Clang Module Cache Collisions To understand why this error occurs, you must look at how Xcode 16's build system handles Precompiled Modules (PCMs). When Swift or Objective-C code imports a module (like a Flutter plugin), the compiler generates a PCM to speed up future compilation. These modules are cached in  DerivedData/ModuleCache.noindex . Xcode 16 introduced stricter validation for the...