runtime: [Bug] Publishing maui rc2 app to App Store not working -- The app references non-public symbols in MyContactNetwork.MobileMaui: _proc_pidinfo
Description
I’m running into an App Store rejection issue with .NET 6.0 RC 2 + MAUI + iOS + WebView.Maui:
ITMS-90338: Non-public API usage - The app references non-public symbols in MyContactNetwork.MobileMaui: _proc_pidinfo. 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. For further information, visit the Technical Support Information at http://developer.apple.com/support/technical/
I believe that the offending package is System.Diagnostics.Process
, which I’m guessing is referenced (and so ILLink won’t remove, no matter what) because of this line:
which is called by
I tried adding the System.Diagnostics.Process.dll to the trimmer exceptions but it didn’t work - I believe something in your code is referencing it.
ILinker build output:
ILLink: Processing embedded substitution descriptor ILLink.Substitutions.xml from System.Diagnostics.Process, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
Assembly System.Diagnostics.Process, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a : skipped (SDK)
ILLink: Reduced '11' instructions in conditional branches for [System.Diagnostics.Process, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a] method System.SR.GetResourceString(String)
ILLink: Reduced '4' instructions in conditional branches for [System.Diagnostics.Process, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a] method System.SR.Format(String,Object)
ILLink: Reduced '236' instructions in conditional branches for [System.Diagnostics.Process, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a] method System.Diagnostics.Process.StartCore(ProcessStartInfo)
ILLink: Reduced '5' instructions in conditional branches for [System.Diagnostics.Process, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a] method System.SR.Format(String,Object,Object)
ILLink: Reduced '1' instructions in conditional branches for [System.Diagnostics.Process, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a] method System.Diagnostics.ProcessWaitState.Holder.Finalize()
Reproduction Steps
Build the base MAUI Blazor template in Release+iOS+ARM64 and publish to App Store TestFlight, using the following in csproj:
<RuntimeIdentifier Condition="$(TargetFramework.Contains('-ios')) AND '$(Configuration)' == 'Release'">ios-arm64</RuntimeIdentifier>
Expected behavior
Successful publish to the app store
Actual behavior
Did not publish
Regression?
Similar issue: https://github.com/dotnet/runtime/issues/57931
Known Workarounds
No response
Configuration
.NET 6 rc2 MAUI Single Project Blazor + MAUI.WebView iOS ARM64 Build
Other information
No response
About this issue
- Original URL
- State: closed
- Created 3 years ago
- Comments: 19 (13 by maintainers)
Commits related to this issue
- Fix CodeDom reference I noticed that in my Maui application System.CodeDom was being referenced. This is because we don't have a `PrivateAssets="all"` on the PackageReference in Microsoft.Maui.Contro... — committed to eerhardt/maui by eerhardt 3 years ago
- Exclude the managed code around libproc on iOS/tvOS (#61590) Since libproc is a private Apple API, it is not available on iOS/tvOS and should be excluded (see #61265 (comment) and above for more deta... — committed to dotnet/runtime by MaximLipnin 3 years ago
- Exclude the managed code around libproc on iOS/tvOS (#61590) Since libproc is a private Apple API, it is not available on iOS/tvOS and should be excluded (see #61265 (comment) and above for more deta... — committed to MaximLipnin/runtime by MaximLipnin 3 years ago
- [release/6.0-maui] Exclude the managed code around libproc on iOS/tvOS (#62235) * Exclude the managed code around libproc on iOS/tvOS (#61590) Since libproc is a private Apple API, it is not ava... — committed to dotnet/runtime by MaximLipnin 3 years ago
- [iOS/tvOS] Remove P/Invokes to libproc from System.Private.CoreLib They aren't allowed by Apple when submitting to the App Store. Finishes https://github.com/dotnet/runtime/issues/61265 — committed to akoeplinger/runtime by akoeplinger 2 years ago
- [iOS/tvOS] Remove P/Invokes to libproc from System.Private.CoreLib They aren't allowed by Apple when submitting to the App Store. Finishes https://github.com/dotnet/runtime/issues/61265 — committed to akoeplinger/runtime by akoeplinger 2 years ago
- [iOS/tvOS] Remove P/Invokes to libproc from System.Private.CoreLib (#63936) They aren't allowed by Apple when submitting to the App Store. Finishes https://github.com/dotnet/runtime/issues/61265 — committed to dotnet/runtime by akoeplinger 2 years ago
- [iOS/tvOS] Remove P/Invokes to libproc from System.Private.CoreLib (#63934) They aren't allowed by Apple when submitting to the App Store. Finishes https://github.com/dotnet/runtime/issues/61265 — committed to dotnet/runtime by akoeplinger 2 years ago
- Squashed commit of the following: commit 36cdb5fc0c38cbb44291114e48e2b202ff37db01 Author: Ilona Tomkowicz <32700855+ilonatommy@users.noreply.github.com> Date: Thu Jan 20 11:03:02 2022 +0100 [w... — committed to mkhamoyan/runtime by mkhamoyan 2 years ago
- #51371 fixed failing test in iossimulator (#63877) * #51371 fixed failing test in iossimulator * #51371 added skiptestexception * #51371 added space after reference * #51371 fixed remaining ... — committed to dotnet/runtime by mkhamoyan 2 years ago
I’m reopening, because AFACT this is still an issue when the app isn’t trimmed.
@MaximLipnin we’ll need this in a servicing release (6.0.200 or something similar), we’re not targeting 7.0 for a while yet.
Doing a quick look at a Maui app locally, I see
System.CodeDom
is pulled in byMicrosoft.Maui.Controls.Build.Tasks
.I fixed this with https://github.com/dotnet/maui/pull/888, but it regressed with Merge branch ‘release/6.0.1xx-preview4’.
cc @PureWeen
I will submit a fix again to dotnet/maui.
I can confirm this issue on a dotnet new MAUI Blazor and MAUI template, in release/ios-arm64. After release linking, System.Diagnostics.Process.dll is still part of the app bundle, and
proc_pidinfo
is not linked out, even when the linker is explicitly told to link this DLL. So there’s gotta be a direct reference somewhere within MAUI or its libraries, I just haven’t found it yet.dotnet new maui:
dotnet new maui-blazor: