为多环境发布管道创建并签署ipa文件后,如何修改iOS应用程序的Info.plist文件

为多环境发布管道创建并签署ipa文件后,如何修改iOS应用程序的Info.plist文件,ios,continuous-integration,continuous-deployment,ipa,info.plist,Ios,Continuous Integration,Continuous Deployment,Ipa,Info.plist,我们有一个针对两个不同后端环境的应用程序,比如说暂存和生产环境。每个都有自己的一组URL和配置。目前,我们每次都会重新构建整个应用程序,而不会发布到具有不同bundle id和配置集的特定环境。然而,这并不理想。理想情况下,我们希望有一个构建和发布管道。构建只会发生一次,然后发布管道将有一个步骤来发布到暂存,另一个步骤是生产 使用新的bundle id和配置文件解决应用程序的重新调整很容易,我们使用fastlane run dedict命令。但是,我不知道如何在同一个命令中修改包的内容,以不破坏

我们有一个针对两个不同后端环境的应用程序,比如说暂存和生产环境。每个都有自己的一组URL和配置。目前,我们每次都会重新构建整个应用程序,而不会发布到具有不同bundle id和配置集的特定环境。然而,这并不理想。理想情况下,我们希望有一个构建和发布管道。构建只会发生一次,然后发布管道将有一个步骤来发布到暂存,另一个步骤是生产

使用新的bundle id和配置文件解决应用程序的重新调整很容易,我们使用
fastlane run dedict
命令。但是,我不知道如何在同一个命令中修改包的内容,以不破坏签名。我想象的是在
Info.plist
中有一个属性,比如说
Environment
。在代码中,我读取了该值,如果该值为“Staging”,它将使用Staging url配置,否则为生产

更好、更灵活的方法是为配置提供一个单独的
.plist
文件,该文件将存储所有相关配置,然后在发布过程中用不同的文件替换它。这样做的好处是可以在不更改代码的情况下获得另一个环境支持。在第一种方法中,每次更改环境属性或创建新环境时,我们都需要通过添加另一条
if
语句来更改代码

无论如何,到目前为止,我们至少需要能够指定环境。如果后一种文件替换是不可能的,那么我希望Info.plist修改可以起作用

顺便说一句,我们在Android上使用了文件替换方法,它工作起来很轻松。我们使用
apktool
工具解包apk,替换配置文件,然后重新打包并放弃它


谢谢你的回复

你找到答案了吗?我还需要完全相同的功能。目前我正在使用fastlane gym来构建和归档我的应用程序,但我想知道我是否应该只使用xcode工具构建而不进行归档,稍后,在TestFlight上传之前(我们使用八达通进行TestFlight部署),根据需要更改info.plist,在上传之前进行归档和签名。。。这就是我的想法。我刚看到你的评论。我确实相信快车道是一条路要走,但要想弄明白这一点太费时了。我们采用了一种方法来重建应用程序,每个环境有2个版本。但我肯定会重新审视这一点,并在某个时候使用1-build-multiple-release思想构建一个合适的CI/CD管道