playgameservices / play-games-plugin-for-unity

Google Play Games plugin for Unity
Other
3.46k stars 963 forks source link

Build fails targeting iOS #1436

Closed qbit86 closed 7 years ago

qbit86 commented 7 years ago

I'm not that close to XCode/iOS/macOS/OS X, running builds only on our build server. After updating from 0.9.33 to 0.9.35 “Xcode archive” phase started failing with error message:

In file included from /Users/.../Libraries/FacebookSDK/SDK/Editor/iOS/FBUnitySDKDelegate.m:19:
/Users/.../Libraries/FacebookSDK/SDK/Editor/iOS/FBUnitySDKDelegate.h:19:9: fatal error: 'FBSDKShareKit/FBSDKShareKit.h' file not found
#import <FBSDKShareKit/FBSDKShareKit.h>
        ^
1 error generated.

Looks like some paths became broken after updating plugin, so Facebook source files cannot build.

qbit86 commented 7 years ago

@claywilkinson Looks like some post-process step rewrites previous headers and framework paths.

claywilkinson commented 7 years ago

Thanks for the feedback, we'll take a look.

qbit86 commented 7 years ago

@claywilkinson Any chance this is fixed today—tomorrow?

Probably, the way to reproduce is to integrate Facebook plugin, then Play Games plugin.

claywilkinson commented 7 years ago

I don't have time to confirm it works with Facebook, but a colleague ran into the same problem with another plugin and submitted a fix. I'll push that version (1.2.2) to https://github.com/googlesamples/unity-jar-resolver today and update this thread.

claywilkinson commented 7 years ago

@Qbit86 - version 1.2.2 is pushed to https://github.com/googlesamples/unity-jar-resolver, it should replace the Assets/PlayServicesResolver directory.

qbit86 commented 7 years ago

@claywilkinson Thanks! What about further propagation the fix from unity-jar-resolver to play-games-plugin-for-unity? I mean, we do not use Jar Resolver directly, only via other plugins. Is it safe to import unity-jar-resolver over existing play-games-plugin-for-unity installation?

claywilkinson commented 7 years ago

It's safe to install it over. I suggested that so you could be unblocked. I'll update this plugin today or tomorrow.

qbit86 commented 7 years ago

@claywilkinson Now compilation seems to succeed, but linker outputs thousands of errors like the following:

duplicate symbol _AES_decrypt in:
    /Users/***/Frameworks/gpg.framework/gpg(libgpg.a-arm64-master.o)
    /Users/***/Frameworks/gpg.framework/gpg(aes.o)
...
duplicate symbol __ZTVN4buzz10XmlBuilderE in:
    /Users/***/Frameworks/gpg.framework/gpg(libgpg.a-arm64-master.o)
    /Users/***/Frameworks/gpg.framework/gpg(xmlbuilder.o)
ld: 7245 duplicate symbols for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

And warnings:

ld: warning: object file (/Users/***/Frameworks/gpg.framework/gpg(libgpg.a-armv7-master.o)) was built for newer iOS version (9.0) than being linked (7.0)
...
ld: warning: object file (/Users/***/Frameworks/gpg.framework/gpg(xmlbuilder.o)) was built for newer iOS version (9.0) than being linked (7.0)
claywilkinson commented 7 years ago

yikes! that's not good. can you share the command line for ld? Also, there should be a Podfile.lock in your iOS project, can you share that too?

qbit86 commented 7 years ago

can you share the command line for ld?

The following build commands failed:
    Ld /Users/buildserver/Library/Developer/Xcode/DerivedData/Unity-iPhone-dtoljfsfvaydfnglckwhxshwcpzy/Build/Intermediates/ArchiveIntermediates/Unity-iPhone/IntermediateBuildFilesPath/Unity-iPhone.build/Release-iphoneos/Unity-iPhone.build/Objects-normal/arm64/devzombiegun3d normal arm64

there should be a Podfile.lock in your iOS project

PODS:
  - GoogleAppUtilities (1.1.2):
    - GoogleSymbolUtilities (~> 1.1)
  - GoogleAuthUtilities (2.0.2):
    - GoogleNetworkingUtilities (~> 1.2)
    - GoogleSymbolUtilities (~> 1.1)
  - GoogleNetworkingUtilities (1.2.2):
    - GoogleSymbolUtilities (~> 1.1)
  - GooglePlayGames (5.1.1):
    - GooglePlusOpenSource (>= 1.7.1)
    - GoogleSignIn (>= 2.2.0)
  - GooglePlusOpenSource (1.7.1)
  - GoogleSignIn (4.0.0):
    - GoogleAppUtilities (~> 1.1)
    - GoogleAuthUtilities (~> 2.0)
    - GoogleNetworkingUtilities (~> 1.2)
    - GoogleUtilities (~> 1.3)
  - GoogleSymbolUtilities (1.1.2)
  - GoogleUtilities (1.3.2):
    - GoogleSymbolUtilities (~> 1.1)

DEPENDENCIES:
  - GooglePlayGames (~> 5.0)

SPEC CHECKSUMS:
  GoogleAppUtilities: a8a552aa74f6597f805e45b5a3962766c3134973
  GoogleAuthUtilities: ccad2e0a9284699973ff57c0dd24c3893657fda4
  GoogleNetworkingUtilities: 3edd3a8161347494f2da60ea0deddc8a472d94cb
  GooglePlayGames: 3b4fdd70647f74a711695265d61eb9a64334d38d
  GooglePlusOpenSource: 5d514063287e1e87060eb4f9fab9d23d1c8fa601
  GoogleSignIn: 09036ed61f8e75f1424100d63f7719480b2428c3
  GoogleSymbolUtilities: 631ee17048aa5e9ab133470d768ea997a5ef9b96
  GoogleUtilities: 8bbc733218aad26306f9d4a253823986110e3358

PODFILE CHECKSUM: 8f188ab549e258315fcefdb21ccea61fae6ccd03

COCOAPODS: 1.0.1
qbit86 commented 7 years ago

@claywilkinson Seems like gpg archive (?) contains many “small” object files (aes.o, tcpport.o, xmlelement.o, etc.) along with single “large” amalgam libgpg.a-arm64-master.o, doesn't it? libgpg.a-arm64-master.o is mentioned in every error message.

qbit86 commented 7 years ago

@claywilkinson Any suggestions?

qbit86 commented 7 years ago

@claywilkinson ?

qbit86 commented 7 years ago

@claywilkinson Ok, if there are no ways to overcome “duplicate symbols”, how can I get rid of GPG plugin on iOS, but leave it on Android? We do not need GPG functionality on iOS, but it should build with no errors for iOS, so I could merge branch back to trunk.

qbit86 commented 7 years ago

I'll update this plugin today or tomorrow.

?

joaquingrech commented 7 years ago

hi? any fix for this? i'm running exactly into the same problem, it makes unity crash when building and the generated Xcode is messed up

joaquingrech commented 7 years ago

and 28 days and no reply... is google short of people to work on google play? i volunteer if necessarily

qbit86 commented 7 years ago

@joaquingrech Please let me know if you manage to solve this issue.

i volunteer if necessarily

Have you tried to fix sources and send pull request?

joaquingrech commented 7 years ago

no, it's not my job at the moment to waste hours to fix other people's code. When I'm done with my stuff in a few weeks if this is not solved I may look into it but it would mean it is ridiculous that someone who is not related to google in any way needs to fix their code after months waiting

qbit86 commented 7 years ago

@joaquingrech Usually @claywilkinson is quite responsive; hope he can fix this.

it is ridiculous that someone who is not related to google in any way needs to fix their code

It is open-sourced, so community could help. A couple of times I reported issues and provided ways to fix sources — they were adopted (although not via pull requests). But I'm not experienced iOS user/developer, I do not know details of XCode project generation. Now I'm facing hell and nightmare of supporting diverged branches, because I cannot merge updated GPG plugin into trunk — it breaks iOS build :(

Our game has over 10M installs on Google Play, seating in top-sellers in its category, generating revenue for Google. It's weird to have such struggles with Google plugin.

qbit86 commented 7 years ago

@joaquingrech Have you tried this suggestion: https://github.com/playgameservices/play-games-plugin-for-unity/issues/1449 ?

qbit86 commented 7 years ago

...but linker outputs thousands of errors like the following: duplicate symbol _AES_decrypt in:...

Updating to 0.9.36 seems to fix linker issue.