自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(260)
  • 收藏
  • 关注

原创 Jenkins CI/CD 持续集成专题十三、[jenkins]iOS 自动打包上传 Appstore和fir

了解 Jenkins运行逻辑jenkins 和 gitlab 结合管理项目;在 Jenkins 中创建的流水线项目 ios-project, 可以关联我们的 iOS 项目的 gitlab 地址;执行构建后,可以在 ~/.jenkins/workspace/ios-project中看到自己的 iOS 开发工程项目;可以创建一个存放各种脚本的 gitlab 项目 ios-build-fir;

2026-03-29 16:25:57 107

原创 Jenkins CI/CD 持续集成专题十二、iOS-Jenkins自动化打包集成

自动化打包根本目的是为了节约时间,把重复且无技术含量的事情交给机器去做。Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作。

2026-03-29 11:26:12 486

原创 Jenkins CI/CD 持续集成专题十一、jenkins打包ios脚本证书

其中,`YourProject`是你的项目名称,`YourScheme`是你的scheme名称,`com.your.bundle.identifier`是你的应用的bundle identifier,`cert.p12`是你的证书文件,`password`是你的密码。在iOS开发中,为了将应用程序部署到iOS设备上,需要使用开发者证书和配置文件。保存并立即构建项目。Jenkins将执行脚本,并使用配置文件和证书打包你的iOS应用程序。创建一个新的Jenkins项目,选择“构建一个自由风格的软件项目”。

2026-03-29 10:56:04 401

原创 Jenkins CI/CD 持续集成专题十-jenkins 可以通过api 打ios包

通过以上步骤,你已经学会了如何配置 Jenkins 以便通过 API 打包 iOS 应用。只需遵循这些步骤并使用相应的代码示例,你就可以轻松实现 iOS 应用的自动化构建。持续集成和自动化部署将大大提高你的开发效率,为你的团队带来更高效的工作方式。本文将教你如何通过 Jenkins 的 API 打包 iOS 应用。这些插件将帮助你管理代码版本,打包 iOS 应用,以及通过 API 请求与 Jenkins 交互。在你的实现过程中,可以通过以下图示理解状态与类之间的关系。3 创建 iOS 打包脚本。

2026-03-29 10:48:04 390

原创 Jenkins CI/CD 持续集成专题九 -Mac服务器上配置Jenkins实现iOS项目自动打包

Embedded Profile:填写描述文件路径,如 /Users/xieqiang/shanlincaifu/cer/Shanlincaifu_Development.mobileprovision。SYMROOT:设置编译输出目录,如 /Users/xieqiang/.jenkins/jobs/Shanlincaifu/workspace/build。Output directory:设置ipa输出目录,如 /Users/xieqiang/build_output/完成上述配置后,即可执行构建。

2026-03-29 10:34:01 485

原创 Jenkins CI/CD 持续集成专题八- jenkins 之 iOS 打包及上传至蒲公英

将 ipa 包上传到蒲公英 # 蒲公英上的 User key uKey="xxx" # 蒲公英上的 API key apiKey="xxx" # 要上传的 ipa文件路径 IPA_PATH="exportipapath/ipa_name.ipa" -F "uKey=uKey"−F"apikey=2. 源码管理,使用 账号 和 密码拉取代码(有可能会提示无法获取,你可以重启 jenkins 试试,如果还不行,重启电脑,如果还不行,自行解决)H/5 * * * *(每五分钟检查一次)

2026-03-29 10:16:15 549

原创 Jenkins CI/CD 持续集成专题七 -使用Jenkins配置iOS自动化构建工具

上面脚本中,xcodebuild -archivePath 命令用来编译项目,如果你的项目没有使用workspace,需要将命令中的workspace修改成project,configuration参数用来配置编辑的方式,Release为发布环境。这一步出错的可能性极大,首先你的电脑可以使用pod不代表jenkins用户有使用pod的权限,最好使用jenkins用户登录电脑,进行pod的更新升级,或者直接使用jenkins用户登录,找到我们的项目,手动使用pod进行第三方的安装。

2026-03-29 10:13:33 452

原创 Jenkins CI/CD 持续集成专题六 - Jenkins基础教程(79)Jenkins用Gradle 构建项目:Jenkins与Gradle的完美的配合

在软件开发的世界里,重复性工作就像狗皮膏药一样甩也甩不掉。每次代码更新后,我们都要手动编译、测试、打包,这不仅浪费时间,还容易出错。难道我们就要这样一直做构建的奴隶吗?当然不!于是持续集成(CI)的概念应运而生,而Jenkins和Gradle的结合,则成为了解放开发人员的利器。Jenkins作为一个开源的自动化服务器,可以替代我们执行那些重复性的构建任务。而Gradle则是一个强大的构建工具,以其灵活性和性能著称,特别适合Java、Android等项目。当Jenkins遇上Gradle,就像是。

2026-03-28 17:28:19 387

原创 Jenkins CI/CD 持续集成专题五 Jenkins+Gradle 实现自动构建Android或IOS应用

例如,项目中测试人员每次需要测试新版本,都需要开发人员打包,放到FTP服务器上,测试人员然后从FTP服务器上拷贝到本地或手机上,再安装使用。随着业务需求的演进,工程的复杂度会逐渐增加,自动化的践行日益强烈。工程的自动化能有效提高生产效率,最大化减少人为出错的概率,实现一些复杂的业务需求应变。对于类似的项目,可以选择 -> 复制已有的 Item,要复制的任务名称里输入其他job的首字符会有智能提示。这是android的apk上传过程,相应的,ios是上传ipa,方法是一样的,不再赘述。

2026-03-28 11:28:01 391

原创 swift-最新面试题二

函数是一种合并两个序列的函数,它接受两个序列作为输入,并将它们的元素一一对应地组合成元组,然后返回一个包含这些元组的序列。3114. 替换字符可以得到的最晚时间,这个题的一个题解就可以使用zip函数和高阶函数allSatisfy来实现,代码里面有两种写法其实都是一样的,注释掉的那种是隐藏了参数类型。这样,如果序列中的所有元素都满足这个条件,即如果输入字符串中的每个字符要么是问号,要么与对应的时间字符串中的字符相等,那么。函数用于对集合中的每个元素应用一个指定的转换闭包,然后返回一个包含转换结果的新集合。

2026-03-11 15:31:45 336

原创 swift- Swift中常见的面试题

static 可以在类、结构体、或者枚举中使用。而 class 只能在类中使用。static 可以修饰存储属性,static 修饰的存储属性称为静态变量(常量)。而 class 不能修饰存储属性。static 修饰的计算属性不能被重写。而 class 修饰的可以被重写。static 修饰的静态方法不能被重写。而 class 修饰的类方法可以被重写。class 修饰的计算属性被重写时,可以使用 static 让其变为静态属性。

2026-03-11 15:28:22 607

原创 算法-链表-二、成对交换两个节点

成对交换链表节点的题目要求将链表中每两个相邻节点交换位置。如果链表长度是奇数,最后一个节点保持不变。

2026-03-09 10:42:13 48

原创 算法-链表-一、反转链表

反转链表是常见的算法题目,基本的思路是通过修改链表中的指针方向来实现反转。以下是一个基本的解法,假设链表是由节点构成的,每个节点有两个部分:值val和指向下一个节点的指针next。

2026-03-09 10:32:35 44

原创 AI-大模型-MCP实战指南

访问数据库、执行代码等。的意图、协同完成任务、与用户。、访问数据库、执行代码等。的意图、协同完成任务、与用户。

2026-01-10 20:41:10 472

原创 AI- 一种快速实现MCP服务的方法

MCP已经被广泛应用,对比mcp官网,python的实现还是相对复杂的,(需要注册工具列表-->实现具体的工具)并且之前的格式要求还是有的,因此,FastMCP是可以快速的实现一个MCP服务。

2026-01-10 20:07:54 725

原创 RxSwift-事件属性

类型推荐用途是否持值是否 replay注意事项纯事件流(点击、导航、通知)❌❌不 replay,注意订阅时机状态保存与同步(如 ViewModel 状态)✅✅(1个)必须提供初始值保留历史(聊天、日志)✅✅(N个)注意内存泄漏风险只关注最终值(如结果)✅✅(最后一个)需手动Observable一切响应式的基础,建议统一转成它✅❌(除非操作符指定)默认不 replay,需合理组合类型/方法名是否 replayreplay 的值数量说明❌ 否0不保存历史✅ 是。

2025-07-20 23:17:13 629

原创 swift-关联性/范型

/ 假设 input 是图片路径// 假设 input 是视频路径actor这个 actor 内部持有一个具体的processor,并通过方法调用其处理逻辑,是线程安全的。

2025-07-20 20:20:23 315

原创 Cursor 接入mcp-(mcp就是大模型连接世界的标准、桥梁)

首先Agent 与 Tools(工具)的交互:Agent 需要调用外部工具和API、访问数据库、执行代码等。

2025-07-04 22:45:51 1405

原创 swift-19-从OC到Swift、函数式编程

extension。

2025-06-29 19:38:05 467

原创 swift-22-面向协议编程、响应式编程

一、

2025-06-29 16:38:23 270

原创 swift-21-面向协议编程、响应式编程

支持 nsstring 和string nsmutablestring。改造,这部分都是公共的东西,通过协议来改造。判断某个类型是否是素组类型。通过协议改造通用流程。

2025-06-24 09:23:23 333

原创 swift-20- 函数式编程、面向协议编程

函数式编程( Funtional Programming ,简称FP)是一种编程范式,也就是如何编写程序的方法论。函数式编程最早出现在LISP语言,绝大部分的现代编程语言也对函数式编程做了不同程度的支持,比如。函数与其他数据类型一样的地位,可以赋值给其他变量,也可以作为函数参数、函数返回值。接受一个或多个函数作为输入( map、 filter、 reduce等)将一个接受多参数的函数变换为一系列只接受单个参数的函数。柯里化封装,随便一个函数传入疯转柯里函数进行柯里化。函数式编程中几个常用的概念。

2025-06-22 19:17:11 374

原创 swift-17-字面量协议、模式匹配、条件编译

print("以j开头,以k结尾") default: break} // 以j开头,以k结尾= 0 }print("偶数") case isOdd:print("奇数") default:print("其他") }

2025-06-22 12:28:45 516

原创 swift-16-内存访问冲突、指针

如果下面的条件可以满足 ,就说明重叠访问结构体的属性是安全的。结构体要么没有被闭包捕获要么只被非逃逸闭包捕获。你只访问实例存储属性,不是计算属性或者类属性。结构体是局部变量而非全局变量。使用列子 :mems 的封装。

2025-06-21 22:11:47 229

原创 swift-15-访问控制、内存管理

le。

2025-06-21 18:01:41 767

原创 swift-14-可选项的本质、运算符重载、扩展( Extension )

【代码】swift-14-可选项的本质、运算符重载、扩展。

2025-06-20 22:55:30 345

原创 swift-协程

一、协程(Coroutine)是一种轻量级线程,允许程序在执行过程中主动挂起(yield)和恢复(resume),通过协作式调度实现并发。与传统线程相比,协程的上下文切换成本更低,适合高并发场景。二、Swift 的协程实现基于(Swift 5.5+),不是传统意义上的协程,而是通过编译器生成的和实现的异步编程范式;它提供了一种结构化的方式来编写异步代码,使其看起来更像同步代码,同时保持了异步执行的性能优势。

2025-06-18 21:20:32 642

原创 RxSwift

RxSwift是Swift函数响应式编程的一个开源库,由Github的ReactiveX组织开发、维护RxSwift的目的是:让数据/事件流 和 异步任务能够更方便的序列化处理,能够使用Swift进行响应式编程RxSwift本质上还是观察者模式,并且是一个响应式的,并且可以序列化的。

2025-05-05 12:53:10 732

原创 flutter 专题 六十四 在原生项目中集成Flutter

使用Flutter从零开始开发App是一件轻松惬意的事情,但对于一些成熟的产品来说,完全摒弃原有App的历史沉淀,全面转向Flutter是不现实的。因此使用Flutter去统一Android、iOS技术栈,把它作为已有原生App的扩展能力,通过有序推进来提升移动终端的开发效率。目前,想要在已有的原生App里嵌入一些Flutter页面主要有两种方案。一种是将原生工程作为Flutter工程的子工程,由Flutter进行统一管理,这种模式称为统一管理模式。

2025-04-30 11:34:17 2179 1

原创 flutter 专题 九十九 移动跨平台框架Flutter介绍和学习线路

Flutter是一款移动应用程序SDK,一份代码可以同时生成iOS和Android两个高性能、高保真的应用程序。Flutter目标是使开发人员能够交付在不同平台上都感觉自然流畅的高性能应用程序。我们兼容滚动行为、排版、图标等方面的差异。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。

2025-04-30 11:33:34 1097

原创 flutter 专题 五十九 Flutter 1.22 正式版发布

继 9 月 23 号发布 Flutter Windows 内测版 之后刚过几天,Flutter 官方在昨夜凌晨正式发布了 Flutter 1.22。本次版本的升级又带来了新一轮的功能发布,性能改进和问题修复。恰逢移动平台新版本(iOS 14/Android 11)的发布季,此次的版本更新保证了 Flutter 应用在 Android 11 和 iOS 14 上的兼容性,面向 iOS 14,本次更新包括了对 Xcode 12,新 Icon 的更新以及 App Clips 功能的预览。

2025-04-30 11:33:15 1233

原创 flutter 专题 一百零四 Flutter环境搭建

Flutter 是Google开发的一个移动跨平台(Android 和 iOS)的开发框架,使用的是 Dart 语言。和 React Native 不同的是,Flutter 框架并不是一个严格意义上的原生应用开发框架。Flutter 的目标是用来创建高性能、高稳定性、高帧率、低延迟的 Android 和 iOS 应用。并且开发出来的应用在不同的平台用起来跟原生应用具有一样的体验。

2025-04-30 11:32:41 1143

原创 flutter 专题 五十七 使用Jenkins搭建Flutter自动化打包

构建环境模块需要安装一个NodeJS插件,此时先点击保存按钮保存配置好的参数,然后点击左上角的Jenkins,找到系统管理,点击管理插件,点击可选插件,在过滤条中输入"NodeJS",查找到NodeJS Plugin插件,直接安装此插件。安装完成后回到系统管理,点击Global Tool Configuration工具,找到NodeJS选项配置插件,自定义别名,安装目录填写“/usr/local”,点击左下角保存按钮。源码管理模块,配置的是SVN的地址及账号,如果使用的是Git,选择Git即可。

2025-04-30 11:32:20 993

原创 flutter 专题 五十八 关于Flutter提示Your Xcode project requires migration的错误

2,然后,在【 Runner target build settings Build Phases 】>【Link Binary With Libraries】和【Link Binary With Libraries】 > 【Link Binary With Libraries】中确认是否删除,如下图所示。1,首先,使用Xcode打开项目(ios/Runner.xcworkspace ),在Flutter文件下删除App.framework 和 Flutter.framework的引用,如下图所示。

2025-04-30 11:32:08 722

原创 flutter 专题 六十一 支持上拉加载更多的自定义横向滑动表格

不过,这个组件有一个问题是不支持下拉,因为很多场景中,对于这种数据比较多的情况,我们需要对数据进行分页加载,给予此,我们需要对flutter_horizontal_data_table进行改造,增加支持上拉加载更多和下拉刷新的功能。于是,改造后的代码如下所示。来实现,不过,我试了下,效果并不好,至于为什么,大家可以自己试一下。基于这个原理,我们可以在列表滚动到列表底部之前,请求下一页的数据,即我们可以进行如下的判断。,看了下示例,也满足我的开发需要,并且我使用2000条数据进行测试,也没有卡顿的问题。

2025-04-30 11:31:52 858

原创 flutter 专题 五十六 Google 2020开发者大会Flutter专题

在早期的hybird开发模式中,前端和Native交互时需要native双端为JS提供接口。这种情况下如何规范命名,参数等就成了一个问题,如果单独维护一份协议文件,三端依照协议文件进行开发,很容易出现协议更改后,没有及时同步,又或者在实际开发过程没有按照规范,可能导致各种意外情况。

2025-04-30 11:31:35 1147

原创 flutter 专题 一百零五 Flutter开发之Http网络请求

Http网络请求是一门开发语言里比较常用和重要的功能,主要用于资源访问、接口数据请求和提交、上传下载文件等等操作,Http请求方式主要有:GET、POST、HEAD、PUT、DELETE、TRACE、CONNECT、OPTIONS。本文主要GET和POST这两种常用请求在Flutter中的用法,其中对POST将进行着重讲解。Flutter的Http网络请求的实现主要分为三种:io.dart里的HttpClient、Dart原生http请求和第三方库实现。

2025-04-21 23:23:48 1623

原创 flutter 专题 六十 Flutter事件分发流程简析

不管是原生Android、iOS还是JavaScript,只要是涉及手势交互都会有事件的分发处理。和原生Android、iOS的事件分发的步骤和原理一样,Flutter的事件分发总体也由手势触发、拦截和响应等几个部分构成。Android事件分发。

2025-04-21 11:26:41 781

原创 flutter 专题 一百零二在Android原生项目中集成Flutter

flutter是google的跨平台开发框架, 他和react native及weex框架的最大差别是flutter不使用原生控件而使用gdi按帧渲染, 个人理解非常类似windows时代的DirectUI。本文将介绍如何在一个已有的安卓项目中添加flutter, 使得部分新功能采用flutter移植的基本思想是新建一个flutter功能 和安卓工程对比看看差异在哪里, 并从flutter工程复制一些代码到安卓工程操作过程目录结构一个android studio工程的目录结构是这样的。

2025-04-21 11:26:21 414

原创 flutter 专题 六十六 Flutter Dio包网络请求抓包解决方案

,使用得最多的就是Dio请求库。因为相比Http请求库和HttpClient请求库,Dio库不仅支持常见的网络请求,还支持Restful API、FormData、拦截器、请求取消、Cookie管理、文件上传/下载、超时等操作。不过,默认情况下,Dio进行网络请求时是不支持抓包的,所以如果要进行抓包,就需要对Dio进行请求封装,并编写代理代码。

2025-04-21 11:26:01 1291 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除