mixpanel / mixpanel-iphone

Official iOS (Objective-C) Tracking Library for Mixpanel Analytics
http://mixpanel.com
Apache License 2.0
1.05k stars 565 forks source link

[Manual install: can't submit app] Unsupported Architecture [x86_64, i386] (can't validate for iTunes) latest framework #819

Closed Volodymyr-13 closed 5 years ago

Volodymyr-13 commented 5 years ago

Integration Method: Manual Xcode Version: 10.1 (10B61) Library Version: 3.3.7 Platform: iOS Language: Objective-C Description: can't submit app] Unsupported Architecture [x86_64, i386] Expected Behavior: ability to submit app to the App Store.

I just dropped latest framework from https://github.com/mixpanel/mixpanel-iphone/releases to my app and then Archive it and tried to sent to the App Store. Here is what I got instead:

screen shot


XCode 10 no longer supports fat frameworks.

zihejia commented 5 years ago

Hi @KAMIKAZEUA , the framework binary in github is meant to be used by Carthage. If you drop the framework binary manually in the project you need to add a run script phase to strip out the binary for simulator. You can check this post for the script. https://stackoverflow.com/questions/30547283/submit-to-app-store-issues-unsupported-architecture-x86. Some people regard it as a bug expecting a fix from Apple (http://www.openradar.me/radar?id=6409498411401216#ag9zfm9wZW5yYWRhci1ocmRyFAsSB0NvbW1lbnQYgICA0OWn7AgM).

If you did use Carthage, there are some extra steps after run carthage update. Here is the doc https://github.com/Carthage/Carthage#if-youre-building-for-ios-tvos-or-watchos Basically, you need to add a run script phase like this: image

If you use Cocoapods, it should just work cause it will setup the script automatically for you.

zihejia commented 5 years ago

Close this one now, please feel free to reopen it if any issue.

Volodymyr-13 commented 5 years ago

So this script included ready be copy-pastle in the documentation somewhere?

After you close issue there is no way to re-open it for me.

zihejia commented 5 years ago

Hi @KAMIKAZEUA, does the script work for you?

zihejia commented 5 years ago

Reopen for documentation.

Volodymyr-13 commented 5 years ago

@zihejia I'm not using script for now, because I just run my game into production phase. I just downloaded & compiled mixpanel framework by removing that architectures. Now I can't take risk and test some scripts. For me solution is download framework and rebuild it with proper architectures. I just looking for a verified fix from mixpanel guys.

zihejia commented 5 years ago

@KAMIKAZEUA thanks for the reply. The script was verified by us but it is not an ideal way to integrate Mixpanel.

We actually not recommend downloading the binary framework directly because of the issue apple has that requires to take an extra hacky step, and it is also hard for version controlling of Mixpanel.

If you follow our official guide, integration with CocoaPods, Carthage or manual installation with source code, it won't take more effort and it should work. If any problem for above methods, please let us know.

For integration with the binary directly, you can follow the blog from Daniel Kennett(thanks!), http://ikennd.ac/blog/2015/02/stripping-unwanted-architectures-from-dynamic-libraries-in-xcode/. Again, it's being verified working but still not the best. After some consideration, we won't put it into our official guide, hope you understand.

Volodymyr-13 commented 5 years ago

@zihejia

If you follow our official guide, integration with CocoaPods, Carthage or manual installation with source code, it won't take more effort and it should work. If any problem for above methods, please let us know.

Exactly. I did: 1) https://developer.mixpanel.com/docs/ios :

screen shot

So I downloaded latest framework Mixpanel.framework.zip from releases.

As I understand now that words:

You can also get the library by downloading the latest version from GitHub and copying it into your project.

Sounds like copy Mixpanel.framework into you project, because it's usual way to integrate frameworks. Like I just copy pasted before all other SDK's for my game.

I don't like and will not be coping whole project into my Xcode project. I really don't like sub-projects.