-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Description
Describe the bug
iOS app, which uses the latest version of the AWS SDK (1.11.561 static), is being rejected by Apple during the validation process when uploading to App Store Connect. See the current behaviuor and steps to reproduce for more details.
Regression Issue
- Select this option if this issue appears to be a regression.
Expected Behavior
App Store app bundle validation passes without any issues when app uses the AWS SDK.
Current Behavior
App Store validation fails with the following error message:
The app references non-public symbols in Payload/App.app:
_CCCryptorGCMAddAAD, _CCCryptorGCMFinalize, _CCCryptorGCMSetIV
Reproduction Steps
- Build OpenSsl and cURL for iOS.
- Configure AWS SDK as follows:
cmake . -B ./build -G Xcode -Wno-dev -DCMAKE_BUILD_TYPE=Release -DCPP_STANDARD=17
-DBUILD_SHARED_LIBS=OFF -DTARGET_ARCH=APPLE -DBUILD_ONLY="core;cognito-idp"
-DBUILD_DEPS=ON -DENABLE_TESTING=OFF -DAWS_SDK_WARNINGS_ARE_ERRORS=OFF
-DCMAKE_INSTALL_PREFIX=../install/awssdk
-DCMAKE_OSX_SYSROOT=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk
-DCMAKE_OSX_ARCHITECTURES=arm64
-DCMAKE_SYSTEM_NAME=Darwin
-DCMAKE_OSX_DEPLOYMENT_TARGET="13.0"
-DENABLE_CURL_CLIENT=ON
-DCURL_INCLUDE_DIR=/path/to/curl/include
-DCURL_LIBRARY=/path/to/curl/lib/libcurl.a
-DENABLE_OPENSSL_ENCRYPTION=ON
-DUSE_OPENSSL=ON
-DOPENSSL_CRYPTO_LIBRARY=/path/to/openssl/lib/libcrypto.a
-DOPENSSL_SSL_LIBRARY=/path/to/openssl/lib/libssl.a
-DOPENSSL_INCLUDE_DIR=/path/to/openssl/include- Build it
cmake --build ./build --config=Release --target install --parallel- Link it to your app and try upload it to the App Store
Possible Solution
Maybe allowing of custom openssl and libcrypto usage would resolve the problem.
Additional Information/Context
There was the same issue a long time ago: #1619. Building the SDK with the following arguments -DENABLE_OPENSSL_ENCRYPTION=ON -DOPENSSL_CRYPTO_LIBRARY=/path/to/lib/openssl-1.1.1k/ios/lib/libcrypto.a -DOPENSSL_SSL_LIBRARY=/path/to/lib/openssl-1.1.1k/ios/lib/libssl.a -DOPENSSL_INCLUDE_DIR=/path/to/lib/openssl-1.1.1k/ios/include resolves this issue for old SDK versions (like 1.9.220), but new SDK versions don't use given OPENSSL_SSL_LIBRARY option:
CMake Warning:
Manually-specified variables were not used by the project:
OPENSSL_SSL_LIBRARY
AWS CPP SDK version used
1.11.561
Compiler and Version used
Apple clang version 17.0.0 (clang-1700.0.13.3) Target: arm64-apple-darwin24.4.0
Operating System and version
macOS 15.4.1