ios - Dev、Test、Staging、Prod等不同的环境,我们如何拥有不同的Info.plist文件呢?

标签 ios objective-c xcode

我们如何为不同的环境(例如Dev、Test、Staging 和Prod)提供不同的Info.plist 文件?

我为每个环境设置了一些设置和一个单独的 Facebook 应用程序,以确保应用程序分析不会受到测试人员等方面的影响。因此,我真的尽量避免在为每个环境构建之前手动更新设置。

最佳答案

这是添加特定于环境的 plist 所需执行的操作。

  • 将原始 ProjectName.Info.plist 文件复制到 ProjectName_Dev.Info.plistProjectName_Test.Info.plistProjectName_Staging.Info.plist 并将它们添加到项目中。

  • Project Navigator 中单击项目名称,选择 Target,然后选择 Build Phases 选项卡。

  • 在右上角的搜索栏中输入 Info.plist 以筛选 Info.plist。

  • Copy Bundle Resources 下,删除除 ProjectName.Info.plist

    之外的所有 plist
  • 现在点击 Editor -> Add Build Phase -> Add Run Script Build Phase 菜单选项。

  • 最后,将以下shell脚本复制到新添加的Build Phase中。

确保将 ProjectName 替换为您的项目名称!

if [ "${CONFIGURATION}" == "Dev" ]; then
cp -r "${PROJECT_DIR}/ProjectName/ProjectName-Info_Dev.plist" "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/ProjectName-Info.plist"
echo "DEV plist copied"
elif [ "${CONFIGURATION}" == "Test" ]; then
cp -r "${PROJECT_DIR}/ProjectName/ProjectName-Info_Test.plist" "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/ProjectName-Info.plist"
echo "Beta plist copied"
elif [ "${CONFIGURATION}" == "Staging" ]; then
cp -r "${PROJECT_DIR}/ProjectName/ProjectName-Info_Staging.plist" "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/ProjectName-Info.plist"
echo "Beta plist copied"
elif [ "${CONFIGURATION}" == "Prod" ]; then
cp -r "${PROJECT_DIR}/ProjectName/ProjectName-Info_Prod.plist" "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/ProjectName-Info.plist"
echo "Beta plist copied"
fi

或者只是:

cp -r "${PROJECT_DIR}/ProjectName/ProjectName-Info_${CONFIGURATION‌ }.plist""${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/ProjectName-Info.‌ plist"

注意:我假设您已经使用 Dev、Test、Staging 和 Production 环境变量创建了构建方案。

Got help from this article. http://www.dosomethinghere.com/2013/09/21/different-settings-app-entries-for-debug-vs-release-builds/

关于ios - Dev、Test、Staging、Prod等不同的环境,我们如何拥有不同的Info.plist文件呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21211267/

相关文章:

ios - Objective-C:应用内消息按钮的 Action

ios - 如何在 skobbler 导航中启用标题下一回合 View

c - Xcode 和 visual studio 中的 OpenGl 结果差异

ios - 设置 UICollectionViewController 时出错 - nib 但未获得 UICollectionView

ios - 如何使用 iOS 将数据导出到 csv 文件?

ios - 如何使用 iOS 5 中的 Storyboard 功能自动执行 Segue?

php - iOS 到 PHP 的错误编码(非英语变成乱码)

ios - UICollectionView 交互转换抛出异常

objective-c - NSDateFormatter stringFromDate 在使用 12 小时时间格式时返回 nil

xcode - Homebrew 程序警告 : Xcode is installed to a directory with a space in the name