Преглед изворни кода

Updated gomobile pinned version to ce6a79cf

Amir Khan пре 3 година
родитељ
комит
5065b93b1d

+ 32 - 39
MobileLibrary/iOS/PsiphonTunnel/PsiphonTunnel.xcodeproj/project.pbxproj

@@ -3,22 +3,18 @@
 	archiveVersion = 1;
 	classes = {
 	};
-	objectVersion = 46;
+	objectVersion = 52;
 	objects = {
 
 /* Begin PBXBuildFile section */
+		29EA5B41281B01640092BA56 /* Psi.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29EA5B3E281B00EE0092BA56 /* Psi.xcframework */; };
+		29EA5B42281B01640092BA56 /* Psi.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 29EA5B3E281B00EE0092BA56 /* Psi.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
 		4E89F7FE1E2ED3CE00005F4C /* LookupIPv6.c in Sources */ = {isa = PBXBuildFile; fileRef = 4E89F7FC1E2ED3CE00005F4C /* LookupIPv6.c */; };
 		4E89F7FF1E2ED3CE00005F4C /* LookupIPv6.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E89F7FD1E2ED3CE00005F4C /* LookupIPv6.h */; };
 		52BE676825B8A615002DB553 /* PsiphonClientPlatform.h in Headers */ = {isa = PBXBuildFile; fileRef = 52BE676725B8A615002DB553 /* PsiphonClientPlatform.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		52BE676D25B8A635002DB553 /* PsiphonClientPlatform.m in Sources */ = {isa = PBXBuildFile; fileRef = 52BE676B25B8A635002DB553 /* PsiphonClientPlatform.m */; };
-		660E0B7A1E2D6EB6002BF5D4 /* Psi in Frameworks */ = {isa = PBXBuildFile; fileRef = 660E0B791E2D6EB6002BF5D4 /* Psi */; };
 		662659271DD270E900872F6C /* Reachability.h in Headers */ = {isa = PBXBuildFile; fileRef = 662659251DD270E900872F6C /* Reachability.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		662659281DD270E900872F6C /* Reachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 662659261DD270E900872F6C /* Reachability.m */; };
-		6685BDCA1E2E882800F0E414 /* Psi.h in Headers */ = {isa = PBXBuildFile; fileRef = 6685BDC61E2E882800F0E414 /* Psi.h */; };
-		6685BDCB1E2E882800F0E414 /* ref.h in Headers */ = {isa = PBXBuildFile; fileRef = 6685BDC71E2E882800F0E414 /* ref.h */; };
-		6685BDCD1E2E88A200F0E414 /* Psi-meta.h in Headers */ = {isa = PBXBuildFile; fileRef = 6685BDCC1E2E88A200F0E414 /* Psi-meta.h */; };
-		6685BDD41E2EBB1000F0E414 /* GoPsi.objc.h in Headers */ = {isa = PBXBuildFile; fileRef = 6685BDD21E2EBB1000F0E414 /* GoPsi.objc.h */; };
-		6685BDD51E2EBB1000F0E414 /* Universe.objc.h in Headers */ = {isa = PBXBuildFile; fileRef = 6685BDD31E2EBB1000F0E414 /* Universe.objc.h */; };
 		669541B71EF9FECF0038E125 /* build-git-commit.txt in Resources */ = {isa = PBXBuildFile; fileRef = 669541B61EF9FECF0038E125 /* build-git-commit.txt */; };
 		66BAD3351E525FBC00CD06DE /* JailbreakCheck.h in Headers */ = {isa = PBXBuildFile; fileRef = 66BAD3331E525FBC00CD06DE /* JailbreakCheck.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		66BAD3361E525FBC00CD06DE /* JailbreakCheck.m in Sources */ = {isa = PBXBuildFile; fileRef = 66BAD3341E525FBC00CD06DE /* JailbreakCheck.m */; };
@@ -74,30 +70,27 @@
 /* End PBXContainerItemProxy section */
 
 /* Begin PBXCopyFilesBuildPhase section */
-		66BDB0481DA6D6FA0079384C /* CopyFiles */ = {
+		29EA5B43281B01640092BA56 /* Embed Frameworks */ = {
 			isa = PBXCopyFilesBuildPhase;
 			buildActionMask = 2147483647;
 			dstPath = "";
 			dstSubfolderSpec = 10;
 			files = (
+				29EA5B42281B01640092BA56 /* Psi.xcframework in Embed Frameworks */,
 			);
+			name = "Embed Frameworks";
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 /* End PBXCopyFilesBuildPhase section */
 
 /* Begin PBXFileReference section */
+		29EA5B3E281B00EE0092BA56 /* Psi.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = Psi.xcframework; path = PsiphonTunnel/Psi.xcframework; sourceTree = "<group>"; };
 		4E89F7FC1E2ED3CE00005F4C /* LookupIPv6.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = LookupIPv6.c; sourceTree = "<group>"; };
 		4E89F7FD1E2ED3CE00005F4C /* LookupIPv6.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LookupIPv6.h; sourceTree = "<group>"; };
 		52BE676725B8A615002DB553 /* PsiphonClientPlatform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PsiphonClientPlatform.h; sourceTree = "<group>"; };
 		52BE676B25B8A635002DB553 /* PsiphonClientPlatform.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PsiphonClientPlatform.m; sourceTree = "<group>"; };
-		660E0B791E2D6EB6002BF5D4 /* Psi */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Psi; path = PsiphonTunnel/Psi.framework/Versions/A/Psi; sourceTree = "<group>"; };
 		662659251DD270E900872F6C /* Reachability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Reachability.h; sourceTree = "<group>"; };
 		662659261DD270E900872F6C /* Reachability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Reachability.m; sourceTree = "<group>"; };
-		6685BDC61E2E882800F0E414 /* Psi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Psi.h; path = PsiphonTunnel/Psi.framework/Versions/A/Headers/Psi.h; sourceTree = "<group>"; };
-		6685BDC71E2E882800F0E414 /* ref.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ref.h; path = PsiphonTunnel/Psi.framework/Versions/A/Headers/ref.h; sourceTree = "<group>"; };
-		6685BDCC1E2E88A200F0E414 /* Psi-meta.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "Psi-meta.h"; path = "PsiphonTunnel/Psi-meta.h"; sourceTree = "<group>"; };
-		6685BDD21E2EBB1000F0E414 /* GoPsi.objc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GoPsi.objc.h; path = PsiphonTunnel/Psi.framework/Versions/A/Headers/GoPsi.objc.h; sourceTree = "<group>"; };
-		6685BDD31E2EBB1000F0E414 /* Universe.objc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Universe.objc.h; path = PsiphonTunnel/Psi.framework/Versions/A/Headers/Universe.objc.h; sourceTree = "<group>"; };
 		6685BDD81E300AC200F0E414 /* strip-frameworks.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; name = "strip-frameworks.sh"; path = "scripts/strip-frameworks.sh"; sourceTree = "<group>"; };
 		669541B61EF9FECF0038E125 /* build-git-commit.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "build-git-commit.txt"; sourceTree = "<group>"; };
 		66BAD3331E525FBC00CD06DE /* JailbreakCheck.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JailbreakCheck.h; sourceTree = "<group>"; };
@@ -152,7 +145,7 @@
 			buildActionMask = 2147483647;
 			files = (
 				EFED7EBF1F587F6E0078980F /* libresolv.tbd in Frameworks */,
-				660E0B7A1E2D6EB6002BF5D4 /* Psi in Frameworks */,
+				29EA5B41281B01640092BA56 /* Psi.xcframework in Frameworks */,
 				CEFC764225B1F358003A2A52 /* Network.framework in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
@@ -186,19 +179,6 @@
 			path = Network;
 			sourceTree = "<group>";
 		};
-		6685BDC31E2E881200F0E414 /* Psi */ = {
-			isa = PBXGroup;
-			children = (
-				660E0B791E2D6EB6002BF5D4 /* Psi */,
-				6685BDCC1E2E88A200F0E414 /* Psi-meta.h */,
-				6685BDC61E2E882800F0E414 /* Psi.h */,
-				6685BDC71E2E882800F0E414 /* ref.h */,
-				6685BDD21E2EBB1000F0E414 /* GoPsi.objc.h */,
-				6685BDD31E2EBB1000F0E414 /* Universe.objc.h */,
-			);
-			name = Psi;
-			sourceTree = "<group>";
-		};
 		66BAD3321E525FBC00CD06DE /* JailbreakCheck */ = {
 			isa = PBXGroup;
 			children = (
@@ -213,7 +193,6 @@
 			children = (
 				66BDB03C1DA6C7940079384C /* Resources */,
 				66BDB0221DA6BFCC0079384C /* PsiphonTunnel */,
-				6685BDC31E2E881200F0E414 /* Psi */,
 				66BDB02D1DA6BFCC0079384C /* PsiphonTunnelTests */,
 				66BDB0211DA6BFCC0079384C /* Products */,
 				EFED7EBD1F587F6E0078980F /* Frameworks */,
@@ -322,6 +301,7 @@
 		EFED7EBD1F587F6E0078980F /* Frameworks */ = {
 			isa = PBXGroup;
 			children = (
+				29EA5B3E281B00EE0092BA56 /* Psi.xcframework */,
 				CEFC764125B1F358003A2A52 /* Network.framework */,
 				EFED7EBE1F587F6E0078980F /* libresolv.tbd */,
 			);
@@ -336,26 +316,21 @@
 			buildActionMask = 2147483647;
 			files = (
 				CE3D1DA523906003009A4AF6 /* Backups.h in Headers */,
-				6685BDCB1E2E882800F0E414 /* ref.h in Headers */,
 				66BAD3351E525FBC00CD06DE /* JailbreakCheck.h in Headers */,
 				4E89F7FF1E2ED3CE00005F4C /* LookupIPv6.h in Headers */,
 				CE4616BF2539493600D1243E /* Reachability+HasNetworkConnectivity.h in Headers */,
 				662659271DD270E900872F6C /* Reachability.h in Headers */,
 				66BDB05D1DC26CCC0079384C /* SBJson4StreamParser.h in Headers */,
-				6685BDD41E2EBB1000F0E414 /* GoPsi.objc.h in Headers */,
 				52BE676825B8A615002DB553 /* PsiphonClientPlatform.h in Headers */,
-				6685BDD51E2EBB1000F0E414 /* Universe.objc.h in Headers */,
 				CECF01492538DD0B00CD3E5C /* PsiphonProviderNetwork.h in Headers */,
 				66BDB05F1DC26CCC0079384C /* SBJson4StreamParserState.h in Headers */,
 				66BDB0311DA6BFCC0079384C /* PsiphonTunnel.h in Headers */,
 				CE9549F525C8AAEE00F9AF86 /* Redactor.h in Headers */,
-				6685BDCA1E2E882800F0E414 /* Psi.h in Headers */,
 				66BDB0651DC26CCC0079384C /* SBJson4StreamWriterState.h in Headers */,
 				CECF01502538E14B00CD3E5C /* NetworkID.h in Headers */,
 				66BDB05B1DC26CCC0079384C /* SBJson4Parser.h in Headers */,
 				CEDBA51225B7737C007685E2 /* NetworkInterface.h in Headers */,
 				CEDE547924EBF5980053566E /* PsiphonProviderFeedbackHandlerShim.h in Headers */,
-				6685BDCD1E2E88A200F0E414 /* Psi-meta.h in Headers */,
 				66BDB05A1DC26CCC0079384C /* SBJson4.h in Headers */,
 				66BDB0611DC26CCC0079384C /* SBJson4StreamTokeniser.h in Headers */,
 				CEC229FC24F047E700534D04 /* PsiphonProviderNoticeHandlerShim.h in Headers */,
@@ -377,7 +352,7 @@
 				66BDB01D1DA6BFCC0079384C /* Headers */,
 				669541B51EF9FDB60038E125 /* ShellScript */,
 				66BDB01E1DA6BFCC0079384C /* Resources */,
-				66BDB0481DA6D6FA0079384C /* CopyFiles */,
+				29EA5B43281B01640092BA56 /* Embed Frameworks */,
 			);
 			buildRules = (
 			);
@@ -637,10 +612,15 @@
 				DYLIB_CURRENT_VERSION = 1;
 				DYLIB_INSTALL_NAME_BASE = "@rpath";
 				ENABLE_BITCODE = NO;
+				EXCLUDED_ARCHS = armv7;
 				INFOPLIST_FILE = PsiphonTunnel/Info.plist;
 				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
 				IPHONEOS_DEPLOYMENT_TARGET = 9.3;
-				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+				LD_RUNPATH_SEARCH_PATHS = (
+					"$(inherited)",
+					"@executable_path/Frameworks",
+					"@loader_path/Frameworks",
+				);
 				LIBRARY_SEARCH_PATHS = (
 					"$(inherited)",
 					"$(PROJECT_DIR)/PsiphonTunnel/Psi.framework/Versions/A",
@@ -662,10 +642,15 @@
 				DYLIB_CURRENT_VERSION = 1;
 				DYLIB_INSTALL_NAME_BASE = "@rpath";
 				ENABLE_BITCODE = NO;
+				EXCLUDED_ARCHS = armv7;
 				INFOPLIST_FILE = PsiphonTunnel/Info.plist;
 				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
 				IPHONEOS_DEPLOYMENT_TARGET = 9.3;
-				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+				LD_RUNPATH_SEARCH_PATHS = (
+					"$(inherited)",
+					"@executable_path/Frameworks",
+					"@loader_path/Frameworks",
+				);
 				LIBRARY_SEARCH_PATHS = (
 					"$(inherited)",
 					"$(PROJECT_DIR)/PsiphonTunnel/Psi.framework/Versions/A",
@@ -681,7 +666,11 @@
 			buildSettings = {
 				DEVELOPMENT_TEAM = Q6HLNEX92A;
 				INFOPLIST_FILE = PsiphonTunnelTests/Info.plist;
-				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+				LD_RUNPATH_SEARCH_PATHS = (
+					"$(inherited)",
+					"@executable_path/Frameworks",
+					"@loader_path/Frameworks",
+				);
 				PRODUCT_BUNDLE_IDENTIFIER = com.psiphon3.ios.PsiphonTunnelTests;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 			};
@@ -692,7 +681,11 @@
 			buildSettings = {
 				DEVELOPMENT_TEAM = Q6HLNEX92A;
 				INFOPLIST_FILE = PsiphonTunnelTests/Info.plist;
-				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+				LD_RUNPATH_SEARCH_PATHS = (
+					"$(inherited)",
+					"@executable_path/Frameworks",
+					"@loader_path/Frameworks",
+				);
 				PRODUCT_BUNDLE_IDENTIFIER = com.psiphon3.ios.PsiphonTunnelTests;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 			};

+ 1 - 1
MobileLibrary/iOS/PsiphonTunnel/PsiphonTunnel/Network/IPv6Synthesizer.h

@@ -18,7 +18,7 @@
  */
 
 #import <Foundation/Foundation.h>
-#import "Psi-meta.h"
+#import <Psi/Psi.h>
 
 NS_ASSUME_NONNULL_BEGIN
 

+ 0 - 21
MobileLibrary/iOS/PsiphonTunnel/PsiphonTunnel/Psi-meta.h

@@ -1,21 +0,0 @@
-/*
- * Copyright (c) 2017, Psiphon Inc.
- * All rights reserved.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#import "ref.h"
-#import "Psi.h"

+ 1 - 1
MobileLibrary/iOS/PsiphonTunnel/PsiphonTunnel/Psiphon/PsiphonProviderNetwork.h

@@ -18,7 +18,7 @@
  */
 
 #import <Foundation/Foundation.h>
-#import "Psi-meta.h"
+#import <Psi/Psi.h>
 
 NS_ASSUME_NONNULL_BEGIN
 

+ 1 - 1
MobileLibrary/iOS/PsiphonTunnel/PsiphonTunnel/Psiphon/PsiphonProviderNoticeHandlerShim.h

@@ -18,7 +18,7 @@
  */
 
 #import <Foundation/Foundation.h>
-#import "Psi-meta.h"
+#import <Psi/Psi.h>
 
 NS_ASSUME_NONNULL_BEGIN
 

+ 1 - 1
MobileLibrary/iOS/PsiphonTunnel/PsiphonTunnel/PsiphonProviderFeedbackHandlerShim.h

@@ -19,7 +19,7 @@
 
 #import <Foundation/Foundation.h>
 #import "PsiphonTunnel.h"
-#import "Psi-meta.h"
+#import <Psi/Psi.h>
 
 NS_ASSUME_NONNULL_BEGIN
 

+ 1 - 1
MobileLibrary/iOS/PsiphonTunnel/PsiphonTunnel/PsiphonTunnel.m

@@ -22,8 +22,8 @@
 #import <stdatomic.h>
 #import <CoreTelephony/CTTelephonyNetworkInfo.h>
 #import <CoreTelephony/CTCarrier.h>
+#import <Psi/Psi.h>
 #import "IPv6Synthesizer.h"
-#import "Psi-meta.h"
 #import "PsiphonProviderFeedbackHandlerShim.h"
 #import "PsiphonProviderNoticeHandlerShim.h"
 #import "PsiphonProviderNetwork.h"

+ 21 - 63
MobileLibrary/iOS/build-psiphon-framework.sh

@@ -7,7 +7,7 @@ if [ -z ${1+x} ]; then BUILD_TAGS=""; else BUILD_TAGS="$1"; fi
 # Modify this value as we use newer Go versions.
 GO_VERSION_REQUIRED="1.17.9"
 
-# At this time, gomobile doesn't support modules
+# At this time, psiphon-tunnel-core doesn't support modules
 export GO111MODULE=off
 
 # Reset the PATH to macOS default. This is mainly so we don't execute the wrong
@@ -41,7 +41,7 @@ export PATH=${GOPATH}/bin:${PATH}
 # The GOPATH we're using is temporary, so make sure there isn't one from a previous run.
 rm -rf "${GOPATH}"
 
-GOMOBILE_PINNED_REV=92f3b9caf7ba8f4f9c10074225afcba0cba47a62
+GOMOBILE_PINNED_REV=ce6a79cf6a13dd77095a6f8dbee5f39848fa7da1
 GOMOBILE_PATH=${GOPATH}/src/golang.org/x/mobile/cmd/gomobile
 
 TUNNEL_CORE_SRC_DIR=${GOPATH}/src/github.com/Psiphon-Labs/psiphon-tunnel-core
@@ -69,45 +69,16 @@ fi
 
 # Builds Psi.framework library for the given platform.
 #
-# - Parameter 1: Possible values are "ios" and "simulator"
-# - Parameter 2: Variable name to set output path to.
+# - Parameter 1: `gomobile bind` -target option value
+# - Parameter 2: Variable name where gomobile output will be set to.
 function gomobile_build_for_platform() {
 
   # Possible values are "ios" and "simulator"
-  local PLATFORM=$1
+  local TARGETS=$1
 
-  local TARGETS=""
+  echo "Build library for targets ${TARGETS}"
 
-  # gomobile pinned version 92f3b9c list of
-  # valid archs are "arm", "arm64", "386", "amd64".
-  # https://github.com/golang/mobile/blob/92f3b9caf7ba8f4f9c10074225afcba0cba47a62/cmd/gomobile/env.go#L26
-  #
-  # As of Go 1.15, "ios/arm" is no longer supported: https://golang.org/doc/go1.15#darwin
-  case "${PLATFORM}" in
-    ios)
-      TARGETS="ios/arm64"
-      ;;
-    simulator)
-      TARGETS="ios/amd64"
-      ;;
-    *)
-      echo "FATAL ERROR: Unknown platform ${PLATFORM}"
-      exit 1
-      ;;
-  esac
-
-  echo "Build library for platform ${PLATFORM}"
-
-  local FRAMEWORK="Psi"
-
-  # Since frameworks for all platforms share the same name "Psi.framework",
-  # each framework should be in its own directory.
-  local INTERMEDIATE_OUPUT_DIR="${BUILD_DIR}/${PLATFORM}-psi-framework"
-
-  local INTERMEDIATE_OUPUT_FILE="${FRAMEWORK}.framework"
-  # local FRAMEWORK_BINARY="${INTERMEDIATE_OUPUT_DIR}/${INTERMEDIATE_OUPUT_FILE}/Versions/A/${FRAMEWORK}"
-
-  local GOBIND_OUT="${INTERMEDIATE_OUPUT_DIR}/${INTERMEDIATE_OUPUT_FILE}"
+  local GOBIND_OUT="${BUILD_DIR}/gobind-framework/Psi.xcframework"
 
   # We're using a generated-code prefix to workaround https://github.com/golang/go/issues/18693
   # CGO_CFLAGS_ALLOW is to workaround https://github.com/golang/go/issues/23742 in Go 1.9.4
@@ -147,6 +118,11 @@ cd "${GOPATH}"/src/golang.org/x/mobile/cmd/gomobile
 git checkout master
 git checkout -b pinned ${GOMOBILE_PINNED_REV}
 
+# Patch gomobile to edit a command that assumes modules
+mv init.go init.go.orig
+sed -e 's/golang.org\/x\/mobile\/cmd\/gobind@latest/golang.org\/x\/mobile\/cmd\/gobind/g' init.go.orig > init.go
+
+
 go install
 "${GOPATH}"/bin/gomobile init -v -x
 if [[ $? != 0 ]]; then
@@ -154,10 +130,6 @@ if [[ $? != 0 ]]; then
   exit 1
 fi
 
-#
-# gomobile bind
-#
-
 # Ensure BUILD* variables reflect the tunnel-core repo
 cd "${TUNNEL_CORE_SRC_DIR}"
 
@@ -202,34 +174,23 @@ rm -rf "${BUILD_DIR}"
 
 
 #
-# Builds Psi.framework for each platform/variant.
+# Builds Psi.xcframework
 #
 IOS_PSI_FRAMEWORK=""
 gomobile_build_for_platform "ios" IOS_PSI_FRAMEWORK
 
-SIMULATOR_PSI_FRAMEWORK=""
-gomobile_build_for_platform "simulator" SIMULATOR_PSI_FRAMEWORK
-
+echo "$IOS_PSI_FRAMEWORK"
 
 #
-# Xcode archive for each platform.
+# Copies gobind output Psi.xcframework to the Xcode project
 #
 
-# Xcode project requires Psi.framework bundle at $PSI_FRAMEWORK.
-# Except for macOS, Apple does not support umbrella frameworks that
-# contain other frameworks. So for building framework for each platform/variant,
-# the Psi.framework should be copied to the path at $PSI_FRAMEWORK_PATH.
-PSI_FRAMEWORK_PATH="${BASE_DIR}/PsiphonTunnel/PsiphonTunnel"
-PSI_FRAMEWORK="${PSI_FRAMEWORK_PATH}/Psi.framework"
-
+rm -rf "${BASE_DIR}/PsiphonTunnel/PsiphonTunnel/Psi.xcframework"
+cp -r "${IOS_PSI_FRAMEWORK}" "${BASE_DIR}/PsiphonTunnel/PsiphonTunnel"
 
+#
 # Build PsiphonTunnel framework for iOS.
-echo "$IOS_PSI_FRAMEWORK"
-echo "$SIMULATOR_PSI_FRAMEWORK"
-
-# Copies iOS Psi.framework 
-rm -rf "${PSI_FRAMEWORK}"
-cp -r "${IOS_PSI_FRAMEWORK}" "${PSI_FRAMEWORK_PATH}"
+#
 
 IOS_ARCHIVE="${BUILD_DIR}/ios.xcarchive"
 
@@ -249,16 +210,13 @@ ONLY_ACTIVE_ARCH="NO" \
 SKIP_INSTALL="NO" \
 EXCLUDED_ARCHS="armv7"
 
+
 # Build PsiphonTunnel framework for simulator.
 #
 # Note:
 # - Excludes 32-bit Intel: EXCLUDED_ARCHS="i386".
 # - Excludes ARM Macs: EXCLUDED_ARCHS="arm64".
 
-# Copies simulator Psi.framework 
-rm -rf "${PSI_FRAMEWORK}"
-cp -r "${SIMULATOR_PSI_FRAMEWORK}" "${PSI_FRAMEWORK_PATH}"
-
 SIMULATOR_ARCHIVE="${BUILD_DIR}/simulator.xcarchive"
 
 xcodebuild clean archive \
@@ -278,7 +236,7 @@ SKIP_INSTALL="NO" \
 EXCLUDED_ARCHS="arm64 i386"
 
 #
-# Building PsiphonTunnel.xcframework
+# Bundling the generated frameworks into a single PsiphonTunnel.xcframework
 #
 
 xcodebuild -create-xcframework \