New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
iOS 8 App Submission Fails App Store Validation with 1Password SDK #95
Comments
Are you building with iOS 8 SDK or iOS 7? |
Also, do you get the name of the private API in the error message? |
Building with the iOS 8 GM SDK. We didn't get any info on a specific method either. All it mentioned was the framework. I'm wondering if it could possibly be related to this issue? https://devforums.apple.com/message/1011314#1011314 When we build and archive Xcode attempts to generate a .pkg file instead of a .ipa file. I am wondering if it thinks we are building a Mac app, and could be linking against a Mac version of WebKit? (If you've noticed anything about the .pkg issue that would be super helpful too. I think its related to the fact that we have our own extension embedded in the app). |
This is strange. We were lucky to Archive and then Submit to the App Store from Xcode. Are you using the Application Loader or submitting directly from Xcode Organizer? |
We've been having to use the Application Loader with a manually built ipa file for now until we get that other .pkg file issue sorted out. |
It may also be worth noting that our app includes support for iOS 7. |
I believe there is a public WebKit.framework under iPhoneOS.sdk. Can you see it? |
Yea, I found it under |
Thank you, @mwhuss! Do you think we have a bug in Cocoapods definitions that causes the wrong framework get linked? |
Possibly. I'll try manually copying the files into my project tomorrow and will see if it passes validation then. |
Just confirming that we are seeing the same thing, link to the PrivateFrameworks version of WebKit rather than something more public. Sorry I didn't notice that sooner! |
Anyone successfully gotten around this issue? |
@larsacus I can confirm that this works. We just submitted after applying the changes you specified. Thank you! One thing to look out for is that you need to set these linking instructions on the specific pod file target, not your app's build target. To reiterate:
Thanks again, this saved a bunch of headaches on our part. |
@distefam Correct -- This is in the 1PasswordExtension lib target that CocoaPods creates. I stated earlier that if this worked, the bug was likely in CocoaPods, but after I thought about it more, why is Xcode implicitly linking to a private framework, especially if there is a public counterpart?? I feel like since this works for some but not others, the list of frameworks internally might be indeterminate and in some way random luck as to if the private or public version of the framework gets linked using the textual specification. (╯°□°)╯︵ ┻━┻ |
I was also able to get past the validation with @larsacus's solution. I also had to go into my app's target |
This seems to me like an |
I'm trying to find solution to this more generally. It seems that Xcode has a bug if you want to support iOS8 + Webkit, as well as iOS7 with UIWebView. I filed a support ticket, but haven't heard back yet. When compiling our iOS app, it seems to be linking with the private WebKit framework, even though it is a public framework. The fact that it is using the private framework causes rejection when attempting to submit to the App Store. Using "otool -L" shows the private framework: "/System/Library/PrivateFrameworks/WebKit.framework/WebKit (compatibility version 1.0.0, current version 600.1.4)". This is only an issue when our Deployment Target is below 8.0. We want to keep iOS 7 support, so our deployment target is "7.0". When we change this to "8.0", otool reports "/System/Library/Frameworks/WebKit.framework/WebKit (compatibility version 1.0.0, current version 600.1.4)". Using "7.1" also causes the issue. The WebKit framework is set to optional. This issue also can be reproduced in a sample project that is a standard Xcode template, with the only changes being:
STEPS TO REPRODUCE |
@jasongurwin Let me know if you find a solution. We're having a similar issue, unrelated to 1Password. |
I know this is weird but I removed WebKit framework from my project and was still able to compile. No crash on both iOS 7 & 8 - passed Xcode validation. Sample project: http://tinywhale.s3.amazonaws.com/webkitTest.zip |
@Xuki system frameworks link automatically as of Xcode 5 so there's no need to add them in the project settings. That's why it's working. See http://tonyarnold.com/2014/04/10/clean-up-your-projects-with-xcode-5.html |
Anyone find a solution? |
@jasongurwin try not linking the framework. Xcode auto links system frameworks when you @import / #import them. |
We've also been able to get past validation using the solution above from @larsacus. |
@soleares - unfortunately doesn't work when selecting iOS7 as the deployment target. |
@jasongurwin did you enable |
Yes - no luck unfortunately.
|
We did find a way to get it built with an iOS 7 deployment target, submitted, and passing validation. We did the following:
This passed validation and should be fine, as iOS 8 now supports dynamically loading embedded frameworks and dylibs, but I guess we'll see what the review team says. I may go back to make sure that all of these steps were completely necessary, but after we got it submitted late Friday night I was done for the weekend. :) |
Thanks Kevin! That did the trick for us too. |
I have seen the same issue in terms of submitting. My app is targeted at 7.0. I added weak linking to the 1Password for the WebKit framework. But I'm still seeing validation errors when submitting. |
+1 still validation error after trying all solutions above |
We just released version 1.0.9, can you guys confirm if it works when using CocoaPods? |
The solution that worked for me is to not explicitly link against WebKit. Step 1- Ensure |
I can confirm this still happens with 1.0.9. Just ran our app through validation on Xcode 6: /System/Library/PrivateFrameworks/WebKit.framework |
We didn't have any validation issues, and we built with v1.0.8 with this one change: smup@af49640. Our app doesn't use WKWebView, so we felt safe not linking WebKit. |
I've had 2 apps that failed validation at first, but work now. The solution for both of them was to:
|
Hello everyone! I will close this issue for now, since some of you are already in the App Store and successfully integrated with 1Password. Thank you! 👍 |
Hola,
We are running into an issue with submitting an app to the App Store using the 1Password SDK. The validation fails saying that our app contains private API usage in the WebKit framework. The only thing in our app using WebKit is the 1Password extension SDK, and when we remove the SDK, the validation passes.
I'm not sure what the deal is here, but have you guys seen this and if so do you have any suggestions on next steps?
Thanks,
The text was updated successfully, but these errors were encountered: