如何在Info.Plist文件中动态添加值

问题描述 投票:0回答:1

我想根据条件在 Info.plist 中的

audio
中添加
UIBackgroundModes
属性。

我的反应本机应用程序是多个应用程序的单个代码库。我只需要其中一个品牌的

audio
属性,这就是为什么其中一个品牌应用程序在 AppStore 发布时被拒绝的原因。

ios bash react-native info.plist
1个回答
0
投票

经过一番研究,我发现 info.plist 文件无法在 运行。因此,在构建期间可以使用多种解决方案。

对于动态字符串值,您可以直接使用https://www.npmjs.com/package/react-native-config

它看起来像这样。

首先-
您可以在构建配置中使用预处理器宏。

要在构建时有条件地在 Info.plist 中的 UIBackgroundModes 下添加音频值,您可以遵循与之前概述的方法类似的方法。具体方法如下:

  1. 创建构建配置:就像以前一样,在 Xcode 中创建新的构建配置或修改现有配置以满足您的需求。

  2. 定义预处理器宏:为新的构建配置定义预处理器宏。例如,您可以为“CustomAudioEnabled”配置定义像 CUSTOM_AUDIO_ENABLED 这样的宏。

  3. 使用脚本修改 Info.plist:编写一个作为构建阶段运行的脚本。仅当特定构建配置处于活动状态时,此脚本应修改 Info.plist 文件以包含 UIBackgroundModes 下的音频值。

if [ "$CONFIGURATION" == "CustomAudioEnabled" ]; then
    /usr/libexec/PlistBuddy -c "Add :UIBackgroundModes array" Info.plist
    /usr/libexec/PlistBuddy -c "Add :UIBackgroundModes:0 string audio" Info.plist
fi

第二个
您可以利用构建脚本 我们有一个构建应用程序的管道。所以,这对我有用。

  1. 创建 Bash 脚本:编写一个 bash 脚本来处理新构建配置的创建和任何相关任务。您可以将此脚本命名为 create_build_configuration.sh。

  2. 脚本步骤:在脚本中,您需要执行以下步骤:

    a.使用 plutil 或 PlistBuddy 等命令修改项目文件 (.xcodeproj) 或工作区文件 (.xcworkspace) 以添加新的构建配置。

    b.您还需要修改 Info.plist 文件,以根据此新的构建配置有条件地添加必要的条目。

    c.或者,您还可以处理与配置 Xcode 项目相关的其他任务,例如设置构建设置或更新方案配置。

  3. 运行脚本:编写脚本后,您可以从命令行执行它。确保您拥有执行脚本所需的权限,并且从 Xcode 项目文件所在的正确目录运行它。

  4. 验证:运行脚本后,打开 Xcode 项目以验证新的构建配置是否已创建并正确配置,并且 Info.plist 文件是否已按预期更新。

#!/bin/bash

# Add a new build configuration
xcodeproj_path="YourProject.xcodeproj"
configuration_name="CustomAudioEnabled"
xcodebuild -project "$xcodeproj_path" -target "YourTarget" -configuration "$configuration_name" clean
xcodebuild -project "$xcodeproj_path" -target "YourTarget" -configuration "$configuration_name" build

# Modify Info.plist based on the new configuration
if [ "$configuration_name" == "CustomAudioEnabled" ]; then
    /usr/libexec/PlistBuddy -c "Add :UIBackgroundModes array" Info.plist
    /usr/libexec/PlistBuddy -c "Add :UIBackgroundModes:0 string audio" Info.plist
fi

希望这有帮助。谢谢

© www.soinside.com 2019 - 2024. All rights reserved.