在我的ios应用程序中,新的Xcode 11 GM种子2部署后,苹果返回错误:ITMS-90683:在Info.plist和NSBluetoothAlwaysUsageDescription中缺少目的字符串。
问题是我没有在我的应用程序中使用蓝牙。或者也许我不知道。我怎样才能找出为什么需要这样的许可?
我不使用CoreBluetooth.framework
发布于 2019-09-18 20:47:08
我今天也有同样的问题。当我搜索grep时,我发现在我的CoreBluetooth.framework中有一些对project.pbxproj的引用。
我删除了参考资料,构建应用程序也很好。上传到苹果,它通过了,所以这对我有效。
若要搜索,请使用以下命令
grep -r -a CoreBluetooth.framework ProjectFolder
发布于 2019-09-19 07:25:21
打开Info.plist并添加一个NSBluetoothAlwaysUsageDescription
。您可以在编辑器中通过添加如下行项来完成此操作:
或者,您可以右键单击Info.plist和Open ->源代码,并将其粘贴到两行适当的xml中:
<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
<dict>
....
<key>NSBluetoothPeripheralUsageDescription</key>
<string>We use Bluetooth to connect to the MantisX hardware device.</string>
....
</dict>
</plist>
发布于 2019-09-19 18:12:31
我能够通过扫描符号用法来消除CoreBluetooth用法,特别是寻找CBCentralManager
。我写的剧本是这样做的:
#!/usr/bin/env bash
#
# find-bluetooth-usages.sh <app1.app> <app2.app> ...
check_references_corebluetooth() {
nm "$1" | grep "CBCentralManager" 2>&1 >/dev/null
}
find_usages () {
app_path=$1
if [[ ! -d $app_path || ! -d "$app_path/Frameworks" ]]; then
echo "$app_path is not a valid app directory."
exit 1
fi
app_filename=$(basename -- "$app_path")
app_name="${app_filename%.*}"
if check_references_corebluetooth "$app_path/$app_name"; then
echo "$app_name contains references to CoreBluetooth"
fi
for framework_filename in $(ls "$app_path/Frameworks" | egrep '\.framework$'); do
framework_path="$app_path/Frameworks/$framework_filename"
framework_name=$(basename "$framework_path" .framework)
if check_references_corebluetooth "$framework_path/$framework_name"; then
echo "$framework_name contains references to CoreBluetooth"
fi
done
}
for arg in "$@"; do
find_usages "$arg"
done
这将深入研究主要二进制+其包含的框架,以找到CBCentralManager
引用。例如:
./find-bluetooth-usages.sh /path/to/MyApp.app
https://stackoverflow.com/questions/57987863
复制相似问题