如何仅在调试模式下启用 3D 触摸(静态快速操作)?
How to enable 3D touch(static quick actions) only in debug mode?
我们的团队正在开发一个应用程序,我想添加一些主屏幕快速操作,仅用于调试目的。另外,我希望在全新安装后立即启用它,这意味着动态快速操作不是一个选项。但是,我不知道我们是否只能在调试模式下启用静态快速操作。有什么办法可以实现吗?
显然,问题是您要求 Info.plist 中的条目用于调试配置,而不是用于发布配置。 Info.plist 的内容不会根据配置自动出现和消失。但是 what 文件被用作 Info.plist 是 can 改变的东西配置,因为它只是一个构建设置。所以解决这个问题的一种方法是一个特殊的配置和一个特殊的 Info.plist 来配合它。
您有两个主要选择:
- 任何类型文件的 GENERAL 选项:
最简洁的方法是为每个配置创建单独的文件。那么:
- 您可以在项目构建设置中为每个配置设置路径,如下所示:
或者您可以使用 运行 脚本来处理此文件或您在构建过程中需要更改的任何文件:
- 创建两个不同的
info.plist
文件,一个用于调试,另一个用于生产
- 前往项目构建设置并创建新的 运行 脚本阶段
- 使用以下脚本:
sourceFilePath="$PROJECT_DIR/$PROJECT_NAME/"
debugFileName="Debug-Info.plist"
releaseFileName="Release-Info.plist"
if [ "$CONFIGURATION" == "Debug" ]; then
cp $sourceFilePath/$debugFileName "$INFOPLIST_FILE"
else
cp $sourceFilePath/$releaseFileName "$INFOPLIST_FILE"
fi
请注意,在此示例中:
- 我使用 Debug-Info.plist 作为调试模式文件。
- 我使用Release-Info.plist作为发布模式文件。
- 我将所有文件复制到与原始
info.plist
文件相同的目录中。
但是我做了所有的变量,你可以把它们改成任何你想要的。
- 任何 plist
文件的更具体选项:
由于 Info.plist
是一个 属性 列表,您可以使用 PlistBuddy 直接编辑它的任何值。这是仅在调试模式下添加快捷方式项目的示例脚本:
/usr/libexec/PlistBuddy -c "Delete :UIApplicationShortcutItems" "$INFOPLIST_FILE"
if [ "$CONFIGURATION" != "Debug" ]; then
exit
fi
/usr/libexec/PlistBuddy -c "add :UIApplicationShortcutItems array" "$INFOPLIST_FILE"
/usr/libexec/PlistBuddy -c "delete :UIApplicationShortcutItems" "$INFOPLIST_FILE"
/usr/libexec/PlistBuddy -c "add :UIApplicationShortcutItems array" "$INFOPLIST_FILE"
/usr/libexec/PlistBuddy -c "add :UIApplicationShortcutItems:0 dict" "$INFOPLIST_FILE"
/usr/libexec/PlistBuddy -c "add :UIApplicationShortcutItems:0:UIApplicationShortcutItemIconType string UIApplicationShortcutIconTypePlay" "$INFOPLIST_FILE"
/usr/libexec/PlistBuddy -c "add :UIApplicationShortcutItems:0:UIApplicationShortcutItemTitle string Play" "$INFOPLIST_FILE"
/usr/libexec/PlistBuddy -c "add :UIApplicationShortcutItems:0:UIApplicationShortcutItemSubtitle string Start playback" "$INFOPLIST_FILE"
/usr/libexec/PlistBuddy -c "add :UIApplicationShortcutItems:0:UIApplicationShortcutItemType string PlayMusic" "$INFOPLIST_FILE"
/usr/libexec/PlistBuddy -c "add :UIApplicationShortcutItems:0:UIApplicationShortcutItemUserInfo dict" "$INFOPLIST_FILE"
/usr/libexec/PlistBuddy -c "add :UIApplicationShortcutItems:0:UIApplicationShortcutItemUserInfo:firstShortcutKey1 string firstShortcutKeyValue1" "$INFOPLIST_FILE"
记得 运行 这个脚本 在 Copy Bundle Resources
.
之前
我建议您始终将脚本代码放在一个单独的文件中,并在构建阶段调用它。
我们的团队正在开发一个应用程序,我想添加一些主屏幕快速操作,仅用于调试目的。另外,我希望在全新安装后立即启用它,这意味着动态快速操作不是一个选项。但是,我不知道我们是否只能在调试模式下启用静态快速操作。有什么办法可以实现吗?
显然,问题是您要求 Info.plist 中的条目用于调试配置,而不是用于发布配置。 Info.plist 的内容不会根据配置自动出现和消失。但是 what 文件被用作 Info.plist 是 can 改变的东西配置,因为它只是一个构建设置。所以解决这个问题的一种方法是一个特殊的配置和一个特殊的 Info.plist 来配合它。
您有两个主要选择:
- 任何类型文件的 GENERAL 选项:
最简洁的方法是为每个配置创建单独的文件。那么:
- 您可以在项目构建设置中为每个配置设置路径,如下所示:
或者您可以使用 运行 脚本来处理此文件或您在构建过程中需要更改的任何文件:
- 创建两个不同的
info.plist
文件,一个用于调试,另一个用于生产 - 前往项目构建设置并创建新的 运行 脚本阶段
- 使用以下脚本:
- 创建两个不同的
sourceFilePath="$PROJECT_DIR/$PROJECT_NAME/"
debugFileName="Debug-Info.plist"
releaseFileName="Release-Info.plist"
if [ "$CONFIGURATION" == "Debug" ]; then
cp $sourceFilePath/$debugFileName "$INFOPLIST_FILE"
else
cp $sourceFilePath/$releaseFileName "$INFOPLIST_FILE"
fi
请注意,在此示例中:
- 我使用 Debug-Info.plist 作为调试模式文件。
- 我使用Release-Info.plist作为发布模式文件。
- 我将所有文件复制到与原始
info.plist
文件相同的目录中。
但是我做了所有的变量,你可以把它们改成任何你想要的。
- 任何 plist
文件的更具体选项:
由于 Info.plist
是一个 属性 列表,您可以使用 PlistBuddy 直接编辑它的任何值。这是仅在调试模式下添加快捷方式项目的示例脚本:
/usr/libexec/PlistBuddy -c "Delete :UIApplicationShortcutItems" "$INFOPLIST_FILE"
if [ "$CONFIGURATION" != "Debug" ]; then
exit
fi
/usr/libexec/PlistBuddy -c "add :UIApplicationShortcutItems array" "$INFOPLIST_FILE"
/usr/libexec/PlistBuddy -c "delete :UIApplicationShortcutItems" "$INFOPLIST_FILE"
/usr/libexec/PlistBuddy -c "add :UIApplicationShortcutItems array" "$INFOPLIST_FILE"
/usr/libexec/PlistBuddy -c "add :UIApplicationShortcutItems:0 dict" "$INFOPLIST_FILE"
/usr/libexec/PlistBuddy -c "add :UIApplicationShortcutItems:0:UIApplicationShortcutItemIconType string UIApplicationShortcutIconTypePlay" "$INFOPLIST_FILE"
/usr/libexec/PlistBuddy -c "add :UIApplicationShortcutItems:0:UIApplicationShortcutItemTitle string Play" "$INFOPLIST_FILE"
/usr/libexec/PlistBuddy -c "add :UIApplicationShortcutItems:0:UIApplicationShortcutItemSubtitle string Start playback" "$INFOPLIST_FILE"
/usr/libexec/PlistBuddy -c "add :UIApplicationShortcutItems:0:UIApplicationShortcutItemType string PlayMusic" "$INFOPLIST_FILE"
/usr/libexec/PlistBuddy -c "add :UIApplicationShortcutItems:0:UIApplicationShortcutItemUserInfo dict" "$INFOPLIST_FILE"
/usr/libexec/PlistBuddy -c "add :UIApplicationShortcutItems:0:UIApplicationShortcutItemUserInfo:firstShortcutKey1 string firstShortcutKeyValue1" "$INFOPLIST_FILE"
记得 运行 这个脚本 在 Copy Bundle Resources
.
我建议您始终将脚本代码放在一个单独的文件中,并在构建阶段调用它。