Xamarin-macios: iOS depends on private symbols which prevents builds with no linking from submission (Xamarin.Forms and others)

Created on 16 Apr 2019  路  53Comments  路  Source: xamarin/xamarin-macios

Description

Steps to Reproduce

  1. Use latest XF nuget 3.6.0.293080
  2. Archive for publishing in release mode
  3. Upload using Application Loader

Expected Behaviour

It should work fine as before

Actual Behavior

Apple complains that the app makes reference to non-public APIs:

We identified one or more issues with a recent delivery for your app. Please correct the following issues, then upload again.

Non-public API usage:

The app references non-public selectors in App.iOS: addTemporaryAttribute:value:forCharacterRange:, addTemporaryAttributes:forCharacterRange:, behaviorWithType:, defaultBaselineOffsetForFont:, defaultLineHeightForFont:, finished, greekingThreshold, horizontalCornerRadius, initWithSource:convolutionState:weights:, initWithType:, postSession:didAddPlayer:, postSession:didReceiveData:fromPlayer:, postSession:didReceiveMessage:withData:fromPlayer:, postSession:didRemovePlayer:, postSession:player:didChangeConnectionState:, postSession:player:didSaveData:, preferredMetalContext, removeData:, removeTemporaryAttribute:forCharacterRange:, setGreekingThreshold:, setHorizontalCornerRadius:, setIsPrimary:, setShouldAntiAlias:, setUUID:, setVerticalCornerRadius:, shouldAntiAlias, temporaryAttribute:atCharacterIndex:effectiveRange:, temporaryAttribute:atCharacterIndex:longestEffectiveRange:inRange:, temporaryAttributesAtCharacterIndex:effectiveRange:, temporaryAttributesAtCharacterIndex:longestEffectiveRange:inRange:, textContainerChangedTextView:, toolTip, usesBackgroundSession, verticalCornerRadius
If method names in your source code match the private Apple APIs listed above, altering your method names will help prevent this app from being flagged in future submissions. In addition, note that one or more of the above APIs may be located in a static library that was included with your app. If so, they must be removed.

VS bug #855982

bug iOS regression vs-sync

Most helpful comment

Removing the LLVM, setting Linker behvaiour to Link Framework SDKs and adding --linksdkonly did the job.

Thanks

All 53 comments

@amirvenus Do you know what version of Xamarin.Forms you were using in your last successful publish? Are you using any other libraries? Can you please attach a small project that demonstrates this issue? Thanks!

@amirvenus Was this message sent to you after uploading the build via Application Loader, or did you have to submit your app for review? I was able to successfully upload a build via Application Loader using 3.6.0.293080. Thanks!

It was sent to me after the app was uploaded using Application Loader in an email from Apple.

@amirvenus @samhouts
I've tried with Application Loader as well and had the same rejection with 3.6.0.293080 Xamarin.Forms and VS2019.

Also tried with an old version from Xamarin.Forms which we used to publish successfully before:
2.5.1.527436, but it didn't work either, rejected.

@amirvenus @samhouts
I've tried with Application Loader as well and had the same rejection with 3.6.0.293080 Xamarin.Forms and VS2019.

Also tried with an old version from Xamarin.Forms which we used to publish successfully before:
2.5.1.527436, but it didn't work either, rejected.

Are you using the latest VS 2019 for Mac and Xamarin.iOS?

I am a n00b, but I am thinking that could be a problem.

@amirvenus @samhouts
I've tried with Application Loader as well and had the same rejection with 3.6.0.293080 Xamarin.Forms and VS2019.
Also tried with an old version from Xamarin.Forms which we used to publish successfully before:
2.5.1.527436, but it didn't work either, rejected.

Are you using the latest VS 2019 for Mac and Xamarin.iOS?

I am a n00b, but I am thinking that could be a problem.

Yes using the latest version of everything.

@amirvenus @samhouts
I've tried with Application Loader as well and had the same rejection with 3.6.0.293080 Xamarin.Forms and VS2019.
Also tried with an old version from Xamarin.Forms which we used to publish successfully before:
2.5.1.527436, but it didn't work either, rejected.

Are you using the latest VS 2019 for Mac and Xamarin.iOS?
I am a n00b, but I am thinking that could be a problem.

Yes using the latest version of everything.

Would be brilliant if we could test it using the good old VS for mac 2017 and possibly an earlier version of Xamarin.iOS installed

Maybe @samhouts can en light us?

@EpicDrakkar @amirvenus would you please:

  • confirm the Xcode version you're using as well?
  • share a gist of your environment details. VSMac (About > VS > Show Details) and VS19 it's under the Help > Xamarin

@EpicDrakkar @amirvenus would you please:

* confirm the Xcode version you're using as well?

* share a gist of your environment details. VSMac (About > VS > Show Details) and VS19 it's under the Help > Xamarin

Xcode: 10.2 (10E125)
VS-Details.txt

@EpicDrakkar (or anyone else) can you attach the complete build logs ? adding -v -v -v -v to the Additional mtouch arguments and doing a Rebuild. Thanks!

-v -v -v -v

v-log.txt

-v -v -v -v

v-log.txt

Is that a Debug build or Release?
I think you should try Archive for publish

I will provide my logs as well when I get home

-v -v -v -v

v-log.txt

Is that a Debug build or Release?
I think you should try Archive for publish

I will provide my logs as well when I get home

This is Debug Build, since using Archive I didn't return any result in the Build Output window.

I think it's worth trying a release mode as well with LLVM and Linker enabled.

I think it's worth trying a release mode as well with LLVM and Linker enabled.

It was enabled for release or app store, still not working

I have exactly the same issue ... here is the required diagnoses info
diagnostic_build_output.txt

For some reason (template?) you are not linking your application (i.e. --nolink is i the build logs). While not linking should work (for submission) you're strongly encouraged to enable the managed linker. This produce a (much) smaller application and has extraneous performance (including startup) enhancements.

Can you try changing your "Linker behavior" from "Don't link" (current) to the _normal_ default of "Link Framework SDKs only" and try to submit again ? Thanks!

@spouliot This is the first thing that I have checked on the beginning and this is the selected option actually and I got rejected with it
Please advise if there are anything I miss
Screen Shot 2019-04-17 at 11 47 53 PM

For some reason (template?) you are not linking your application (i.e. --nolink is i the build logs). While _not_ linking should work (for submission) you're strongly encouraged to enable the managed linker. This produce a (much) smaller application and has extraneous performance (including startup) enhancements.

Can you try changing your "Linker behavior" from "Don't link" (current) to the _normal_ default of "Link Framework SDKs only" and try to submit again ? Thanks!

The issue exists in all 3 Linker modes.
Building (Release).txt

Right now I can only duplicate this issue when using "Don't Link". Please attach the full build log (with -v -v -v -v and msbuild set to diagnostic level) and Apple's rejection email (the details could be different from the ones above). Thanks!

How do I msbuild set to diagnostic level?

@amirvenus follow these steps for diagnostic level

@spouliot I have make diagnostic level build report for the iOS device as the last one I have sent was for iOS simulator
diagnostic_build_output_device.txt

I have noticed a thing and I think it might be the problem, I have made sure that Link Framework SDKs only is selected as per the screenshot here, but for some reason on the build output --nolink is still selected
Screen Shot 2019-04-17 at 11 47 53 PM

Could this be the issue?

After filling an internal issue with the Xamarin team, they advised doing the following

adding --linksdkonly to the Additional mtouch arguments on the iOS Build settings page
As it seems that Visual Studio ignores the settings in GUI as a screenshot above

I have tested it and now get my build accepted by Apple without the above error
Please @amirvenus try the above suggestion and confirm if it solved yours also

Also, one another notice that I鈥檓 getting the following warning, although I鈥檓 not using location or any other modules that use it and it started also to appear randomly one week ago,
Please advise if you have any suggestion for that.

Missing Purpose String in Info.plist File - Your app's code references one or more APIs that access sensitive user data. The app's Info.plist file should contain a NSLocationAlwaysUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. Starting Spring 2019, all apps submitted to the App Store that access user data will be required to include a purpose string. If you're using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. You can contact the developer of the library or SDK and request they release a version of their code that doesn't contain the APIs. Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).

Missing Purpose String in Info.plist File - Your app's code references one or more APIs that access sensitive user data. The app's Info.plist file should contain a NSLocationWhenInUseUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. Starting Spring 2019, all apps submitted to the App Store that access user data will be required to include a purpose string. If you're using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. You can contact the developer of the library or SDK and request they release a version of their code that doesn't contain the APIs. Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).

After you鈥檝e corrected the issues, you can use Xcode or Application Loader to upload a new binary to App Store Connect.

@spouliot

I have had two reports in support cases where despite the setting for the linker options being "Link Framework SDKs only" and the SdkOnly elemnet being present in the appropriate property group in the .csproj file, that the build occurred as if "DOn't Link" was set. This is shown in the build output with --nolink being passed as an argument to Mtouch task.

So there is a bug here in that the Linker setting in the GUI iOS BUild settings page, and the MtouchLink element in the .csproj file, are being ignored and the build is done with "Don't Link" option.

I have not been able to reproduce this on my end though.

@jgold6 the GUI issue is a different issue then :(

@engmsaleh do not worry about the Info,plist warnings - they should disappear when linking properly.

What happens is that Apple sees extra API and warn you that using them requires some (privacy) entries in the Info.plist. Enabling the linker will remove those API (in most cases) and the warnings will disappear too.

I will test it then

What鈥檚 the mtouch argument for link all?

Using --linksdkonly it worked for me. Nevertheless I had a crash using WKwebView with DecidePolicy which I didnt had before, but I did a work around to fix this, and now its published. Thanks!

I tried --linksdkonly but it is still the same issue. This is the email I get straightaway from Apple:

Dear Developer,

We identified one or more issues with a recent delivery for your app. Please correct the following issues, then upload again.

Non-public API usage:

The app references non-public selectors in App.iOS: addTemporaryAttribute:value:forCharacterRange:, addTemporaryAttributes:forCharacterRange:, behaviorWithType:, defaultBaselineOffsetForFont:, defaultLineHeightForFont:, finished, greekingThreshold, horizontalCornerRadius, initWithSource:convolutionState:weights:, initWithType:, postSession:didAddPlayer:, postSession:didReceiveData:fromPlayer:, postSession:didReceiveMessage:withData:fromPlayer:, postSession:didRemovePlayer:, postSession:player:didChangeConnectionState:, postSession:player:didSaveData:, preferredMetalContext, removeData:, removeTemporaryAttribute:forCharacterRange:, setGreekingThreshold:, setHorizontalCornerRadius:, setIsPrimary:, setShouldAntiAlias:, setUUID:, setVerticalCornerRadius:, shouldAntiAlias, temporaryAttribute:atCharacterIndex:effectiveRange:, temporaryAttribute:atCharacterIndex:longestEffectiveRange:inRange:, temporaryAttributesAtCharacterIndex:effectiveRange:, temporaryAttributesAtCharacterIndex:longestEffectiveRange:inRange:, textContainerChangedTextView:, toolTip, usesBackgroundSession, verticalCornerRadius
If method names in your source code match the private Apple APIs listed above, altering your method names will help prevent this app from being flagged in future submissions. In addition, note that one or more of the above APIs may be located in a static library that was included with your app. If so, they must be removed.

If you think this message was sent in error and that you have only used Apple-published APIs in accordance with the guidelines, send the app's nine-digit Apple ID, along with detailed information about why you believe the above APIs were incorrectly flagged, to [email protected]. For further information, visit the Technical Support Information page.

Though you are not required to fix the following issues, we wanted to make you aware of them:

Missing Purpose String in Info.plist File - Your app's code references one or more APIs that access sensitive user data. The app's Info.plist file should contain a NSLocationAlwaysUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. Starting Spring 2019, all apps submitted to the App Store that access user data will be required to include a purpose string. If you're using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. You can contact the developer of the library or SDK and request they release a version of their code that doesn't contain the APIs. Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).

Missing Purpose String in Info.plist File - Your app's code references one or more APIs that access sensitive user data. The app's Info.plist file should contain a NSLocationWhenInUseUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. Starting Spring 2019, all apps submitted to the App Store that access user data will be required to include a purpose string. If you're using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. You can contact the developer of the library or SDK and request they release a version of their code that doesn't contain the APIs. Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).

Best regards,

The App Store Team

--linksdkonly

Are you sure that you put the --linksdkonly with Release & Appstore selection?

Screenshot 2019-04-18 at 14 20 22

@amirvenus "link all" is mtouch default, i.e. if --nolink or linksdkonly is not used (and not seen in your build logs). However using this option means you're responsible to preserve anything required by 3rd party code (e.g. things used thru reflection).

This is my latest build using --linksdkonly switch again

Building iOS (Release).txt

@EpicDrakkar This is the configurations that worked for me
Screen Shot 2019-04-18 at 4 08 30 PM

@EpicDrakkar This is the configurations that worked for me
Screen Shot 2019-04-18 at 4 08 30 PM

So you don't have LLVM enabled? I should try that too

@amirvenus Yes

I have some local fixes (so the following list is partial) but here are the mentioned selected and who/where git blames.

addTemporaryAttribute:value:forCharacterRange:

Found in:

  • xkit.cs
788b63d96f (Rolf Bjarne Kvinge 2018-10-01 14:17:28 +0200  800)      [Export ("addTemporaryAttribute:value:forCharacterRange:")]
788b63d96f (Rolf Bjarne Kvinge 2018-10-01 14:17:28 +0200  806)      [Export ("addTemporaryAttribute:value:forCharacterRange:")]

addTemporaryAttributes:forCharacterRange:

Found in:

  • xkit.cs
788b63d96f (Rolf Bjarne Kvinge 2018-10-01 14:17:28 +0200  730)      [Export ("addTemporaryAttributes:forCharacterRange:")]

behaviorWithType:

Found in:

  • coreanimation.cs
5830166c63 (Rolf Bjarne Kvinge 2016-04-21 14:30:02 +0200 1783)      [Static][Export ("behaviorWithType:")]

defaultBaselineOffsetForFont:

Found in:

  • xkit.cs
788b63d96f (Rolf Bjarne Kvinge 2018-10-01 14:17:28 +0200  827)      [Export ("defaultBaselineOffsetForFont:")]

defaultLineHeightForFont:

Found in:

  • xkit.cs
788b63d96f (Rolf Bjarne Kvinge 2018-10-01 14:17:28 +0200  820)      [Export ("defaultLineHeightForFont:")]

finished

Found in:

  • avfoundation.cs
5830166c63 (Rolf Bjarne Kvinge 2016-04-21 14:30:02 +0200  3819)         [Export ("finished")]

  • foundation.cs
bcc05aa5ff (Timothy Risi       2017-08-15 04:32:51 -0800 11803)         [Export ("finished")]

greekingThreshold

Found in:

  • pdfkit.cs
5830166c63 (Rolf Bjarne Kvinge 2016-04-21 14:30:02 +0200 1775)      [Export ("greekingThreshold")]

initWithSource:convolutionState:weights:

Found in:

  • metalperformanceshaders.cs
87f9e23989 (Timothy Risi       2017-11-28 11:29:05 -0900 3678)      [Export ("initWithSource:convolutionState:weights:")]

initWithType:

Found in:

  • coreanimation.cs
5830166c63 (Rolf Bjarne Kvinge 2016-04-21 14:30:02 +0200 1767)      [Export ("initWithType:")]

postSession:didAddPlayer:

Found in:

  • gamekit.cs
832db98110 (Alex Soto          2018-02-14 09:38:49 -0600 2447)      [Export ("postSession:didAddPlayer:")]

postSession:didReceiveData:fromPlayer:

Found in:

  • gamekit.cs
832db98110 (Alex Soto          2018-02-14 09:38:49 -0600 2467)      [Export ("postSession:didReceiveData:fromPlayer:")]

postSession:didReceiveMessage:withData:fromPlayer:

Found in:

  • gamekit.cs
832db98110 (Alex Soto          2018-02-14 09:38:49 -0600 2472)      [Export ("postSession:didReceiveMessage:withData:fromPlayer:")]

postSession:didRemovePlayer:

Found in:

  • gamekit.cs
832db98110 (Alex Soto          2018-02-14 09:38:49 -0600 2452)      [Export ("postSession:didRemovePlayer:")]

postSession:player:didChangeConnectionState:

Found in:

  • gamekit.cs
832db98110 (Alex Soto          2018-02-14 09:38:49 -0600 2457)      [Export ("postSession:player:didChangeConnectionState:")]

postSession:player:didSaveData:

Found in:

  • gamekit.cs
832db98110 (Alex Soto          2018-02-14 09:38:49 -0600 2462)      [Export ("postSession:player:didSaveData:")]

preferredMetalContext

Found in:

  • vision.cs
89071bc19d (Alex Soto          2017-07-18 11:12:10 -0500 1342)      [NullAllowed, Export ("preferredMetalContext", ArgumentSemantic.Retain)]

removeData:

Found in:

  • gameplaykit.cs
5830166c63 (Rolf Bjarne Kvinge 2016-04-21 14:30:02 +0200 1991)      [Export ("removeData:")]

removeTemporaryAttribute:forCharacterRange:

Found in:

  • xkit.cs
788b63d96f (Rolf Bjarne Kvinge 2018-10-01 14:17:28 +0200  743)      [Export ("removeTemporaryAttribute:forCharacterRange:")]
788b63d96f (Rolf Bjarne Kvinge 2018-10-01 14:17:28 +0200  749)      [Export ("removeTemporaryAttribute:forCharacterRange:")]

setGreekingThreshold:

  • Not found - try without set prefix.

Found in:

setIsPrimary:

  • Not found - try without set prefix.

Found in:

setShouldAntiAlias:

  • Not found - try without set prefix.

Found in:

setUUID:

  • Not found - try without set prefix.

Found in:

shouldAntiAlias

Found in:

  • pdfkit.cs
5830166c63 (Rolf Bjarne Kvinge 2016-04-21 14:30:02 +0200 1770)      [Export ("shouldAntiAlias")]

temporaryAttribute:atCharacterIndex:effectiveRange:

Found in:

  • xkit.cs
788b63d96f (Rolf Bjarne Kvinge 2018-10-01 14:17:28 +0200  758)      [Export ("temporaryAttribute:atCharacterIndex:effectiveRange:")]
788b63d96f (Rolf Bjarne Kvinge 2018-10-01 14:17:28 +0200  765)      [Export ("temporaryAttribute:atCharacterIndex:effectiveRange:")]

temporaryAttribute:atCharacterIndex:longestEffectiveRange:inRange:

Found in:

  • xkit.cs
788b63d96f (Rolf Bjarne Kvinge 2018-10-01 14:17:28 +0200  771)      [Export ("temporaryAttribute:atCharacterIndex:longestEffectiveRange:inRange:")]
788b63d96f (Rolf Bjarne Kvinge 2018-10-01 14:17:28 +0200  778)      [Export ("temporaryAttribute:atCharacterIndex:longestEffectiveRange:inRange:")]

temporaryAttributesAtCharacterIndex:effectiveRange:

Found in:

  • xkit.cs
788b63d96f (Rolf Bjarne Kvinge 2018-10-01 14:17:28 +0200  713)      [Export ("temporaryAttributesAtCharacterIndex:effectiveRange:")]
788b63d96f (Rolf Bjarne Kvinge 2018-10-01 14:17:28 +0200  720)      [Export ("temporaryAttributesAtCharacterIndex:effectiveRange:")]

temporaryAttributesAtCharacterIndex:longestEffectiveRange:inRange:

Found in:

  • xkit.cs
788b63d96f (Rolf Bjarne Kvinge 2018-10-01 14:17:28 +0200  784)      [Export ("temporaryAttributesAtCharacterIndex:longestEffectiveRange:inRange:")]
788b63d96f (Rolf Bjarne Kvinge 2018-10-01 14:17:28 +0200  791)      [Export ("temporaryAttributesAtCharacterIndex:longestEffectiveRange:inRange:")]

textContainerChangedTextView:

Found in:

  • xkit.cs
788b63d96f (Rolf Bjarne Kvinge 2018-10-01 14:17:28 +0200   85)      [Export ("textContainerChangedTextView:")]

toolTip

Found in:

  • appkit.cs
5830166c63 (Rolf Bjarne Kvinge 2016-04-21 14:30:02 +0200  8213)         [Export ("toolTip")]
5830166c63 (Rolf Bjarne Kvinge 2016-04-21 14:30:02 +0200 14842)         [Export ("toolTip")]
5830166c63 (Rolf Bjarne Kvinge 2016-04-21 14:30:02 +0200 15755)         [Export ("toolTip")]
5830166c63 (Rolf Bjarne Kvinge 2016-04-21 14:30:02 +0200 17618)         [Export ("toolTip")]
5830166c63 (Rolf Bjarne Kvinge 2016-04-21 14:30:02 +0200 19633)         [Export ("toolTip")]
b59a82e6db (Chris Hamons       2017-07-19 09:00:13 -0500 26618)         [Export ("toolTip")]

  • pdfkit.cs
5830166c63 (Rolf Bjarne Kvinge 2016-04-21 14:30:02 +0200  606)      [Export ("toolTip")]

usesBackgroundSession

Found in:

  • cloudkit.cs
5830166c63 (Rolf Bjarne Kvinge 2016-04-21 14:30:02 +0200 1251)      [Export ("usesBackgroundSession", ArgumentSemantic.UnsafeUnretained)]

@EpicDrakkar This is the configurations that worked for me
Screen Shot 2019-04-18 at 4 08 30 PM

I was able to fix this issue this morning. linksdkonly did the trick for me. Thanks

Removing the LLVM, setting Linker behvaiour to Link Framework SDKs and adding --linksdkonly did the job.

Thanks

Hi, we've been blocked by this issue for the past week or so now. I appreciate from all the activity above there is work being done to address this but unfortunately, we think, due to us being dependant on an SQLite package, we cannot use the --linksdkonly fix as the build then fails with MT2002: Failed to resolve "System.Diagnostics.CounterCreationDataCollection". Once this has all be merged in, is there any ETA on when an update version of the package will be available? I know that can sometimes be like asking how long a piece of string is, but any additional timeframes would be greatly appreciated :)

@Jak893 it's already merged in master so it should [1] be part of d16-2 (not yet branched) and we're seeking approval to back port it into the next stable release (d16-1).

Specific dates are harder... but you can get a _good_ guess by reading https://docs.microsoft.com/en-us/visualstudio/productinfo/release-rhythm

[1] unless something cause us to revert it (not a common situation)

There's several assemblies that provide SQLite support. It looks like the one you're using is not built against .NET Standard (or against the XI BCL SDK) and that can create a few problems (like the one you mention). If possible see if there's a different build against .NET Standard as this will reduce future pain in addition to fixing this - e.g. by disabling the managed linker you are making your application much larger, disabling optimizations (so slower) and you get longer build times...

@spouliot That's perfect, definitely gives us something to work with in the meantime, thanks for the advice! Have a great weekend :)

This is landed now in d16-1, the next major release, and master for future releases.

Thanks for the report everyone 馃憢

This issue is back....
I've got

  • Xamarin.iOS version 12.10.0.153 (so I got the update when this issue should have been closed according to the releasenotes
  • Xamarin.Forms 4.0.0.497661
  • Visual Studio for Mac 2019, 8.1 (build2742)

and it is set to Link Framework SDKs only

And when I build my application to publish to the app store, I get a nice message from Apple:

You application has one or more issues.
ITMS-90338: Non-public API usage - The app references non-public selectors in MyApp.iOS: applicationWillTerminate, ddSetLogLevel:, donothingatall:, localTarget, newSocketQueueForConnectionFromAddress:onSocket:, setOrientation:animated:, socket:didConnectToHost:port:, socket:didReadPartialDataOfLength:tag:, socket:didReceiveTrust:completionHandler:, socket:didWritePartialDataOfLength:tag:, socket:shouldTimeoutReadWithTag:elapsed:bytesDone:, socket:shouldTimeoutWriteWithTag:elapsed:bytesDone:, socketDidCloseReadStream:, socketDidSecure:, terminateWithSuccess, webSocket:didReceiveMessage:, webSocketDidClose:, webSocketDidOpen:.

Anyone know how to solve this?

@svrooij are you using any third-party libraries? I couldn't find any of those selectors in Xamarin.iOS, so my guess is that they're coming from somewhere else.

@rolfbjarne You're right it was a project created for the Xamarin.Forms MasterDetail template a few weeks ago, this includes a reference to Xamarin.TextCloud.Agent which is now unsupported. So maybe the template should be adjusted.

@rolfbjarne You're right it was a project created for the Xamarin.Forms MasterDetail template a few weeks ago, this includes a reference to Xamarin.TextCloud.Agent which is now unsupported. So maybe the template should be adjusted.

Great, thanks for letting us know. I've filed this internally (#923024) so hopefully we'll get around to fix it .

by the way, I realised using link all option results in a bigger binary than using linksdkonly option (almost double in size)

I am getting the same rejection from Apple - but the Linker setting was not the problem for me. Turning off LLVM solved it.

I am still getting this warning though:

ITMS-90809: Deprecated API Usage - Apple will stop accepting submissions of apps that 
use UIWebView APIs. See https://developer.apple.com/documentation/uikit/uiwebview for
more information

despite having added the appropriate attribute to Assembly.cs

[assembly: ExportRenderer(typeof(WebView), typeof(Xamarin.Forms.Platform.iOS.WkWebViewRenderer))]

@joehanna Forms discussion about that issue going on here https://github.com/xamarin/Xamarin.Forms/issues/7323

How to add --linksdkonly and where to add

@swapnil591 - In your iOS project options, look for iOS Build -> Additional mtouch arguments.

image

Was this page helpful?
0 / 5 - 0 ratings