2021-07-24 19:03:06 +02:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
FLUFFYCHAT_ORIG_GROUP="im.fluffychat"
|
|
|
|
FLUFFYCHAT_ORIG_TEAM="4NXF6Z997G"
|
|
|
|
#FLUFFYCHAT_NEW_GROUP="com.example.fluffychat"
|
|
|
|
#FLUFFYCHAT_NEW_TEAM="ABCDE12345"
|
|
|
|
|
|
|
|
# In some cases (ie: running beta XCode releases) some pods haven't updated their minimum version
|
|
|
|
# but XCode will reject the package for using too old of a minimum version.
|
|
|
|
# This will fix that, but. Well. Use at your own risk.
|
|
|
|
# export I_PROMISE_IM_REALLY_SMART=1
|
|
|
|
|
|
|
|
# If you want to automatically install the app
|
|
|
|
# export FLUFFYCHAT_INSTALL_IPA=1
|
|
|
|
|
|
|
|
### Rotate IDs ###
|
|
|
|
[ -n "${FLUFFYCHAT_NEW_GROUP}" ] && {
|
|
|
|
# App group IDs
|
|
|
|
sed -i "" "s/group.${FLUFFYCHAT_ORIG_GROUP}.app/group.${FLUFFYCHAT_NEW_GROUP}.app/g" "ios/FluffyChat Share/FluffyChat Share.entitlements"
|
|
|
|
sed -i "" "s/group.${FLUFFYCHAT_ORIG_GROUP}.app/group.${FLUFFYCHAT_NEW_GROUP}.app/g" "ios/Runner/Runner.entitlements"
|
|
|
|
sed -i "" "s/group.${FLUFFYCHAT_ORIG_GROUP}.app/group.${FLUFFYCHAT_NEW_GROUP}.app/g" "ios/Runner.xcodeproj/project.pbxproj"
|
|
|
|
# Bundle identifiers
|
|
|
|
sed -i "" "s/${FLUFFYCHAT_ORIG_GROUP}.app/${FLUFFYCHAT_NEW_GROUP}.app/g" "ios/Runner.xcodeproj/project.pbxproj"
|
|
|
|
}
|
2021-07-25 02:02:16 +02:00
|
|
|
|
|
|
|
[ -n "${FLUFFYCHAT_NEW_TEAM}" ] && {
|
2021-07-24 19:03:06 +02:00
|
|
|
# Code signing team
|
|
|
|
sed -i "" "s/${FLUFFYCHAT_ORIG_TEAM}/${FLUFFYCHAT_NEW_TEAM}/g" "ios/Runner.xcodeproj/project.pbxproj"
|
|
|
|
}
|
|
|
|
cat << EOHELP
|
|
|
|
If something later in the build explodes, and looks possibly related to App IDs:
|
|
|
|
1. Ask Xcode nicely
|
|
|
|
- Open ios/Runner.xcodeproj in Xcode
|
|
|
|
- Go to the Signing & Capabilities tab
|
|
|
|
- Ask it to repair the certificates/register app IDs/etc
|
|
|
|
2. Fix it yourself
|
|
|
|
- Go to https://developer.apple.com/account/resources/identifiers/list
|
|
|
|
- Ensure that Xcode created the App ID successfully (for fluffychat.app and fluffychat.app.FluffyChat-Share)
|
|
|
|
- Under "App Groups", make sure it registered your group
|
|
|
|
- Back "App IDs", check that the App Group was added to each App ID's entitlements
|
|
|
|
EOHELP
|
|
|
|
|
|
|
|
### [optional] override pods minimum iphoneos deployment target ###
|
2021-07-25 02:02:16 +02:00
|
|
|
[ -n "${I_PROMISE_IM_REALLY_SMART}" ] && {
|
2021-07-24 19:03:06 +02:00
|
|
|
# 1. I'm sorry about the indentation't ;_; heredocs are weird about it
|
|
|
|
# 2. The patch basically just removes any preference on target iOS version
|
|
|
|
# This lets our default from ios/Flutter/AppFrameworkInfo.plist take precendence
|
|
|
|
cat << EOPATCH | patch --forward --reject-file=apple_please_fix_your_coreutils --silent ios/Podfile
|
|
|
|
diff --git a/ios/Podfile b/ios/Podfile
|
|
|
|
index 9411102b..0446120a 100644
|
|
|
|
--- a/ios/Podfile
|
|
|
|
+++ b/ios/Podfile
|
|
|
|
@@ -37,5 +37,8 @@ end
|
|
|
|
post_install do |installer|
|
|
|
|
installer.pods_project.targets.each do |target|
|
|
|
|
flutter_additional_ios_build_settings(target)
|
|
|
|
+ target.build_configurations.each do |config|
|
|
|
|
+ config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET'
|
|
|
|
+ end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
EOPATCH
|
|
|
|
rm -f apple_please_fix_your_coreutils
|
|
|
|
}
|
|
|
|
|
|
|
|
### Make release build ###
|
|
|
|
flutter build ipa --release
|
|
|
|
|
|
|
|
### [optional] Install release build ###
|
2021-07-25 02:02:16 +02:00
|
|
|
[ -n "${FLUFFYCHAT_INSTALL_IPA}" ] && {
|
2021-07-24 19:03:06 +02:00
|
|
|
TMPDIR=$(mktemp -d)
|
|
|
|
# 1. Turn the xcarchive that flutter created into a dev-signed IPA
|
|
|
|
echo '{"compileBitcode":false,"method":"development"}' | plutil -convert xml1 -o "${TMPDIR}/options.plist" -
|
|
|
|
xcodebuild -exportArchive -archivePath ./build/ios/archive/Runner.xcarchive -exportPath "${TMPDIR}" -exportOptionsPlist "${TMPDIR}/options.plist"
|
|
|
|
# 2. ...and install it on your connected devices
|
|
|
|
cfgutil --foreach install-app "${TMPDIR}/fluffychat.ipa"
|
|
|
|
rm -rf "${TMPDIR}"
|
|
|
|
}
|