We have a new app we are trying to submit to the app store (using TestFlight for pre-release beta testing) but are getting an Invalid binary message due to the reference of UIWebView:
TMS-90809: Deprecated API Usage - New apps that use UIWebView are no longer accepted. Instead, use WKWebView for improved security and reliability.
We've followed the guide provide by Xamarin here: https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/webview?tabs=macos#uiwebview-deprecation-and-app-store-rejection-itms-90809
We have:
- Upgraded Xamarin Forms to 4.6 or higher - 4.6.0.706
- Ensured Xamarin.iOS 13.10.0.17 or higher - 13.16.0.13
- Remove references to UIWebView (none in the first place)
- Ensured IOS build is set to "Link Framework SDKs Only" (already was)
- Added the required mtouch argument: "--optimize=experimental-xforms-product-type"
- Updated all build configs (release/iphone, release/simulator, debug/iphone, debug/simulator)
I've also deleted my packages, bin, and object folders to ensure I get a full build, yet continue to get this response when uploading.
EDIT: I added the warning flag to my MTOUCH to see where it's used as well, and I do now see a warning, so it's there... somewhere.
Warning code added:
--warn-on-type-ref=UIKit.UIWebView
How can I go about finding which package is utilizing UIWebView without haphazardly updating them all and hoping that does the trick (without other unintended consequences)?
EDIT #2: I got GREP search working as recommended below - here are my results
grep -r 'UIWebView' .
Binary file ./.vs/NorthernLights/xs/sqlite3/storage.ide matches
./iOS/NorthernLights.iOS.csproj: <MtouchExtraArgs>--optimize=experimental-xforms-product-type --warn-on-type-ref=UIKit.UIWebView</MtouchExtraArgs>
Binary file ./packages/Xamarin.Forms.4.6.0.726/buildTransitive/XCODE10/Xamarin.Forms.Platform.iOS.dll matches
Binary file ./packages/Xamarin.Forms.4.6.0.726/buildTransitive/XCODE11/Xamarin.Forms.Platform.iOS.dll matches
Binary file ./packages/Xamarin.Forms.4.6.0.726/build/XCODE10/Xamarin.Forms.Platform.iOS.dll matches
Binary file ./packages/Xamarin.Forms.4.6.0.726/build/XCODE11/Xamarin.Forms.Platform.iOS.dll matches
Binary file ./packages/HockeySDK.Xamarin.5.2.0/lib/Xamarin.iOS10/HockeySDK.iOSBindings.dll matches
Looks to me like HockeyApp may be one of my culprits. I've already updated the package, but I do know HockeyApp's been migrated to AppCenter, so perhaps this code is no longer maintained. Also see a reference SQLite, which is one set of packages I can't get updated without breaking other parts of my app.
EDIT #3
We've removed HockeyApp but still have the two reference warnings. I've removed SQLIte PCL and re-added it to the most recent version but still see the reference to the storage.ide file, which I think is just a local database file I can ignore. It looks like all that's left is Xamarin.Forms references, but all of this should be dealt with via my mtouch arguments:
<MtouchExtraArgs>--optimize=experimental-xforms-product-type --warn-on-type-ref=UIKit.UIWebView</MtouchExtraArg
Can't figure out what I'm missing...
