我们如何为不同的环境(例如Dev,Test,Staging和Prod)提供不同的Info.plist文件?
我们如何为不同的环境(例如Dev,Test,Staging和Prod)提供不同的Info.plist
文件?
我为每个环境设置了一些设置和独立的Facebook应用程序,以确保应用程序分析不会受到testing人员的偏见等。所以,确实要避免在为每个环境构build之前手动更新设置。
这是你需要做什么来添加环境特定的plists。
-
将原始
ProjectName.Info.plist
文件复制到ProjectName_Dev.Info.plist
,ProjectName_Test.Info.plist
和ProjectName_Staging.Info.plist
并将其添加到项目。 -
点击
Project Navigator
中的项目名称,selectTarget
,然后selectBuild Phases
选项卡。 -
在右上angular的search栏中input
Info.plist
,在Info.plist
上进行过滤。 -
从“
Copy Bundle Resources
,删除除ProjectName.Info.plist
以外的所有plist -
现在点击
Editor -> Add Build Phase -> Add Run Script Build Phase
菜单选项。 -
最后,将以下shell脚本复制到新添加的Build阶段。
确保将ProjectName
replace为您的项目名称!
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。
您还可以为每个目标创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
-
将环境$(CONFIGURATION)添加到info.plist。
-
添加Environments.plistconfiguration文件,填入你喜欢的variables善良。
-
在MYEnvironmentConfig类中添加一个便利类别,公开强types的configuration值。
-
在appDidFinishLaunching中初始化MyEnvironmentConfig。