iOS小知识:第三方库管理规范

举报
iOS逆向 发表于 2021/10/24 10:00:57 2021/10/24
【摘要】 为了能更好的协作管理项目,今天分享下第三方库管理规范,以Cocoapods为案例。 1. 给Podfile指定版本号(可通过Podfile.lock查看项目使用的第三方库基本信息)。 2. 项目的readme文件说明pod update 之后需要修改的内容,比如有些库没有适配最新系统,是需要修改。 3. 如果第三方库由于特殊原因,例如无法拉取的,或者不维护了的,可放到本地目录,作为本地库。

引言

为了能更好的协作管理项目,今天分享下第三方库管理规范,以Cocoapods为案例。

  1. 给Podfile指定版本号(可通过Podfile.lock查看项目使用的第三方库基本信息)。
  2. 项目的readme文件说明pod update之后需要修改的内容,比如有些库没有适配最新系统,是需要修改。
  3. 如果第三方库由于特殊原因,例如无法拉取的,或者不维护了的,可放到本地目录,作为本地库。

I、第三方库管理规范

1.1 修改.gitignore 将Pods目录忽略

将Pods目录忽略的原因很多,这里就简单举例几个

  1. mac 的pod版本不一样导致拉下来的代码pod报路径问题
  2. 减少仓库大小
  3. 由于SDK的静态库文件libGDTMobSDK.a>110M, 提交到git 仓库时可能由于文件大小的限制导致提交失败,所以推荐使用.gitignore 将Pods目录忽略。其他同事拉取代码之后,可采用pod install --verbose --no-repo-update只安装新添加的库,已更新的库忽略。或者更新指定的库,其它库忽略 pod update 库名 --verbose --no-repo-update
 Pods/

.gitignore只能忽略那些原来没有被追踪的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先把本地缓存删除(改变成未被追踪状态),然后再提交,这样就不会出现忽略的文件了。

git清除本地缓存命令git rm -r --cached .

git init
git rm -r --cached .
git add .
git commit -m "first commit"
git remote add origin $1
git push -u origin main

git merge 代码分支管理教程

https://kunnan.blog.csdn.net/article/details/112610462

1.2 给Podfile指定版本号

通过查看Podfile.lock,给Podfile指定版本号

II 打包注意事项

2.1 pod update之后需要修改的内容

QMUIKit

pod 'QMUIKit' ,'4.1.3'

QMUIKit在iOS14 下首次唤起键盘卡住主线程

解决方案:由于没使用QMUITheme,就直接注释掉以下代码即可。
搜索 #import "UITraitCollection+QMUI.h",在load进行return

@implementation UIWindow (QMUIUserInterfaceStyleWillChangeNotification)

#ifdef IOS13_SDK_ALLOWED
+ (void)load {
    
    return ;
}

https://kunnan.blog.csdn.net/article/details/108683061

解决方案:如果你没使用QMUITheme,就直接注释掉代码即可。

2.2 包含扩展项目的注意事项

  1. 扩展的version和build 和主app一样
  2. bundle ID 和主app的前缀一
  3. 扩展的签名证书和主app的签名证书保持一致,推荐采用自动管理

常见错误:
在这里插入图片描述

2.3 sign 的配置

推荐使用自动管理证书

  1. Profiles只针对真机调试,也就是开发包和Ad Hoc 。
  2. 直接上传appstoreconnect后台的包,

先编译的习惯很好。但是其实你上架只要先clean,直接archive,到时候选择自动管理证书就行了。

打生产包也可以自动管理证书,具体配置如下:

  1. 签名实体 code Signing Identity 不要选择钥匙串具体的证书, 选择iOS DIs 或者iOS Dev

在这里插入图片描述

  1. 证书描述文件 Provisioning Profile 选择 Automatic
  2. 签名证书 Code Signing Identity 选择 Automatic
  3. 开发团队 Development Team 选择你登陆的开发账号即可
 CODE_SIGN_IDENTITY = "iPhone Developer";
 CODE_SIGN_STYLE = Automatic;

iOS开发者后台添加了新的UDID,如何更新自动管理签名证书的设备描述文件(Provisioning Profiles)?

https://kunnan.blog.csdn.net/article/details/119114249

2.4 上线前使用TestFlight测试,来确保发布的包是经过测试的。

如果开发和上线打包不同人操作的,那么TestFlighty的使用成为测试的同事的必备技能。

  1. iOS开发者账号管理员新建群组

在这里插入图片描述

  1. iOS开发者账号管理员添加测试员

选择最多 100 名测试员,系统将邀请他们在 TestFlight App 中测试所有可用的构建版本。在添加新构建版本时,他们也会收到通知。如果没有看到您想添加的测试员,请前往用户和职能进行添加。
在这里插入图片描述

  1. 测试员登陆邮箱获取邀请码

https://www.icloud.com/mail/
3.1 Get TestFlight from the App Store.
3.2 Open TestFlight and choose Redeem.
3.3 Enter code and start testing.
在这里插入图片描述

III、将第三方库作为本地库集成到项目的例子

3.1 富文本库

将ChainAttributedString转为本地库,对本库感兴趣可关注公众号:iOS逆向
在这里插入图片描述

copy 一份ChainAttributedString代码到本地,在Podfile注释ChainAttributedString,执行pod install --verbose --no-repo-update

#pod 'ChainAttributedString' #转为本地库

头文件引用的修改

//#import <ChainAttributedString/NSMutableAttributedString+Chain.h>

#import "NSMutableAttributedString+Chain.h"

3.2 轻量级图表库

Only Line

pod 'ORCharts/Line' 
# 修改了内部的_or_initailizeUI方法: 请使用knpod 进行更新:
#pod update JPush --verbose  --repo-update

IV 相关辅助脚本

4.1 pod 辅助脚本

➜  Housekeeper git:(develop)cat ~/bin/knpod
#!/bin/sh

#该命令只安装新添加的库,已更新的库忽略

pod install --verbose --no-repo-update
#该命令只更新指定的库,其它库忽略
#pod update 库名 --verbose --no-repo-update

exit 0%                                                                                                                           ➜  Housekeeper git:(develop)

4.2 git 辅助脚本

➜   git:(master) cat ~/bin/kngit
#!/bin/sh
git pull
git status
git add .
# $1 和“$1” 的区别,在于,$1 返回的是一个char数组,“$1” 返回的是一个字符串
git commit -m "$1"
git push
exit 0%                                                                                                                           ➜   git:(master) cat ~/bin/kngitinit
#!/bin/sh
# dirname $0,取得当前执行的脚本文件的父目录
# cd `dirname $0`,进入这个目录(切换当前工作目录)

# cd `dirname $0` 
#alias gitadd='cd `dirname $0` && git add . && git commit -m /!* && git push'
#!/bin/bash
#
# NOTE: You need to `brew install git` on Mac
# 
# by @kunnan
# https://github.com/zhangkn/KNAlipayWalletTweakDemo
# 在存在的项目中,创建git 仓库,并上传到远程仓库地址
#
# usage: kngitinit  SSHURL git@github.com:zhangkn/KNAlipayWalletTweakDemo.git


usage() {
  echo "在存在的项目中,创建git 仓库,并上传到远程仓库地址"
  echo
  echo "Usage: $0 {SSHURL}"
}

if [ ! -n "$1" ] ;then
  echo "Invalid url $1"
  usage
  exit 1
fi

# 清除旧有的仓库关系:取消本地目录下关联的远程库;常常用于copyxx项目的基础上,创建新项目的场景
git remote remove origin

# 变量赋值不要有空格
var=$1
##*/ 表示从左边开始删除最后(最右边)一个 / 号及左边的所有字符 即删除 git@github.com:zhangkn/ 结果是 KNAlipayWalletTweakDemo.git
var=${var##*/}
#%/* 表示从右边开始,删除第一个 / 号及右边的字符
var=${var%.*}
echo "# [$var](https://kunnan.blog.csdn.net/)" >> README.md
#echo "# " >> README.md
git init
git rm -r --cached .
git add .
git commit -m "first commit"
git remote add origin $1
git push -u origin main
exit 0%                                                                                                                           ➜  Housekeeper git:(master) 

see also

更多内容请关注#小程序:iOS逆向,只为你呈现有价值的信息,专注于移动端技术研究领域。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200