我的用户习惯(开发和生产)和我各自的GoogleServices-Info.plist文件分别位于Firebase / dev Firebase / prod文件夹中
我使用“构建阶段”脚本在构建时使用以下脚本将文件复制到Runner /目录
if [ "${CONFIGURATION}" == "Debug-prod" ] || [ "${CONFIGURATION}" == "Release-prod" ] || [ "${CONFIGURATION}" == "Release" ]; then
cp -r "${PROJECT_DIR}/Firebase/prod/GoogleService-Info.plist" "${PROJECT_DIR}/Runner/GoogleService-Info.plist"
echo "Production plist copied"
elif [ "${CONFIGURATION}" == "Debug-dev" ] || [ "${CONFIGURATION}" == "Release-dev" ] || [ "${CONFIGURATION}" == "Debug" ]; then
cp -r "${PROJECT_DIR}/Firebase/dev/GoogleService-Info.plist" "${PROJECT_DIR}/Runner/GoogleService-Info.plist"
echo "Development plist copied"
fi
一切正常,直到我尝试将CI / CD与codemagic结合使用。
(1)首先我从codemagic build中得到了这个错误(但是在本地工作得很好)
错误:找不到构建输入文件:>'/ Users / builder / clone / ios / Runner / GoogleService-Info.plist'
(2)然后,从Xcode Target的“复制包资源”中删除了该文件。现在我得到以下错误(本地和代码魔术都如此):
error: Could not get GOOGLE_APP_ID in Google Services file from build environment
为了使构建在本地以及在Codemagic中都能正常工作,我应该保持什么正确设置?
更新:经过一番思考,看起来(1)是正确的设置。 > GoogleServices-Info.plist应该是副本捆绑软件资源的一部分。 > ADDITIONALLY,在开始构建之前,必须存在Runner / GoogleServices-Info.plist。因此,我在目录中放置了一个默认的plist文件,它可以正常工作。 >“我的构建阶段”脚本会将此默认plist文件覆盖为>根据口味适当的文件
答案 0 :(得分:1)
经过一番思考,看起来(1)是正确的设置。 GoogleServices-Info.plist应该是副本捆绑软件资源的一部分。
ADDITIONALLY ,在开始构建之前必须存在Runner / GoogleServices-Info.plist。因此,我在目录中放置了一个默认的plist文件,它可以正常工作。我的构建阶段脚本会将此默认plist文件覆盖为>根据口味适当的文件