cmd/gomobile: correct Apple build documentation
The gomobile build help incorrectly describes gomobile bind's
XCFramework output. Document the actual .app output produced by
gomobile build, including its .app output requirement, and clarify the
different Apple targets supported by gomobile bind.
Also fix two spelling errors, regenerate doc.go, and add a regression
test for the help text.
diff --git a/cmd/gomobile/build.go b/cmd/gomobile/build.go
index c15daa4..d1b14e4 100644
--- a/cmd/gomobile/build.go
+++ b/cmd/gomobile/build.go
@@ -24,15 +24,14 @@
var cmdBuild = &command{
run: runBuild,
Name: "build",
- Usage: "[-target android|" + strings.Join(applePlatforms, "|") + "] [-o output] [-bundleid bundleID] [build flags] [package]",
+ Usage: "[-target android|ios] [-o output] [-bundleid bundleID] [build flags] [package]",
Short: "compile android APK and iOS app",
Long: `
Build compiles and encodes the app named by the import path.
The named package must define a main function.
-The -target flag takes either android (the default), or one or more
-comma-delimited Apple platforms (` + strings.Join(applePlatforms, ", ") + `).
+The -target flag takes either android (the default) or ios.
For -target android, if an AndroidManifest.xml is defined in the
package directory, it is added to the APK output. Otherwise, a default
@@ -41,16 +40,15 @@
be selected by specifying target type with the architecture name. E.g.
-target=android/arm,android/386.
-For Apple -target platforms, gomobile must be run on an OS X machine with
-Xcode installed.
+For -target ios, gomobile must be run on an OS X machine with Xcode installed.
+The build command creates an iOS .app bundle. The output name specified by
+-o must end in .app. By default, the app contains binaries for all supported
+iOS device and simulator architectures. A subset can be selected by specifying
+the platform with an architecture name. E.g. -target=ios/arm64.
-By default, -target ios will generate an XCFramework for both ios
-and iossimulator. Multiple Apple targets can be specified, creating a "fat"
-XCFramework with each slice. To generate a fat XCFramework that supports
-iOS, macOS, and macCatalyst for all supportec architectures (amd64 and arm64),
-specify -target ios,macos,maccatalyst. A subset of instruction sets can be
-selectged by specifying the platform with an architecture name. E.g.
--target=ios/arm64,maccatalyst/arm64.
+In contrast, gomobile bind creates an XCFramework and supports selecting
+individual Apple platforms, including iOS, the iOS simulator, macOS, and Mac
+Catalyst.
If the package directory contains an assets subdirectory, its contents
are copied into the output.
diff --git a/cmd/gomobile/build_test.go b/cmd/gomobile/build_test.go
index e5e412a..0a38f13 100644
--- a/cmd/gomobile/build_test.go
+++ b/cmd/gomobile/build_test.go
@@ -109,6 +109,31 @@
}
}
+func TestBuildAppleHelp(t *testing.T) {
+ help := cmdBuild.Usage + cmdBuild.Long
+ for _, want := range []string{
+ "[-target android|ios]",
+ "creates an iOS .app bundle",
+ "-o must end in .app",
+ "gomobile bind creates an XCFramework",
+ } {
+ if !strings.Contains(help, want) {
+ t.Errorf("build help does not contain %q", want)
+ }
+ }
+
+ for _, unwanted := range []string{
+ "[-target android|ios|iossimulator|macos|maccatalyst]",
+ "-target ios will generate an XCFramework",
+ "supportec",
+ "selectged",
+ } {
+ if strings.Contains(help, unwanted) {
+ t.Errorf("build help contains %q", unwanted)
+ }
+ }
+}
+
var androidBuildTmpl = template.Must(template.New("output").Parse(`GOMOBILE={{.GOPATH}}/pkg/gomobile
WORK=$WORK
mkdir -p $WORK/lib/armeabi-v7a
diff --git a/cmd/gomobile/doc.go b/cmd/gomobile/doc.go
index c17cf4c..67a9118 100644
--- a/cmd/gomobile/doc.go
+++ b/cmd/gomobile/doc.go
@@ -52,9 +52,10 @@
the module import wizard (File > New > New Module > Import .JAR or
.AAR package), and setting it as a new dependency
(File > Project Structure > Dependencies). This requires 'javac'
-(version 1.7+) and Android SDK (API level 16 or newer) to build the
-library for Android. The environment variable ANDROID_HOME must be set
-to the path to Android SDK. Use the -javapkg flag to specify the Java
+(version 1.8+) and Android SDK (API level 16 or newer) to build the
+library for Android. The ANDROID_HOME and ANDROID_NDK_HOME environment
+variables can be used to specify the Android SDK and NDK if they are
+not in the default locations. Use the -javapkg flag to specify the Java
package prefix for the generated classes.
By default, -target=android builds shared libraries for all supported
@@ -72,21 +73,21 @@
The -v flag provides verbose output, including the list of packages built.
-The build flags -a, -n, -x, -gcflags, -ldflags, -tags, -trimpath, and -work
-are shared with the build command. For documentation, see 'go help build'.
+The build flags -a, -n, -x, -gcflags, -ldflags, -overlay, -tags, -trimpath,
+and -work are shared with the build command. For documentation,
+see 'go help build'.
# Compile android APK and iOS app
Usage:
- gomobile build [-target android|ios|iossimulator|macos|maccatalyst] [-o output] [-bundleid bundleID] [build flags] [package]
+ gomobile build [-target android|ios] [-o output] [-bundleid bundleID] [build flags] [package]
Build compiles and encodes the app named by the import path.
The named package must define a main function.
-The -target flag takes either android (the default), or one or more
-comma-delimited Apple platforms (ios, iossimulator, macos, maccatalyst).
+The -target flag takes either android (the default) or ios.
For -target android, if an AndroidManifest.xml is defined in the
package directory, it is added to the APK output. Otherwise, a default
@@ -95,16 +96,15 @@
be selected by specifying target type with the architecture name. E.g.
-target=android/arm,android/386.
-For Apple -target platforms, gomobile must be run on an OS X machine with
-Xcode installed.
+For -target ios, gomobile must be run on an OS X machine with Xcode installed.
+The build command creates an iOS .app bundle. The output name specified by
+-o must end in .app. By default, the app contains binaries for all supported
+iOS device and simulator architectures. A subset can be selected by specifying
+the platform with an architecture name. E.g. -target=ios/arm64.
-By default, -target ios will generate an XCFramework for both ios
-and iossimulator. Multiple Apple targets can be specified, creating a "fat"
-XCFramework with each slice. To generate a fat XCFramework that supports
-iOS, macOS, and macCatalyst for all supportec architectures (amd64 and arm64),
-specify -target ios,macos,maccatalyst. A subset of instruction sets can be
-selectged by specifying the platform with an architecture name. E.g.
--target=ios/arm64,maccatalyst/arm64.
+In contrast, gomobile bind creates an XCFramework and supports selecting
+individual Apple platforms, including iOS, the iOS simulator, macOS, and Mac
+Catalyst.
If the package directory contains an assets subdirectory, its contents
are copied into the output.
@@ -126,8 +126,9 @@
The -v flag provides verbose output, including the list of packages built.
-The build flags -a, -i, -n, -x, -gcflags, -ldflags, -tags, -trimpath, and -work are
-shared with the build command. For documentation, see 'go help build'.
+The build flags -a, -i, -n, -x, -gcflags, -ldflags, -overlay, -tags, -trimpath,
+and -work are shared with the build command. For documentation, see
+'go help build'.
# Remove object files and cached gomobile files
@@ -135,7 +136,7 @@
gomobile clean
-Clean removes object files and cached NDK files downloaded by gomobile init.
+# Clean removes object files and cached NDK files downloaded by gomobile init
# Build OpenAL for Android
@@ -158,8 +159,8 @@
Only -target android is supported. The 'adb' tool must be on the PATH.
-The build flags -a, -i, -n, -x, -gcflags, -ldflags, -tags, -trimpath, and -work are
-shared with the build command.
+The build flags -a, -i, -n, -x, -gcflags, -ldflags, -overlay, -tags, -trimpath,
+and -work are shared with the build command.
For documentation, see 'go help build'.
# Print version
@@ -170,4 +171,4 @@
Version prints versions of the gomobile binary and tools
*/
-package main
+package main // import "golang.org/x/mobile/cmd/gomobile"
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
func TestBuildAppleHelp(t *testing.T) {I don't think we need this test.
package main // import "golang.org/x/mobile/cmd/gomobile"I don't think we need this comment
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
I don't think we need this test.
Removed
package main // import "golang.org/x/mobile/cmd/gomobile"I don't think we need this comment
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |