You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xcode9.3(Objective-C)上传App至App Store时PayUmoney iOS SDK多问题求助

Fixing PayUmoney iOS SDK Upload Issues with Xcode 9.3 (Objective-C)

Hey there, I’ve dealt with similar framework architecture and App Store upload headaches before, so let me walk you through how to resolve these PayUmoney SDK problems step by step:

The Root Cause

All those ITMS errors (90087, 90209, 90125) and warning (90080) boil down to two key issues:

  1. The PayUmoney SDK frameworks (PayUmoneyCoreSDK.framework, CitrusGraphics.framework, PlugNPlay.framework) include simulator-only architectures (x86_64/i386), which Apple rejects for App Store submissions.
  2. The frameworks aren’t properly configured for Position Independent Executables (PIE) or correct segment alignment, which violates App Store binary requirements.

Removing them from Embedded Binaries lets you upload, but obviously breaks the app at runtime because the libraries are missing. Re-integrating the SDK as-is just brings back the same problems since the core framework issues aren’t fixed.

Step-by-Step Solutions

1. Strip Simulator Architectures from Frameworks

First, we need to remove the unsupported x86_64 and i386 architectures from each framework. You can do this manually via Terminal:

  • Navigate to the directory of each framework in your project:
    cd /path/to/your/project/Frameworks/PayUmoneyCoreSDK.framework
    
  • Run the lipo command to strip the unwanted architectures:
    lipo -remove x86_64 -remove i386 PayUmoneyCoreSDK -o PayUmoneyCoreSDK
    
  • Repeat this exact command for CitrusGraphics.framework and PlugNPlay.framework (replace the framework name in the command accordingly).

To verify the fix, run:

lipo -info PayUmoneyCoreSDK.framework/PayUmoneyCoreSDK

You should only see ARM architectures (armv7, arm64) listed.

2. Enable Position Independent Executable (PIE)

Fix the ITMS-90080 warning by ensuring PIE is enabled for your project:

  • In Xcode, go to your project’s Build Settings.
  • Search for Position Independent Executable and set its value to YES.

3. Re-Embed Frameworks Correctly

Don’t remove the frameworks from Embedded Binaries—instead, make sure they’re set up properly:

  • Go to your project’s General tab.
  • Under Embedded Binaries, re-add the three PayUmoney frameworks.
  • Ensure each framework’s embedding option is set to Embed & Sign (this ensures Xcode handles proper signing and architecture stripping during build).

To avoid manually stripping architectures every time you update the SDK, add a Run Script Phase to your project:

  1. In Xcode, go to your target’s Build Phases tab.
  2. Click the + button and select New Run Script Phase.
  3. Drag this new phase before the Embed Frameworks phase.
  4. Paste the following script into the script field:
    APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"
    
    # Strip unused architectures from embedded frameworks
    find "$APP_PATH" -name '*.framework' -type d | while read -r FRAMEWORK
    do
        FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable)
        FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME"
        echo "Processing framework: $FRAMEWORK_EXECUTABLE_PATH"
    
        EXTRACTED_ARCHS=()
    
        for ARCH in $ARCHS
        do
            echo "Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME"
            lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH"
            EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH")
        done
    
        echo "Merging extracted architectures"
        lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}"
        rm "${EXTRACTED_ARCHS[@]}"
    
        echo "Replacing original executable with merged version"
        rm "$FRAMEWORK_EXECUTABLE_PATH"
        mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH"
    
    done
    

This script automatically strips any unused architectures during the build process, ensuring your app only includes the ARM architectures needed for App Store submission.

5. Fix ITMS-90125 Encryption Error

For the encryption info error:

  • In your project’s Build Settings, search for Enable Encryption and set it to NO (unless your app explicitly uses encryption that requires export compliance—most apps don’t need this enabled).
  • If the issue persists, confirm that the PayUmoney frameworks are built with Apple’s linker (this is something PayUmoney’s team should fix, but the above steps should mitigate it for submission).

Final Checks

  1. Test your app on a physical iOS device to ensure it doesn’t crash (this confirms the frameworks are properly embedded and accessible).
  2. Create an archive and upload it to App Store Connect—you should no longer see the ITMS errors/warnings.

Also, follow up with PayUmoney’s support team and share these details: their updated SDK includes unsupported simulator architectures and lacks proper PIE configuration, which breaks App Store submissions. Since the old SDK worked, their new build process likely has a regression that needs fixing.

内容的提问来源于stack exchange,提问作者Vinayak Bhor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:20:19