美文网首页工程架构
动态修改iOS app的环境变量(Jenkins+Cocoapo

动态修改iOS app的环境变量(Jenkins+Cocoapo

作者: Koson | 来源:发表于2017-04-01 17:32 被阅读1435次

简而言之,这一次是通过修改 Podfile 文件内容来实现动态修改 pod 模块的全局宏定义(Preprocessor Macros)。

Cocoapods 模块化架构中,子模块使用到一个全局宏定义,但是这个全局宏定义是动态的,还不能在 podspec 文件中这样子固定下来:

s.xcconfig = { "GCC_PREPROCESSOR_DEFINITIONS" => '$(inherited) UAT_Release=1' }

因为 UAT_Release 这个定义取决于 Jenkins 参数化构建时选择的环境。
那么就需要动态去修改 Xcconfig 配置文件,加入全局宏定义的 Build setting,这里是配合 Jenkins 进行自动化部署,使用 shell 脚本来达到动态修改的目的,在构建(Build)步骤中的Execute shell中加入如下脚本:

Command.png

说明:
1、${Configuration}是Jenkins中的参数(This project is parameterized),例如:UAT_Debug、UAT_Release、AppStore_Debug、AppStore_Release 等不同的环境,第一行只是打印出了当前的参数值;

2、sed 命令往 Podfile 文件中追加内容,这里需要注意的是,与Linux不同,sed -i 后面需要加入 "" 用以备份原文件,不然执行会出错;

3、/pod 'JJSEventAspect'/ 这一句则是匹配 pod 'JJSEventAspect' 所在的行;

4、a 表示新增内容,\ 则是换行;

5、最后的 Podfile 指文件名;

6、追加完成 hook 的代码之后执行 pod install 就很好理解了;

7、要追加进去的 hook 代码:
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] = '$(inherited) UAT_Release=1 COCOAPODS=1'
end
end
end
其中 UAT_Release 是参数化的结果,这个值是动态的。这一段 hook 执行后,子模块(pod)的build setting的全局宏定义(Preprocessor Macros)也都全部修改完成,如果是需要有选择性的修改,可以在 hook 中加入判断逻辑即可。

修改完成的 Podfile 文件是这样的:

Podfile screen.png

最后,测试人员只需要选择需要的打包环境,轻松的点一下 Build 按钮就可以拿到想要的包了。

Build.png

相关文章

  • 动态修改iOS app的环境变量(Jenkins+Cocoapo

    简而言之,这一次是通过修改 Podfile 文件内容来实现动态修改 pod 模块的全局宏定义(Preprocess...

  • Tweak原理&&越狱防护

    一、Tweak原理 1.iOS桌面本身就是一个应用,使用Tweak修改iOS桌面上app的角标。 配置环境变量 配...

  • iOS动态修改app图标

    在iOS10.3以后UIApplication多了个分类UIAlternateApplicationIcons 1...

  • iOS 动态修改app图标

    在开发过程中,我们有时候会遇到对线上的项目进行更改icon的需求.譬如,明天双十一抢购,要做一个活动图标.后天什么...

  • 【iOS】动态修改APP图标

    在微博上看到了 @安财小小生分享的iOS 10.3新增功能:通过API动态修改APP的图标,自己深入了解了一下。 ...

  • iOS动态修改App Icon

    在开发过程中,我们有时候会遇到根据用户需求对项目进行更改icon的需求。具体要如何实现呢?在 iOS 10.3 之...

  • iOS 动态修改app 图标

    动态修改app的图标,就是在不重新安装app的情况下,可以修改当前的icon图标;在某些情况下,是有这个需求的;例...

  • flutter资源文件相关

    修改app名字-iOS:打开Xcode项目,修改即可 修改app名字-android:image.png app ...

  • [iOS]动态修改app 图标(icon)

    动态修改app的图标,就是在不重新安装app的情况下,可以修改当前的icon图标;在某些情况下,是有这个需求的;例...

  • iOS 动态修改App的应用图标

    一、前言: 该功能应该是iOS10以后出的,相对于热度比较高的应用来说,根据业务需要,比如淘宝,双11需要动态修改...

网友评论

    本文标题:动态修改iOS app的环境变量(Jenkins+Cocoapo

    本文链接:https://www.haomeiwen.com/subject/bsniottx.html