1、命令创建pod

pod lib create pod的名字

2、根据指令依次填写信息

3、填写完成后会自动打开项目 、然后修改podspec文件即可

4、创建当前pod的git 仓库、将当前代码放入仓库 并打上和spec中version 对应的tag

git remote add origin 仓库地址
git add .
git commit -m "install commit"
git push -u origin master
git tag 0.1.0
git push --tags

4、创建一个pod 索引的git仓库

将索引仓库添加到本地

pod repo add demoSpecs git地址

4、检测一下当前编写的sepc 并提交到索引库

pod lib lint 本地检测
pod spec lint 远端检测
pod repo push demoSpecs testPod.podspec

5、远端索引库里面已经有了当前的0.1.0的 testPod了 然后在项目中使用编写 podfile

source  'https://github.com/CocoaPods/Specs.git'
source 索引库地址
use_frameworks! platform :ios, '9.0' target 'testPod_Example' do
pod 'testPod' end

5、如果pod中使用了到了自己的私有库 校验的时候 需要加上校验sources路径 多个私有库 , 隔开就好

pod spec lint testPod.podspec  --use-libraries --allow-warnings --sources='私有库地址.git','https://github.com/CocoaPods/Specs.git'

6、如果pod仓库是oc、Swift混编

需要创建一个public_header的oc文件 在里面添加项目需要共同访问的头文件 这和项目的桥接文件功能一样 然后podspec中设置公开文件为当前文件   ** ** 注意桥接文件一定要是oc并且是继承于NSObject

7、pod项目中如果要使用其他的pod文件 但当前pod又没对其添加依赖 值需要配置 FRAMEWORK_SEARCH_PATHS 例如 pod中想使用 MBProgressHUD

  search_paths = [
#Podfile使用指定路径链接
'${PODS_CONFIGURATION_BUILD_DIR}/podChatLibrary',
'${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD'
]
s.pod_target_xcconfig = {
'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES',
'FRAMEWORK_SEARCH_PATHS' => search_paths,
}

8、pod中如果要使用.xcassets

podspec中添加    s.resource_bundle = { 'test' => ['testPod/Assets/**.xcassets'] }

代码里面获取图片如下

func getImage(_ imageName: String) -> UIImage? {
// test 为pod 中resourcebundle中设置的名字
let imageBundleURL = Bundle.main.url(forResource: "test", withExtension: "bundle")
let imgBundle = Bundle(url: imageBundleURL!)
let img = UIImage(named: imageName, in: imgBundle, compatibleWith: nil)
return img
}

9、依赖其他库如果 执行报错

The ‘Pods-XXX‘ target has transitive dependencies that include statically linked binaries:
(/Users/XXXX/XXXX/XXXX/XXXX.framework)

在podfile最后加入下面的代码

pre_install do |installer|
# workaround for https://github.com/CocoaPods/CocoaPods/issues/3289
Pod::Installer::Xcode::TargetValidator.send(:define_method, :verify_no_static_framework_transitive_dependencies) {}
end

demo地址https://github.com/1401788197/Modularization

iOS组件化 pod命令创建私有库详解【引用其他私有库、oc、Swift混编】的更多相关文章

  1. VMware 虚拟化编程(6) — VixDiskLib 虚拟磁盘库详解之二

    目录 目录 前文列表 VixDiskLib 虚拟磁盘库 VixDiskLib_Open 打开 VMDK File VixDiskLib_Read 读取 VMDK File 数据 VixDiskLib_ ...

  2. 使用CocoaPods创建自己的私有库-iOS组件化第一步

    目前iOS组件化常用的解决方案是Pod+路由+持续集成,通常架构设计完成后第一步就是将原来工程里的模块按照架构图分解为一个个独立的pod工程(组件),今天我们就来看看如何创建一个Pod私有库. 新建: ...

  3. iOS 组件化路由框架 WisdomRouterKit 的应用

    [前言] 大家好,写作是为了和读者沟通交流,欢迎各位开发者一起了解 WisdomRouterKit SDK 的功能. 关于 iOS 组件化路由方案框架: WisdomRouterKit 的功能介绍,之 ...

  4. iOS组件化实现方案

    作者原文iOS组件化 - 路由架构从0到1实战  合伙呀 1.CTMediator作为路由中间件 2.基础UI组件以pod形式引入,并且能够独立运行调试 3.基础工具组件以pod形式引入,并且能够独立 ...

  5. iOS 组件化

    iOS 组件化介绍 随着应用需求逐步迭代,应用的代码体积将会越来越大,为了更好的管理应用工程,我们开始借助CocoaPods版本管理工具对原有应用工程进行拆分.但是仅仅完成代码拆分还不足以解决业务之间 ...

  6. linux useradd(adduser)命令参数及用法详解(linux创建新用户命令)

    linux useradd(adduser)命令参数及用法详解(linux创建新用户命令) useradd可用来建立用户帐号.帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号 ...

  7. appledoc导出iOS代码文档的使用和问题详解(干货篇)

    appledoc导出iOS代码文档的使用和问题详解(干货篇) 1. 简单说一下背景和自己感受 背景: 项目好像突然黄了,公司让详细写项目代码的注释并且导出文档,弄完之后就要封版. 说实话:听到这个消息 ...

  8. [转帖]持久化journalctl日志清空命令查看配置参数详解

    持久化journalctl日志清空命令查看配置参数详解 最近 linux上面部署服务 习惯使用systemd 进行处理 这样最大的好处能够 使用journalctl 进行查看日志信息. 今天清理了下 ...

  9. 最强常用开发库总结 - JSON库详解

    最强常用开发库总结 - JSON库详解 JSON应用非常广泛,对于Java常用的JSON库要完全掌握.@pdai JSON简介 JSON是什么 JSON 指的是 JavaScript 对象表示法(Ja ...

  10. 常用开发库 - MapStruct工具库详解

    常用开发库 - MapStruct工具库详解 MapStruct是一款非常实用Java工具,主要用于解决对象之间的拷贝问题,比如PO/DTO/VO/QueryParam之间的转换问题.区别于BeanU ...

随机推荐

  1. [C++标准模板库:自修教程与参考手册]关于auto_ptr

    什么是auto_ptr指针 auto_ptr是这样一种指针:它是"它所指的对象"的拥有者,所以,当身为对象拥有者的auto_ptr指针被摧毁时,该对象也会被摧毁,auto_ptr要 ...

  2. [cocos2d-x]捕鱼达人炮台射击角度的旋转实现

    话不多说,先上图,下面是实现代码(在后面会具体讲解实现过程): //第一步:将炮台的坐标转换为世界坐标下的坐标点 CCPoint location = this->getParent()-> ...

  3. Java学习笔记:2022年1月7日

    Java学习笔记:2022年1月7日 摘要:今天的这篇笔记主要是通过讲解基本的JVM结构来理解Java中一些行为的运行机制,进而更加的深入理解Java的运行原理. 目录 Java学习笔记:2022年1 ...

  4. 为啥要对jvm做优化?

    摘要:在jvm中有很多的参数可以进行设置,这样可以让jvm在各种环境中都能够高效的运行.绝大部分的参数保持默认即可. 本文分享自华为云社区<为什么需要对jvm进行优化,jvm运行参数之标准参数& ...

  5. ThinkPad E580 装Ubuntu系 系统无WIFI 解决办法

    首先得下载 最新的驱动,我之前因为自己的下载的驱动不够新,导致我的驱动一直装不上去 https://github.com/tomaspinho/rtl8821ce 这个是最新的驱动的下载 地址,建议从 ...

  6. 【unity】EventSystem.current.IsPointerOverGameObject()报空指针错误的解决

    我前几天遇见了EventSystem.current.IsPointerOverGameObject()这么个问题,只要我一触发就给我报空指针!!我那时根本就没动这段码,但就是报错!!!卡了老子十小时 ...

  7. Vue的介绍

    目录 Vue介绍 一.前端发展史 二.Vue介绍 1.Vue是什么? 2.M-V-VM 架构思想 3.组件化开发.单页面应用 4.版本问题 三.第一个helloworld 1.了解开发前端的编辑器 2 ...

  8. MySQL 中的事务理解

    MySQL 中的事务 前言 原子性 一致性 持久性 并发事务存在的问题 脏读 幻读 不可重复读 隔离性 事务的隔离级别 事务隔离是如何实现 可重复读 和 读提交 串行化 读未提交 可重复读解决了幻读吗 ...

  9. 为什么sleeping的会话会造成阻塞

    背景 客户反映HIS数据库每天22点后都会发生阻塞,阻塞的源头是一个sleeping的会话,越阻塞越多,只能通过手动KILL掉才能解决,十分不解为什么状态为sleeping的会话会造成阻塞. 现象 在 ...

  10. Quartz与Topshelf结合实现window定时服务

    一,新建控制台应用程序 二,选中项目,右键 - 管理 NuGet 程序包,添加四个: Quartz Quartz.Plugins Topshelf log4net 三,创建项目文件 三个配置文件:必须 ...