-
Xcode15和iOS17相关的问题解决
近期在做一些适配相关的工作,在适配过程中踩到了一些坑。这是一篇水文,主要是记录 iOS 17 和 Xcode 15 适配过程中遇到的一些问题和解决方法。1、Xcode 14 在 iOS 17 的真机上运行一般来说Xcode和iOS系统匹配才能运行,但是有些时候不想升级Xcode但是想要在高版本的iOS真机上面调试项目。首先从别人升级过Xcode的电脑上面拷贝 DeviceSupport 目录下对应版本的镜像文件过来就行了,目录如下:/Applications/Xcode.app/Conte...…
-
Jenkins Pipeline 插件自定义环境变量丢失问题
最近将一些构建任务由 Freestyle 迁移为 Pipeline 的实现 (主要是考虑后续可以通过任务模板的方式动态创建和维护),整体的实现过程较为简单,基本上就是把原来的执行步骤拆分成一个个的 Stage,将里面用到的一些配置抽取成环境变量的方式,统一设置到一起。最终的配置脚本如下(伪代码):node("mac01") { stage('Environment Setting') { env.ENV_BUILD_SCRIPT_URL = "http://127.0....…
-
macOS SSH 登录账号过期问题解决
近期对构建环境的几台 Mac Mini 做了一些“标准化”处理,处理完成后发现通过ssh访问输入密码无法正常连接了(按回车会立即提示连接结束)。通过查看控制台日志发现有如下的记录:错误信息:error: PAM: user account has expired for xxxx from 127.0.0.1各种查找资料没有找到能讲清楚这个问题原因的,经过一番测试发现一种解决办法:(1) 查看是否打开共享的远程登录 旧版的系统(<= macOS 12) 新版的系统(>= m...…
-
Docker配置JDK的Security Provider
最近将之前写的一个消息通知的服务支持通过Docker进行部署,以前一直都是通过命令行启动的。一般的流程就是编写Dockerfile文件编译镜像运行容器就大功告成了。Dockerfile配置如下:FROM openjdk:8VOLUME /tmp/dataADD app.jar app.jarENV JAVA_OPTS=""ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -ja...…
-
macOS iTerm2 环境配置
近今年开始在macOS上面不再使用自带的终端(Terminal.app),开始使用 iTerm2 替代。整个安装配置比较简单,记录一下个性化的配置的步骤(主要是配置主题和字体),免得再次配置的时候又需要到处去找。下载安装到官网下载最新的安装包,下载地址:https://iterm2.com/downloads.html点链接下载完成后直接拖 iTerm.app 文件到 /Applications 即可。主题配置主题使用的是 Snazzy,直接到 https://github.com/sin...…
-
iOS推送支持显示用户头像
从 iOS 15.0 开始新增了 Communication Notifications 的支持,可以让通知消息更加人性化。Communication Notifications 包含发送消息的联系人的头像,并且可以与 SiriKit 集成,以便 Siri 可以智能地根据常用联系人提供操作的快捷方式和建议。当前在 iOS 上很多Apple自带的应用或一些第三方应用(如钉钉、飞书、微博等)都使用了这个特性。代码实现整体的实现流程: (1) 在APNs的Payload里面开启mutable-...…
-
iOS动态切换APP图标
有些时候需要App能在一些特殊的日子更换桌面图标,或者是出于一些个性化的需求需要能让用户自己选择自己喜欢的图标(比如VIP用户可以显示会员专属的图标)。如“微博和百度云盘的VIP个性化设置就提供了切换图标相关的功能。技术实现从 iOS 10.3 开始系统提供了动态切换图标相关的实现,要求提前将支持切换的可选图标提前预埋到APP并添加相关的配置,然后根据业务需要在合适的时机进行切换即可。配置相关以百度云盘的配置为例:<key>CFBundleIcons</key>&l...…
-
Jenkins多节点同步CocoaPods索引
CocoaPods的索引库更新一直以来是一件很痛苦的事情,为了提升效率在项目中引入了镜像索引库的方案,将项目用到的第三方库的podspec配置自动抽取到一个镜像索引库里面。这个方案确实降低了大家在同步索引库的耗时,但是在构建环境下存在较多的问题。现在是要去多台 Macos 节点 需要定期同步 CocoaPods 的索引。同步索引库直接通过命令 ` pod repo update xxx ` 就能解决,如果要多个节点同步那么使用 Pipeline 的任务每个节点执行脚本就可以了,具体的代码如...…
-
搭建Flutter引擎源码调试环境
最近在排查问题的时候总会遇到一些和 Flutter 引擎相关的问题,需要直接能在Xcode里面挂在引擎的源码能进行断点Debug,这里记录一下搭建Flutter引擎源码调试环境过程:环境准备1、开发工具(1)下载depot_tools工具包depot_tools 是 chromium 使用的源码库管理工具,可以方便的管理源码以及对应依赖,通过gclinet可以获取所有的编译需要的源码和依赖git clone https://chromium.googlesource.com/chromiu...…
-
如何将自己的Node.js包发布到npm上面
早前写过一篇《使用Verdaccio搭建npm仓库》介绍如何搭建私有的npm包托管的环境的文章,比较适合将私有的Node.js包发布上去。本文主要记录一下发布一个公开的package到npm的过程。1、注册账号前往https://www.npmjs.com注册账号,并按照要求验证邮箱。2、Node.js包创建package.json文件,如下:{ "name": "gitlab-systemhook-handler", "version": "0.1.0", "description...…