Update build_ios.sh

update script build unsigned ipa
This commit is contained in:
AnhTVc 2025-07-05 00:13:01 +07:00
parent 8078e59a83
commit 9f8c40f4b0

View file

@ -34,66 +34,23 @@ clang -v
# Generate XCodeProj
$QT_BIN_DIR/qt-cmake . -B $BUILD_DIR -GXcode -DQT_HOST_PATH=$QT_MACOS_ROOT_DIR
KEYCHAIN=amnezia.build.ios.keychain
KEYCHAIN_FILE=$HOME/Library/Keychains/${KEYCHAIN}-db
# Setup keychain
if [ "${IOS_SIGNING_CERT_BASE64+x}" ]; then
echo "Import certificate"
cd $BUILD_DIR
xcodebuild archive \
-project AmneziaVPN.xcodeproj \
-scheme AmneziaVPN \
-configuration Release \
-archivePath ./build/AmneziaVPN.xcarchive \
CODE_SIGNING_ALLOWED=NO \
CODE_SIGN_IDENTITY="" \
CODE_SIGNING_REQUIRED=NO
TRUST_CERT_CER=$BUILD_DIR/trust-cert.cer
SIGNING_CERT_P12=$BUILD_DIR/signing-cert.p12
mkdir -p Payload
echo $IOS_TRUST_CERT_BASE64 | base64 --decode > $TRUST_CERT_CER
echo $IOS_SIGNING_CERT_BASE64 | base64 --decode > $SIGNING_CERT_P12
cp -R ./build/AmneziaVPN.xcarchive/Products/Applications/AmneziaVPN.app Payload/
shasum -a 256 $TRUST_CERT_CER
shasum -a 256 $SIGNING_CERT_P12
zip -r AmneziaVPN_unsigned.ipa Payload
KEYCHAIN_PASS=$IOS_SIGNING_CERT_PASSWORD
rm -rf Payload
security create-keychain -p $KEYCHAIN_PASS $KEYCHAIN || true
security default-keychain -s $KEYCHAIN
security unlock-keychain -p $KEYCHAIN_PASS $KEYCHAIN
security default-keychain
security list-keychains
security import $TRUST_CERT_CER -k $KEYCHAIN -P "" -T /usr/bin/codesign
security import $SIGNING_CERT_P12 -k $KEYCHAIN -P $IOS_SIGNING_CERT_PASSWORD -T /usr/bin/codesign
security set-key-partition-list -S "apple-tool:,apple:,codesign:" -s -k $KEYCHAIN_PASS $KEYCHAIN
security find-identity -p codesigning
security set-keychain-settings $KEYCHAIN_FILE
security set-keychain-settings -t 3600 $KEYCHAIN_FILE
security unlock-keychain -p $KEYCHAIN_PASS $KEYCHAIN_FILE
# Copy provisioning prifiles
mkdir -p "$HOME/Library/MobileDevice/Provisioning Profiles/"
echo $IOS_APP_PROVISIONING_PROFILE | base64 --decode > ~/Library/MobileDevice/Provisioning\ Profiles/app.mobileprovision
echo $IOS_NE_PROVISIONING_PROFILE | base64 --decode > ~/Library/MobileDevice/Provisioning\ Profiles/ne.mobileprovision
shasum -a 256 ~/Library/MobileDevice/Provisioning\ Profiles/app.mobileprovision
shasum -a 256 ~/Library/MobileDevice/Provisioning\ Profiles/ne.mobileprovision
profile_uuid=`grep UUID -A1 -a ~/Library/MobileDevice/Provisioning\ Profiles/app.mobileprovision | grep -io "[-A-F0-9]\{36\}"`
profile_ne_uuid=`grep UUID -A1 -a ~/Library/MobileDevice/Provisioning\ Profiles/ne.mobileprovision | grep -io "[-A-F0-9]\{36\}"`
mv ~/Library/MobileDevice/Provisioning\ Profiles/app.mobileprovision ~/Library/MobileDevice/Provisioning\ Profiles/$profile_uuid.mobileprovision
mv ~/Library/MobileDevice/Provisioning\ Profiles/ne.mobileprovision ~/Library/MobileDevice/Provisioning\ Profiles/$profile_ne_uuid.mobileprovision
else
echo "Failed to import certificate, aborting..."
exit 1
fi
# Build project
xcodebuild \
"OTHER_CODE_SIGN_FLAGS=--keychain '$KEYCHAIN_FILE'" \
-configuration Release \
-scheme AmneziaVPN \
-destination "generic/platform=iOS,name=Any iOS'" \
-project $BUILD_DIR/AmneziaVPN.xcodeproj
# restore keychain
security default-keychain -s login.keychain
echo " Build setup completed successfully."