Great, thank you! I know very little about gomobile build, but I noticed
that gomobile bind uses the -buildmode=c-archive flag to go build while
gomobile build doesn't. Does the following (completely untested) patch make
any difference:

diff --git a/cmd/gomobile/build_iosapp.go b/cmd/gomobile/build_iosapp.go
index 0b2a923..cf8da09 100644
--- a/cmd/gomobile/build_iosapp.go
+++ b/cmd/gomobile/build_iosapp.go
@@ -63,7 +63,7 @@ func goIOSBuild(pkg *build.Package) (map[string]bool,
error) {
        ctx.BuildTags = append(ctx.BuildTags, "ios")

        armPath := filepath.Join(tmpdir, "arm")
-       if err := goBuild(src, darwinArmEnv, "-o="+armPath); err != nil {
+       if err := goBuild(src, darwinArmEnv, "-buildmode=c-archive",
"-o="+armPath); err != nil {
                return nil, err
        }
        nmpkgs, err := extractPkgs(darwinArmNM, armPath)
@@ -72,7 +72,7 @@ func goIOSBuild(pkg *build.Package) (map[string]bool,
error) {
        }

        arm64Path := filepath.Join(tmpdir, "arm64")
-       if err := goBuild(src, darwinArm64Env, "-o="+arm64Path); err != nil
{
+       if err := goBuild(src, darwinArm64Env, "-buildmode=c-archive",
"-o="+arm64Path); err != nil {
                return nil, err
        }

?

 - elias

On Mon, Oct 23, 2017 at 5:28 PM <pru...@gmail.com> wrote:

> Ok thank you!. Bind does validate after setting ENABLE_BITCODE to NO in
> the build settings.
>
>
> On Monday, October 23, 2017 at 11:03:51 AM UTC-4, Elias Naur wrote:
>
>> To successfully build the bind example you need to disable bitcode (and
>> import the framework as you did). Sorry.
>>
>> - elias
>>
>> Den man. 23. okt. 2017 17.00 <20%2017%2017%2000> skrev <pru...@gmail.com
>> >:
>>
> Trying bind this time.
>>> Not able to build in Xcode with bind example. Xcode can't find the Hello
>>> module when following the instructions. Dropping the hello.framework into
>>> the ios folder seems to help but leads to the following linker error:
>>>
>>> ld: '/Users/rust/code/src/
>>> golang.org/x/mobile/example/bind/ios/Hello.framework/Hello(000002.o)'
>>> does not contain bitcode. You must rebuild it with bitcode enabled (Xcode
>>> setting ENABLE_BITCODE), obtain an updated library from the vendor, or
>>> disable bitcode for this target. for architecture arm64
>>>
>>> clang: error: linker command failed with exit code 1 (use -v to see
>>> invocation)
>>>
>>> Do the bind instructions from https://github.com/golang/go/wiki/Mobile work
>>> for you in Xcode 9? I accepted all Xcode fixes. Is it better to not do this?
>>>
>>> On Monday, October 23, 2017 at 10:27:24 AM UTC-4, Elias Naur wrote:
>>>
>>>>
>>>>
>>>> On Mon, Oct 23, 2017 at 2:09 PM <pru...@gmail.com> wrote:
>>>>
>>>>> I reproduced the problem using the gomobile bind example with the
>>>>> following code changes.
>>>>>
>>>>> diff --git a/cmd/gomobile/build_iosapp.go
>>>>> b/cmd/gomobile/build_iosapp.go
>>>>>
>>>>> index 0b2a923..8480790 100644
>>>>>
>>>>> --- a/cmd/gomobile/build_iosapp.go
>>>>>
>>>>> +++ b/cmd/gomobile/build_iosapp.go
>>>>>
>>>>> @@ -31,7 +31,7 @@ func goIOSBuild(pkg *build.Package)
>>>>> (map[string]bool, error) {
>>>>>
>>>>>         infoplist := new(bytes.Buffer)
>>>>>
>>>>>         if err := infoplistTmpl.Execute(infoplist, infoplistTmplData{
>>>>>
>>>>>                 // TODO: better bundle id.
>>>>>
>>>>> -               BundleID: "org.golang.todo." + productName,
>>>>>
>>>>> +               BundleID: "com.galvanizedlogic.bios",
>>>>>
>>>>>                 Name:     strings.Title(path.Base(pkg.ImportPath)),
>>>>>
>>>>>         }); err != nil {
>>>>>
>>>>>                 return nil, err
>>>>>
>>>>> @@ -97,7 +97,7 @@ func goIOSBuild(pkg *build.Package)
>>>>> (map[string]bool, error) {
>>>>>
>>>>>         // Build and move the release build to the output directory.
>>>>>
>>>>>         cmd = exec.Command(
>>>>>
>>>>>                 "xcrun", "xcodebuild",
>>>>>
>>>>> -               "-configuration", "Release",
>>>>>
>>>>> +               "-configuration", "Release",
>>>>> "-allowProvisioningUpdates",
>>>>>
>>>>>                 "-project", tmpdir+"/main.xcodeproj",
>>>>>
>>>>>         )
>>>>>
>>>>>         if err := runCmd(cmd); err != nil {
>>>>>
>>>>> @@ -312,12 +312,14 @@ const projPbxproj = `// !$*UTF8*$!
>>>>>
>>>>>          ORGANIZATIONNAME = Developer;
>>>>>
>>>>>          TargetAttributes = {
>>>>>
>>>>>            254BB83D1B1FD08900C56DE9 = {
>>>>>
>>>>> -            CreatedOnToolsVersion = 6.3.1;
>>>>>
>>>>> +            CreatedOnToolsVersion = 9.0;
>>>>>
>>>>> +            DevelopmentTeam = 9829M3WGFP;
>>>>>
>>>>> +            ProvisioningStyle = Automatic;
>>>>>
>>>>>            };
>>>>>
>>>>>          };
>>>>>
>>>>>        };
>>>>>
>>>>>        buildConfigurationList = 254BB8391B1FD08900C56DE9 /* Build
>>>>> configuration list for PBXProject "main" */;
>>>>>
>>>>> -      compatibilityVersion = "Xcode 3.2";
>>>>>
>>>>> +      compatibilityVersion = "Xcode 8.0";
>>>>>
>>>>>        developmentRegion = English;
>>>>>
>>>>>        hasScannedForEncodings = 0;
>>>>>
>>>>>        knownRegions = (
>>>>>
>>>>> Then repackaged bios.app and bios.ipa using the binary from the
>>>>> gomobile basic.app (avoids a bunch of invalid or missing icon errors).
>>>>> Validated that the app runs on an iphone 7. The upload ipa resulted in the
>>>>> following errors:
>>>>>
>>>>>
>>>>> The "Invalid Bundle" is because gomobile builds a binary with both 32
>>>>> and 64 bit executables.
>>>>> I can't explain the PIE error. I did not get this error in the bios
>>>>> build even though I saw the "-nopie" when looking at a previous bios 
>>>>> linker
>>>>> debug output.
>>>>>
>>>>>
>>>>
>>>> This seems like the "gomobile build" mode, not gomobile bind. There is
>>>> a difference: build is for apps in 100% Go, while bind are for apps where a
>>>> part is in Go. With gomobile bind, the Go part is built as a c-archive
>>>> library and packaged in a framework. I know that you're interested in the
>>>> gomobile build mode, but knowing whether gomobile bind apps have the same
>>>> validation errors might help to debug the problem.
>>>>
>>>>  - elias
>>>>
>>> --
>>> You received this message because you are subscribed to a topic in the
>>> Google Groups "golang-nuts" group.
>>> To unsubscribe from this topic, visit
>>> https://groups.google.com/d/topic/golang-nuts/DaCOnoSWvBw/unsubscribe.
>>>
>> To unsubscribe from this group and all its topics, send an email to
>>> golang-nuts...@googlegroups.com.
>>
>>
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>> --
> You received this message because you are subscribed to a topic in the
> Google Groups "golang-nuts" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/golang-nuts/DaCOnoSWvBw/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> golang-nuts+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to