iOS组件化:从零开始搭设私有库,2024年最新阿里社招p7面试几轮

公共的控件、工具类、基本框架的植入,以及对相关组件的分类管理主要体现在这里。

2、同步远程私有仓库

2.1、创建Git Hub远程仓库

如果是公司的项目,需要运维同事搭建一个Git Lab仓库并创建项目。这里用Gitee代替。在Gitee上创建一个ZMinLib的项目。地址:https://gitee.com/chenzm_186/ZMinLib.git

在这里插入图片描述

2.2、同步代码

2.2.1、代码提交到远程仓库


cd ZMinLib/

git init

git add .

git commit -m "添加项目"

git remote add origin https://gitee.com/chenzm_186/ZMinLib.git

git push -u origin maste



2.2.2、Sourcetree提交

先用Sourcetree把远程库同步到本地,将项目copy到本地仓库,使用Sourcetree提交代码

不管黑猫白猫,能抓得到老鼠的都是好猫。两个方法都能实现,看个人习惯。

3、添加组件并同步远程仓库

3.1、添加组件

导入组件,做好配置关系后,提交代码跟平时一样提交代码到远程仓库就可以。这里的核心是在xxx.podspec文件中配置好依赖关系,详细的见上面的配置文件说明。点击这里有实例可以参考,不再做详述。

3.2、添加Tag

每一个版本我们需要添加一个Tag,如下图

在这里插入图片描述

Sourcetree界面上找不到打标签位置的,可以使用快捷键【command+shift+T】展示,也可以在顶部菜单栏【仓库】中找到:

在这里插入图片描述

3.3、校验配置文件是否填写正确

# 验证本地podspec文件

pod lib lint --allow-warnings

# 校验远程podspec文件

pod spec lint --allow-warnings



其中–allow-warnings参数代表忽略警告,如果你的代码在编译时有警告,如果不加这个参数就会报错。结果如下:


chenzimin@rattanchen ZMinLib % pod spec lint --allow-warnings

 -> ZMinLib (0.1.0)

    - WARN  | summary: The summary is not meaningful.

    - NOTE  | xcodebuild:  note: Using new build system

    - NOTE  | xcodebuild:  note: Building targets in parallel

    - NOTE  | [iOS] xcodebuild:  note: Planning build

    - NOTE  | [iOS] xcodebuild:  note: Constructing build description

    - NOTE  | [iOS] xcodebuild:  warning: Skipping code signing because the target does not have an Info.plist file and one is not being generated automatically. (in target 'App' from project 'App')

    - NOTE  | [iOS] xcodebuild:  note: Execution policy exception registration failed and was skipped: Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted" (in target 'ZMinLib' from project 'Pods')

    - NOTE  | [iOS] xcodebuild:  note: Execution policy exception registration failed and was skipped: Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted" (in target 'Pods-App' from project 'Pods')

    - NOTE  | [iOS] xcodebuild:  note: Execution policy exception registration failed and was skipped: Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted" (in target 'App' from project 'App')

Analyzed 1 podspec.

ZMinLib.podspec passed validation.



  • 这里如果有error 就得先解决error。

  • 注意:如果校验配置文件出现提示tag版本没有或者不对的话,可能是只设置了本地tag而没有推送到远程成库,先执行3.3步骤。还有其他原因,如source、source_files等路径配置错误。

3.4、发布版本

# 创建本地索引

pod repo add ZMinLib https://gitee.com/chenzm_186/ZMinLib.git

# 进入本地索引库可以看到新建索引库

cd ~/.cocoapods/repos/

open .

# 推送至索引库,执行这个操作之后,才会生成对应的索引文件

pod repo push ZMinLib ZMinLib.podspec --allow-warnings

或

pod repo push ZMinLib ZMinLib.podspec --sources='https://gitee.com/chenzm_186/ZMinLib.git' --allow-warnings



执行这两步操作,操作结果如下:


chenzimin@rattanchen ZMinLib % pod repo add ZMinLib https://gitee.com/chenzm_186/ZMinLib.git

Cloning spec repo `ZMinLib` from `https://gitee.com/chenzm_186/ZMinLib.git`

chenzimin@rattanchen ZMinLib % pod repo push ZMinLib ZMinLib.podspec --allow-warnings

Validating spec

 -> ZMinLib (0.1.0)

    - WARN  | summary: The summary is not meaningful.

    - NOTE  | xcodebuild:  note: Using new build system

    - NOTE  | xcodebuild:  note: Building targets in parallel

    - NOTE  | [iOS] xcodebuild:  note: Planning build

    - NOTE  | [iOS] xcodebuild:  note: Constructing build description

    - NOTE  | [iOS] xcodebuild:  warning: Skipping code signing because the target does not have an Info.plist file and one is not being generated automatically. (in target 'App' from project 'App')

    - NOTE  | [iOS] xcodebuild:  note: Execution policy exception registration failed and was skipped: Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted" (in target 'ZMinLib' from project 'Pods')

    - NOTE  | [iOS] xcodebuild:  note: Execution policy exception registration failed and was skipped: Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted" (in target 'Pods-App' from project 'Pods')

    - NOTE  | [iOS] xcodebuild:  note: Execution policy exception registration failed and was skipped: Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted" (in target 'App' from project 'App')

Updating the `ZMinLib' repo

Adding the spec to the `ZMinLib' repo

 - [Update] ZMinLib (0.1.0)

Pushing the `ZMinLib' repo



生成对应的索引文件后,执行


# 验证

pod search ZMinLib



执行验证,如结果如下,则说明成功了:


-> ZMinLib (0.2.0)

   简述说明ZMinLib:例子

   pod 'ZMinLib', '~> 0.2.0'

   - Homepage: https://mp.csdn.net/console/home

   - Source:   https://gitee.com/chenzm_186/ZMinLib.git

   - Versions: 0.2.0, 0.1.9 [ZMinLib repo]

   - Subspecs:

     - ZMinLib/WCDB (0.2.0)

     - ZMinLib/ZipArchive (0.2.0)

     - ZMinLib/All (0.2.0)



4、迭代更新

组件的迭代更新,同项目代码更新一致。

5、命令行说明

5.1、pod repo add

pod repo add 库名称 库地址



是将原创仓库添加到本地,执行下面命令:


cd ~/.cocoapods/repos/

open .



就能看到Cocopods的所有本地仓库列表了,例子的库是ZMinLib。我们也可以浏览一下其它的目录,就能找到很多后缀为podspec的文件。

【pod install】命令就是根据要安装的库的名字在这些目录中遍历,找到对应的配置文件后,解析里面的地址和配置进行下载。

【pod update】命令是从远程库,把这些配置文件下载到本地的这个目录中,再install。

5.2、pod repo push

pod repo push 库名 库配置文件(后缀为podspec) --allow-warnings



这个命令就是发布版本的命令,将版本push到远程,我们在~/.cocoapods/repos/ZMinLib/ZMinLib /目录中,可以找到对应版本号的目录,目录里面就是配置文件(后缀为podspec)。

【pod install】时指定版本或最新版本时,就是根据版本号找到对应的配置文件的。

5.3、命令行总结

# 创建空目录并进入目录位置

mkdir Module

cd Module

# 新建脚手架

pod lib create ZMinLib

# 验证本地podspec文件

pod lib lint --allow-warnings

# 校验远程podspec文件

pod spec lint --allow-warnings

# 创建本地索引

pod repo add ZMinLib https://gitee.com/chenzm_186/ZMinLib.git

# 进入本地索引库可以看到新建索引库

cd ~/.cocoapods/repos/

open .

# 推送至索引库,执行这个操作之后,才会生成对应的索引文件



**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

**因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**
![img](https://img-blog.csdnimg.cn/img_convert/300f5127e43deff7dfa4b1c0d1065183.png)
![img](https://img-blog.csdnimg.cn/img_convert/ad20114ca8a85b0b61b7b8cde1ac890b.png)
![img](https://img-blog.csdnimg.cn/img_convert/7fc58cae3b8a33fe9fa8a8d3dd3c190a.png)
![img](https://img-blog.csdnimg.cn/img_convert/2adf3bd0d71dbcf0e508018474c21265.png)
![img](https://img-blog.csdnimg.cn/img_convert/08750310833475f2258a1f25d2c99660.png)
![img](https://img-blog.csdnimg.cn/img_convert/859146fb47d7a1a16673a0c818f198c9.png)
![img](https://img-blog.csdnimg.cn/13f2cb2e05a14868a3f0fd6ac81d625c.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!**

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)**
![img](https://img-blog.csdnimg.cn/img_convert/e2ab7140db1442de2e6c1cd2eb8545b3.png)



### 尾声

最后,我再重复一次,如果你想成为一个优秀的 Android 开发人员,请集中精力,对基础和重要的事情做深度研究。

对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。 整理的这些架构技术希望对Android开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。

这里,笔者分享一份从架构哲学的层面来剖析的视频及资料分享给大家梳理了多年的架构经验,筹备近6个月最新录制的,相信这份视频能给你带来不一样的启发、收获。

![](https://img-blog.csdnimg.cn/img_convert/a079b7953abcb48b896fe28a4aab7219.webp?x-oss-process=image/format,png)

##### Android进阶学习资料库

一共十个专题,包括了Android进阶所有学习资料,Android进阶视频,Flutter,java基础,kotlin,NDK模块,计算机网络,数据结构与算法,微信小程序,面试题解析,framework源码!
![](https://img-blog.csdnimg.cn/img_convert/4f5311836e37a1b6d3eb4e473ff142de.webp?x-oss-process=image/format,png)

##### 




**一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
![img](https://img-blog.csdnimg.cn/img_convert/7624238982583e151857661092d69ce2.png)
年的架构经验,筹备近6个月最新录制的,相信这份视频能给你带来不一样的启发、收获。

[外链图片转存中...(img-APgtpmfi-1712639290741)]

##### Android进阶学习资料库

一共十个专题,包括了Android进阶所有学习资料,Android进阶视频,Flutter,java基础,kotlin,NDK模块,计算机网络,数据结构与算法,微信小程序,面试题解析,framework源码!
[外链图片转存中...(img-VS7gLX0B-1712639290741)]

##### 




**一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
[外链图片转存中...(img-2epCfOsn-1712639290742)]
  • 23
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值