You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MAUI iOS应用提交App Store遭拒:ITMS-90338非公开API使用问题

解决MAUI iOS应用App Store拒审(ITMS-90338: 非公开API使用)问题

问题详情

App Store提交时收到以下拒审通知:

ITMS-90338: Non-public API usage - The app references non-public symbols in : _ubrk_openRules, _ucal_add, _ucal_close, _ucal_get, _ucal_getAttribute, _ucal_getKeywordValuesForLocale, _ucal_getNow, _ucal_getTimeZoneDisplayName, _ucal_getTimeZoneIDForWindowsID, _ucal_getWindowsTimeZoneID, _ucal_open, _ucal_openTimeZoneIDEnumeration, _ucal_set, _ucal_setMillis, _ucol_close, _ucol_closeElements, _ucol_getOffset, _ucol_getRules, _ucol_getSortKey, _ucol_getStrength, _ucol_getVersion, _ucol_next, _ucol_open, _ucol_openElements, _ucol_openRules, _ucol_previous, _ucol_safeClone, _ucol_setAttribute, _ucol_setVariableTop, _ucol_strcoll, _ucurr_forLocale, _ucurr_getName, _udat_close, _udat_countSymbols, _udat_format, _udat_getSymbols, _udat_open, _udat_setCalendar, _udat_toPattern, _udata_setCommonData, _udatpg_close, _udatpg_getBestPattern, _udatpg_open, _uenum_close, _uenum_count, _uenum_next, _uldn_close, _uldn_keyValueDisplayName, _uldn_open, _uloc_canonicalize, _uloc_countAvailable, _uloc_getAvailable, _uloc_getBaseName, _uloc_getCharacterOrientation, _uloc_getCountry, _uloc_getDefault, _uloc_getDisplayCountry, _uloc_getDisplayLanguage, _uloc_getDisplayName, _uloc_getISO3Country, _uloc_getISO3Language, _uloc_getKeywordValue, _uloc_getLCID, _uloc_getLanguage, _uloc_getName, _uloc_getParent, _uloc_setKeywordValue, _ulocdata_getCLDRVersion, _ulocdata_getMeasurementSystem, _unorm2_getNFDInstance, _unorm2_getNFKCInstance, _unorm2_getNFKDInstance, _unorm2_isNormalized, _unum_close, _unum_getAttribute, _unum_getSymbol, _unum_open, _unum_toPattern, _ures_close, _ures_getByKey, _ures_getSize, _ures_getStringByIndex, _ures_open, _usearch_close, _usearch_first, _usearch_getBreakIterator, _usearch_getMatchedLength, _usearch_last, _usearch_openFromCollator, _usearch_setPattern, _usearch_setText.

环境信息

  • Visual Studio 2022 社区版 v17.7
  • MAUI版本:MAUI版本截图
  • 已安装第三方NuGet包:
    • Newtonsoft.Json
    • Onion.Maui.Googlemaps
    • SkiaSharp.Extended.UI.Maui
    • Xamarin.Firebase.iOS.Database
    • CommunityToolkit.Maui

解决方案

1. 定位问题根源

这些被检测到的符号均属于ICU(Unicode国际化组件)的私有API,大概率是某个第三方依赖包引入了未适配iOS的ICU静态库。可以通过以下命令快速定位来源:

nm -u /path/to/your/app/ipa/Payload/YourApp.app/YourApp | grep "_ubrk_openRules"

也可以查看Visual Studio构建输出中的警告信息,通常会标注符号的引用来源。

2. 排查并更新第三方依赖

  • Xamarin.Firebase.iOS.Database:该包是Xamarin生态的遗留库,未针对MAUI做适配,容易引入旧的ICU依赖。建议替换为Firebase官方提供的MAUI兼容包,或升级到该包的最新版本(若仍维护)。
  • Onion.Maui.Googlemaps:检查该包的版本,确认是否依赖了过时的Xamarin组件。尝试更新到最新稳定版,或考虑替换为MAUI官方的Maps组件。
  • SkiaSharp.Extended.UI.Maui:确保使用的是适配MAUI的最新版本,旧版本可能存在ICU相关的冗余引用。

3. 调整MAUI iOS构建配置

在项目的.csproj文件中添加以下配置,强制使用iOS系统自带的ICU库,避免嵌入私有API符号:

<PropertyGroup Condition="'$(TargetFramework)' == 'net7.0-ios'">
  <MtouchUseSystemICU>true</MtouchUseSystemICU>
</PropertyGroup>

4. 清理重建项目

  • 执行「生成」→「清理解决方案」
  • 手动删除项目目录下的bin和obj文件夹
  • 重新构建并归档应用,确保构建过程中无私有API相关警告

5. 验证修复效果

提交前用otool工具检查二进制文件,确认私有符号已移除:

otool -v -t /path/to/your/app/ipa/Payload/YourApp.app/YourApp | grep "_ubrk_openRules"

若命令无输出,说明修复生效。

内容的提问来源于stack exchange,提问作者Arjun K R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 01:32:20