我们如何为不同的环境(例如Dev、Test、Staging 和Prod)提供不同的Info.plist
文件?
我为每个环境设置了一些设置和一个单独的 Facebook 应用程序,以确保应用程序分析不会受到测试人员等方面的影响。因此,我真的尽量避免在为每个环境构建之前手动更新设置。
最佳答案
这是添加特定于环境的 plist 所需执行的操作。
将原始
ProjectName.Info.plist
文件复制到ProjectName_Dev.Info.plist
、ProjectName_Test.Info.plist
和ProjectName_Staging.Info.plist
并将它们添加到项目中。在
Project Navigator
中单击项目名称,选择Target
,然后选择Build Phases
选项卡。在右上角的搜索栏中输入
Info.plist
以筛选 Info.plist。从
之外的所有 plistCopy Bundle Resources
下,删除除ProjectName.Info.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/