操作步骤
静态库一般是Fat library, 先查看静态库都包含哪些CPU架构。
1 | >> lipo -info libSGTTSLib.a |
模拟机是x86_64、真机现在用的是arm64和armv7
先拆分出每个架构对应的lib,以arm64为例:
项目中有时会碰到与block有关的疑难问题,要解决的话对block的原理需要有一个较清晰的认识。虽然网上介绍很多,不过还是自己尝试分析一次记忆更深刻一些。
__NSMallocBlock__
或者 __NSStackBlock__
,如果 block 被赋值给了某个变量在这个过程中会执行 _Block_copy
将原有的 __NSStackBlock__
变成 __NSMallocBlock__
;但是如果 block 没有被赋值给某个变量,那它的类型就是 __NSStackBlock__
;没有捕获外部变量的 block 的类会是 __NSGlobalBlock__
即不在堆上,也不在栈上,它类似 C 语言函数一样会在代码段中。__NSStackBlock__
,放置在栈上,没有捕获外部变量的 block 时与 ARC 环境下情况相同项目中的测试包以及发布包的构建是通过Jenkins来进行的,使用的是自由风格的任务,但主要的构建任务是写在一系列的python脚本里的。比如一个Release的构建任务,基本就是设置好git的仓库地址,账号密码,然后在构建的一栏里选择执行shell
, 然后填上一句类似python /.../build.py -type adhoc
这样的语句就行。其中build.py是从项目初期的一些自动化构建脚本整合而来的,涉及的内容包括增加build号
, 构建ipa
, 上传测试包
, 上传符号
, 发邮件
等一系列操作。
这种方式虽然使用起来很简单,但是也逐渐暴露出一些弊病,比如
所以基于上面的问题,就对构建方式进行了改造,同时熟悉了一次Jenkins的pipe机制