2018-08-02 11:35:06 Summer_via 阅读数 948

由于最近开发一个项目,需要用到百度地图API,于是使用pod添加了百度地图的库,podfile如下:

# Uncomment the next line to define a global platform for your project
# platform :ios, '11.4'

target 'BaiduLocTest' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!

  # Pods for BaiduLocTest
 pod 'BMKLocationKit','1.2.1'
 pod 'BaiduMapKit','4.1.1'
 pod 'SnapKit','~>4.0.0'
  target 'BaiduLocTestTests' do
    inherit! :search_paths
    # Pods for testing
  end

  target 'BaiduLocTestUITests' do
    inherit! :search_paths
    # Pods for testing
  end

end

新建桥接文件-配置桥接文件路径-import头文件,报错:找不到头文件,如下图:
这里写图片描述
文件目录的确是有对应的头文件的。
于是找到百度地图的demo看了一下,发现import头文件的前缀不是BaiduMapKit,而是BaiduMapAPI_XXX。打开pods/BaiduMapKit才发现里面出了头文件还有一个framework文件夹,而里面放的就是编译出来的.framework文件,文件名正好对应前缀。于是找到要用头文件所属framework,用framework名作前缀就没问题了。

2019-07-30 16:44:33 Emperor_huanzi 阅读数 72

首先吐槽一下网上的处理我试了试都没有成功,下面是我推荐的一种解决方法
打开项目->build Settings -> 搜索User Header Search Paths -> 添加 $(PODS_ROOT)
在这里插入图片描述
再重启一下Xcode试试

2018-01-25 17:10:09 kangpengpeng1 阅读数 3536

OC和Swift混编Pod引入第三方库的问题

问题描述:Swift应用OC 的开源框架,需要创建一个桥接头文件,问题就出在这个看似简单,却隐藏着一个巨大的问题:一切都按部就班的在桥接头文件中引入了OC 头文件,但是xcode总是报错找不到该文件。接下来详细描述问题和原因。

1.为了在Swift项目中引入OC 开源框架,我使用了pod工具引入。然后下图:

2.之后创建桥接文件:

3.然后就是在配置文件中设置桥接文件路径:

4.到这里就看似完成了,一切都很简单。但是,当编译时问题就来了,如下图:

原因是找不到该文件。可是明明使用了pod工具引入了啊。(注:百度清一色的都是以上步骤,该问题并未在百度查询到问题原因和解决方案。所谓博客恐怕都是出自一人)

5.在作了大量的测试和摸索后,终于得意解决。问题的根本原因就是我之前用pod引入了Swift开源框架,为了方便,在引入OC开源框架时我同样是使用了pod工具。我们回看第一步

Swift框架:

pod 'SnapKit''~> 0.30.0.beta1'

pod 'Alamofire''~> 3.4.0'

pod 'SwiftyJSON''~> 2.3.2'


OC框架:

pod 'SVProgressHUD'

pod 'MJRefresh'

同样还有一句话:

 use_frameworks!


没错,简单的说,在OC开发时并不用使用该语句,但是Swift开发时使用pod工具就需要加上这句话。这就导致了OC 和 Swift公用同一个项目工程中的pod时造成了以上显示的错误,即使其他步骤都没有错,但是错误原因就是找不到文件。

至于为什么会这样,我联想到了之前看到过的一篇文章好像是有这么一句话(记不太清楚了)OC是动态语言,而Swift是静态语言,这就是为什么两者在使用pod时关于这句话是否要加上的浅显原因(其实深入的东西就需要接着百度了)

既然原因找到了,解决它就好办了,我们只要把这两种语言的开源框架分开管理就可以了。。。。



2018-12-26 12:08:45 wz597002248 阅读数 221


近期进行项目重构工作,将原先的项目拆分成子framework解耦,因为原项目是OC和swift混编的,遇到了很多framework层的混编问题,总结一下


在最上层项目中混编

swift引用swift

直接互相引用即可

swift引用OC

通过bridge桥接文件

OC引用swift

通过#import “项目名-Swift.h”

OC引用OC

直接#import “类名.h”


在Framework层内混编

swift引用swift

直接使用

swift引用OC

在项目的公共.h中加入需要引用的OC头文件,然后在项目的Build Phases中将其头文件移动到Public中

OC引用swift

#import <项目名/项目名-Swift.h> 如

#import <home_device_add_sdk/home_device_add_sdk-Swift.h>

OC引用OC

直接#import “类名.h”


跨Framework层混编

swift引用swift

添加项目依赖关系
需要import整个新的项目

swift引用OC

添加项目依赖关系
需要import整个新的项目

OC引用swift

添加项目依赖关系
#import <项目名/项目名-Swift.h> 如

#import <home_device_add_sdk/home_device_add_sdk-Swift.h>

OC引用OC

添加项目依赖关系
#import <项目名/类名.h>


上层项目引用Framework时混编

swift引用swift

添加项目依赖关系,然后在引用处添加import语句
import framework名,如

import home_device_add_sdk

swift引用OC

添加项目依赖关系即可

OC引用swift

添加项目依赖关系
#import <项目名/项目名-Swift.h> 如

#import <home_device_add_sdk/home_device_add_sdk-Swift.h>

OC引用OC

添加项目依赖关系
#import <项目名/被引用类名> 如

#import <home_device_add_sdk/HWDevAddResultController.h>
2017-12-18 11:06:17 m0_37344290 阅读数 467

步骤、

1. 创建文件夹,用于承载项目

2. 打开终端,并且cd 到你的文件夹

3. 终端执行语句创建项目:

pod lib create 你的项目名
`等创建完成后,会自动打开项目。
在终端弹出

4.设置打开项目中的: .podspec文件

# pod库名

s.name = 'PYHandlerDate_Swfit' 

# pod版本

s.version = '0.1.0'

# pod概述

 s.summary          = '时间管理工具'

# pod的详细描述,可选,也可以在前面加#号,注释掉

# s.description = <<-DESC

# # 在这里写pod的详细描述,注意 一定要比summary 的字段多
     时间的管理工具,时间的比较,时间的获取,object转换为Date类
# DESC

# pod的主页

s.homepage = 'https://github.com/MobDeveloper163/MyPodTest'

# 许可证书

s.license          = { :type => 'MIT', :file => 'LICENSE' }

# 作者 名字和邮箱地址

s.author           = { 'LiPengYue' => '702029772@qq.com' }

# pod源代码在GitHub的仓库地址,以及pod版本

s.source           = { :git => 'https://github.com/LiPengYue/PYDateHandler_SwiftPOD.git', :tag => s.version.to_s }

# pod支持的最低版本

s.ios.deployment_target = '8.0'

# pod类库的源文件位置,这个要与你存放资源文件的路径一致

s.source_files = 'PYHandlerDate_Swfit/Classes/**/*'

5. 存放资源的路径

注意一定要与.podspec 中的 s.source_files 路径一致
实力代码在这里写
工具存放地点

6. 终端cd到Example
1. pod install
2. 检测.podspec配置是否正确
pod lib lint 你的项目名.podspec
根据提示修改你的错误

7.创建github库,并且与本地关联
1. 在github中新建空仓库,并获取地址。
2. cd到Example与的上层文件夹,将本地文件推送到github 仓库中

#创建本地git库
git init 

#添加到缓存
git add .

#commit到本地库
git commit -a -m "first commit"

#打tag,并且注意 一定要与.podspec中的tag一致
git tag "0.1.0"

#关联远程仓库
git remote add origin https://https://github.com/LiPengYue/PYDateHandler_SwiftPOD.git

#提交tag到远程库
git push origin master --tags

7.在cocoaPods注册,获取Token

pod trunk register 你的邮箱名字@163.com "用户名" --verbose # 邮箱 用户名

8.去邮箱查看并打开下面网址会出现这个界面

邮箱中的内容
打开网址后

9. 在终端中输入
注意你的终端cd到的是.podspec上级文件夹

 pod trunk push PYHandlerDate_Swfit.podspec --verbose

10.出现错误 ,如果提示这个,就直接加个 –allow-warnings

[!] The spec did not pass validation, due to 1 warning (but you can use --allow-warnings to ignore it).

 pod trunk push PYHandlerDate_Swfit.podspec --verbose

11. 好了,你可以去search 一下自己的工具了
找不到就 pod update

12.问题集中营
[Cocoapods]项目添加Cocoapods支持遇到的坑
cocoaPods 打包静态库 遇到的坑 and git

参考文章:
感谢!感谢!还是感谢!
CocoaPods创建自己的Pod
Cocoapods使用—-配置/安装/使用/完全卸载(一)
一步一步教你使用CocoaPods打包静态库

swift调用第三方oc库

阅读数 1058

OC与Swift创建pod

阅读数 10

没有更多推荐了,返回首页