example: updates for XCFramework and Mac Catalyst
This updates examples for the changes in golang.org/cl/334689 for
.xcframework files and Mac Catalyst.
Depends on golang.org/cl/334689
https://go-review.googlesource.com/c/mobile/+/334689/28/example/bind/ios/README#1
Change-Id: Ice89e7e675c8f190c7040407908f619a7631fd2b
GitHub-Last-Rev: 64da8e6cad76f3e0530e36895bbfeacab7439b35
GitHub-Pull-Request: golang/mobile#72
Reviewed-on: https://go-review.googlesource.com/c/mobile/+/350489
Reviewed-by: Changkun Ou <euryugasaki@gmail.com>
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
Reviewed-by: Hajime Hoshi <hajimehoshi@gmail.com>
Trust: Hyang-Ah Hana Kim <hyangah@gmail.com>
Run-TryBot: Hajime Hoshi <hajimehoshi@gmail.com>
TryBot-Result: Go Bot <gobot@golang.org>
diff --git a/.gitignore b/.gitignore
index 0e17991..201387b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,6 +9,11 @@
.idea
.gradle
+# Xcode configuration files.
+*.xcworkspace
+xcuserdata
+*.entitlements
+
# Android Studio build and IDE configuration files.
example/bind/android/local.properties
example/bind/android/gradlew*
diff --git a/example/bind/ios/README b/example/bind/ios/README
index d0203fd..908dd61 100644
--- a/example/bind/ios/README
+++ b/example/bind/ios/README
@@ -1,15 +1,14 @@
1. Use gomobile bind to bind the golang.org/x/mobile/example/bind/hello package.
- The following command will create a static framework bundle in the current
- directory.
+ The following command will create an XCFramework in the current directory.
$ gomobile bind -target=ios golang.org/x/mobile/example/bind/hello
2. Open the Xcode project by double clicking on bind.xcodeproj.
The project will not build - ViewController.m calls a function from the hello
- package so requires the hello.framework the gomobild bind command created
+ package so requires the Hello.xcframework that gomobile bind command created
in Step 1.
-3. Drag-and-drop the hello.framework from the desktop to the project navigation window.
- This will automatically include the hello framework into the project.
+3. Drag-and-drop Hello.xcframework from the desktop to the project navigation window.
+ This will automatically include the Hello.xcframework into the project.
4. Build.
diff --git a/example/ivy/ios/README.md b/example/ivy/ios/README.md
index d086aa8..453ccbc 100644
--- a/example/ivy/ios/README.md
+++ b/example/ivy/ios/README.md
@@ -2,11 +2,11 @@
This directory contains the source code to the Ivy iOS app.
-To build, first create the mobile.framework out of the Go
+To build, first create the Mobile.xcframework out of the Go
implementation of Ivy. Run:
```
-go install golang.org/x/mobile/cmd/gomobile@latest
+go install golang.org/x/mobile/cmd/gomobile@latest
go install golang.org/x/mobile/cmd/gobind@latest
```
@@ -17,11 +17,11 @@
go mod init work
go get -d golang.org/x/mobile/bind@latest
go get -d robpike.io/ivy/mobile
-gomobile bind -target=ios robpike.io/ivy/mobile
+gomobile bind -target=ios,iossimulator,maccatalyst,macos robpike.io/ivy/mobile
```
-Place the mobile.framework directory in this directory, and
+Place the Mobile.xcframework directory in this directory, and
then open ivy.xcodeproj in Xcode.
You have to specify Development Team for code signing certificate in:
-Project Settings -> Targets -> Signing & Capabilities -> Signing -> Team.
\ No newline at end of file
+Project Settings -> Targets -> Signing & Capabilities -> Signing -> Team.
diff --git a/example/ivy/ios/ivy.xcodeproj/project.pbxproj b/example/ivy/ios/ivy.xcodeproj/project.pbxproj
index 335b7ce..aeb1d30 100644
--- a/example/ivy/ios/ivy.xcodeproj/project.pbxproj
+++ b/example/ivy/ios/ivy.xcodeproj/project.pbxproj
@@ -8,7 +8,7 @@
/* Begin PBXBuildFile section */
7DC2F7EA26DFD9870026EBED /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7DC2F7E826DFCF750026EBED /* WebKit.framework */; };
- 7DC2F7ED26DFD9890026EBED /* mobile.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B4C2833A1B98889100878964 /* mobile.framework */; };
+ 7DC2F7ED26DFD9890026EBED /* Mobile.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = B4C2833A1B98889100878964 /* Mobile.xcframework */; };
B461D25D1B31B27700EC4870 /* tape.html in Resources */ = {isa = PBXBuildFile; fileRef = B461D25C1B31B27700EC4870 /* tape.html */; };
B48878331B2E714100C7CC3C /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B488780C1B2D1C3F00C7CC3C /* AppDelegate.m */; };
B48878341B2E714100C7CC3C /* IvyController.m in Sources */ = {isa = PBXBuildFile; fileRef = B488780F1B2D1C3F00C7CC3C /* IvyController.m */; };
@@ -35,7 +35,7 @@
B48878311B2DF1B200C7CC3C /* Suggestion.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Suggestion.m; sourceTree = "<group>"; };
B488783B1B2F9CD500C7CC3C /* DocsController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DocsController.h; sourceTree = "<group>"; };
B488783C1B2F9CD500C7CC3C /* DocsController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DocsController.m; sourceTree = "<group>"; };
- B4C2833A1B98889100878964 /* mobile.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = mobile.framework; sourceTree = "<group>"; };
+ B4C2833A1B98889100878964 /* Mobile.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = Mobile.xcframework; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -43,7 +43,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- 7DC2F7ED26DFD9890026EBED /* mobile.framework in Frameworks */,
+ 7DC2F7ED26DFD9890026EBED /* Mobile.xcframework in Frameworks */,
7DC2F7EA26DFD9870026EBED /* WebKit.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -62,7 +62,7 @@
B48877FB1B2D1C3F00C7CC3C = {
isa = PBXGroup;
children = (
- B4C2833A1B98889100878964 /* mobile.framework */,
+ B4C2833A1B98889100878964 /* Mobile.xcframework */,
B48878061B2D1C3F00C7CC3C /* ivy */,
B48878051B2D1C3F00C7CC3C /* Products */,
7DC2F7E726DFCF740026EBED /* Frameworks */,
@@ -248,6 +248,7 @@
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
+ SUPPORTS_MACCATALYST = YES;
TARGETED_DEVICE_FAMILY = "1,2";
VALID_ARCHS = "arm64 x86_64 armv7";
};
@@ -296,6 +297,7 @@
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
+ SUPPORTS_MACCATALYST = YES;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
VALID_ARCHS = "arm64 x86_64 armv7";
@@ -322,8 +324,9 @@
ONLY_ACTIVE_ARCH = NO;
PRODUCT_NAME = ivy;
STRIP_STYLE = debugging;
- TARGETED_DEVICE_FAMILY = "1,2";
- VALID_ARCHS = "arm64 armv7";
+ SUPPORTS_MACCATALYST = YES;
+ TARGETED_DEVICE_FAMILY = "1,2,6";
+ VALID_ARCHS = "arm64 x86_64 armv7";
};
name = Debug;
};
@@ -348,8 +351,9 @@
PRODUCT_BUNDLE_IDENTIFIER = "com.google.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = ivy;
STRIP_STYLE = debugging;
- TARGETED_DEVICE_FAMILY = "1,2";
- VALID_ARCHS = "arm64 armv7";
+ SUPPORTS_MACCATALYST = YES;
+ TARGETED_DEVICE_FAMILY = "1,2,6";
+ VALID_ARCHS = "arm64 x86_64 armv7";
};
name = Release;
};