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

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

我为每个环境设置了一些设置和独立的Facebook应用程序,以确保应用程序分析不会受到testing人员的偏见等。所以,确实要避免在为每个环境构build之前手动更新设置。

这是你需要做什么来添加环境特定的plists。

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

  • 点击Project Navigator中的项目名称,selectTarget ,然后selectBuild Phases选项卡。

  • 在右上angular的search栏中inputInfo.plist ,在Info.plist上进行过滤。

  • 从“ Copy Bundle Resources ,删除除ProjectName.Info.plist以外的所有plist

  • 现在点击Editor -> Add Build Phase -> Add Run Script Build Phase菜单选项。

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

确保将ProjectNamereplace为您的项目名称!

 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"

注意:我假设您已经创build了Dev,Test,Staging和Production环境variables的构buildscheme。

从这篇文章得到帮助。 http://www.dosomethinghere.com/2013/09/21/different-settings-app-entries-for-debug-vs-release-builds/

您还可以为每个目标创build单独的xcconfig文件,使用项目pipe理器为每个目标指定正确的xcconfig文件,然后在每个xcconfig中只定义一个具有相同名称的variables,并将该variables导入到您的单个plist中。 例如:

先xcconfig:

MY_VARIABLE = suchandsuch

第二个xcconfig:

MY_VARIABLE = thisandthat

然后在你的plist中,设置一个键值$(MY_VARIABLE)

取决于你在做什么。 Xcconfig很好,因为除了plist之外,你还可以访问你设置的variables,比如构build设置。

试试这个帮手类:

https://github.com/premosystems/MyEnvironmentConfig

  1. 将环境$(CONFIGURATION)添加到info.plist。

  2. 添加Environments.plistconfiguration文件,填入你喜欢的variables善良。

  3. 在MYEnvironmentConfig类中添加一个便利类别,公开强types的configuration值。

  4. 在appDidFinishLaunching中初始化MyEnvironmentConfig。