summaryrefslogtreecommitdiff
path: root/ios
diff options
context:
space:
mode:
authorMinh Nguyễn <mxn@1ec5.org>2015-12-13 16:03:36 -0800
committerMinh Nguyễn <mxn@1ec5.org>2016-01-22 14:45:57 -0800
commitf9360c3f4f0488ddfea9fb62e535cca251255155 (patch)
tree50ac92facccda30492d10cb2ab025bc2e61d920c /ios
parent9350d3f78cee508f98bbae8d31a3a47007cb0322 (diff)
downloadqtlocation-mapboxgl-f9360c3f4f0488ddfea9fb62e535cca251255155.tar.gz
[ios] Strip Simulator content when archiving
Copied strip-frameworks.sh from realm/realm-cocoa@7cc31db631c323bb649aec1e311693a599a37f05 for realm/realm-cocoa#2759. This script, which is embedded in the dynamic framework, strips out content for invalid architectures from any embedded framework and specifically strips out Simulator content when archiving to work around an App Store bug. Rewrote the iOS setup documentation. In particular, the MAPBOX_ACCESS_TOKEN environment variable is only for use with the iosapp demo application and doesn’t work in third-party applications.
Diffstat (limited to 'ios')
-rw-r--r--ios/framework/strip-frameworks.sh70
1 files changed, 70 insertions, 0 deletions
diff --git a/ios/framework/strip-frameworks.sh b/ios/framework/strip-frameworks.sh
new file mode 100644
index 0000000000..9deb404ca1
--- /dev/null
+++ b/ios/framework/strip-frameworks.sh
@@ -0,0 +1,70 @@
+################################################################################
+#
+# Copyright 2015 Realm Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
+
+# This script strips all non-valid architectures from dynamic libraries in
+# the application's `Frameworks` directory.
+#
+# The following environment variables are required:
+#
+# BUILT_PRODUCTS_DIR
+# FRAMEWORKS_FOLDER_PATH
+# VALID_ARCHS
+# EXPANDED_CODE_SIGN_IDENTITY
+
+
+# Signs a framework with the provided identity
+code_sign() {
+ # Use the current code_sign_identitiy
+ echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}"
+ echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements $1"
+ /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements "$1"
+}
+
+echo "Stripping frameworks"
+cd "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+
+for file in $(find . -type f -perm +111); do
+ # Skip non-dynamic libraries
+ if ! [[ "$(file "$file")" == *"dynamically linked shared library"* ]]; then
+ continue
+ fi
+ # Get architectures for current file
+ archs="$(lipo -info "${file}" | rev | cut -d ':' -f1 | rev)"
+ stripped=""
+ for arch in $archs; do
+ if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then
+ # Strip non-valid architectures in-place
+ lipo -remove "$arch" -output "$file" "$file" || exit 1
+ stripped="$stripped $arch"
+ fi
+ done
+ if [[ "$stripped" != "" ]]; then
+ echo "Stripped $file of architectures:$stripped"
+ if [ "${CODE_SIGNING_REQUIRED}" == "YES" ]; then
+ code_sign "${file}"
+ fi
+ fi
+done
+
+if [ "$ACTION" = "install" ]; then
+ echo "Copy .bcsymbolmap files to .xcarchive"
+ find . -name '*.bcsymbolmap' -type f -exec mv {} "${CONFIGURATION_BUILD_DIR}" \;
+else
+ # Delete *.bcsymbolmap files from framework bundle unless archiving
+ find . -name '*.bcsymbolmap' -type f -exec rm -rf "{}" +\;
+fi