ca88yzclint无变化难点,创制本人的信任库

Posted by

     
搭建私有cocoapods仓库时,需求团结创制.podspec文件,并把.podspec文件上传到村办服务器上。常常在写完.podspec文件后要检查一下文件的有用,不然传上去也是白传。那就用到了pod
spec lint命令。

官方网站地址:

营造集成了四个证实,分享,支付的库,也上载到了github,在此之前一直想做二个和睦的pod库,依照英特网的课程,走了一些坑,总算折腾完了(写这么些小说的时候其实应该还在布署,有一点点小震动)

       在利用时境遇贰个小标题。正是率先次采纳pod spec
lint命令质量评定时,提示不通过,原因是有文件不辅助x86或许i386,也正是不协理模拟器。如下边log所示:

pod导入的库暗中同意地址:~/.cocoapods/repos

1.Github 

     创造和睦的Repository,小编创设了QShare,然后从本地上传到github上,
那么些步骤就不在此赘述了,平常跑github的同窗应该都会。

admindeMacBook-Pro-2:Desktop $ pod spec lint Detect.podspec

->Detect (1.0.0)

– ERROR | [iOS] xcodebuild: Returned an unsuccessful exit code. You
can use `–verbose` for more information.

– NOTE| [iOS] xcodebuild:ld: warning: ignoring file

Detect/Detect/Detect.framework/Detect, missing required architecture
x86_64 in file Detect/Detect/Detect.framework/Detect (2 slices)

– NOTE| [iOS] xcodebuild:ld: warning: ignoring file
Detect/Detect/Detect.framework/Detect, missing required architecture
i386 in file Detect/Detect/Detect.framework/Detect (2 slices)

– NOTE| [iOS] xcodebuild:fatal error: lipo: -remove’s specified
would result in an empty fat file

Analyzed 1 podspec.

[!] The spec did not pass validation, due to 1 error.

1.假使Computer还未注册到cocoapods,则先挂号:

2.建tag

     张开终端,cd 到品种QShare目录下,

git tag ‘1.0.0’//这么些命令是地点创造tag,1.0.0本子

git push –tags // 这几个命令是把tag推送到远端。

       
由此,去改了git宾馆中有关的framework,使之帮忙x86或许i386。原来以为那样就可以了,但结果意外,还是报原本的不当。由此又跑去改了三遍,来来回回逐个审查了几回,发现无论是怎么改,仿佛pod
spec lint根本就不去理会这个改造。然后就想到了缓存,揣测是还是不是pod spec
lint是还是不是只会把git仓Curry面包车型地铁内容拉下来第叁回,后边都以依赖缓存跑的命令。可是缓存在怎么岗位吗?于是利用了上面包车型客车指令,来看命令运营的内情:

pod trunk register 376811578@qq.com ‘chenzhe’ –description=’xyz’

登记成功后会在你的邮箱收到风姿浪漫份肯定邮件,

注册完之后能够透过pod trunk me 查看基本音讯。

3.创立项目标podspec文件

现行反革命极端照旧在类型QShare的目录下,推行以下命令

$ pod spec create QShare

在本地目录下同期也生成了QShare.podspec文件

$ vim QShare.podspec

编纂podspec文件,会意识那么些文件已经变化了有的的字段

以下是编写制定好的podspec 文件 做一些解释

Pod::Spec.new do |s|                       #spec开始
 s作为spec的别名

    s.name        = “QShare”               #项目名称

    s.version      = “1.0.0”                 #版本号,

    s.summary      = “Gather Some Auth Share Pay.”        #简介

    s.homepage    = “”          
#github,可能别的开源代码地址

    s.license      = “MIT”        #依照的开源合同

    s.author            = { “quankevin” => “quankevin@163.com” }  
    #作者

    s.social_media_url  = “”        
#作者联系

    s.platform    = :ios, “7.0”    #对应的ios平台

    s.source      = { :git =>
“”, :tag => “#{s.version}”
}    #代码的git源地址    这里的tag=>”#{s.version}”  
引用了下面的s.version  如果,在打tag的时候是用的  git tag ‘v1.0.0’    
那么这里须求动用   tag => “v#{s.version}” 

    s.frameworks  = “SystemConfiguration”,”UIKit”,”CoreTelephony”    
    #系列要求利用的ios framework 

    s.libraries    = “stdc++”, “sqlite3″,”z”              
 #类型需求运用的库

    s.requires_arc = true             #arc

    s.public_header_files = “QShare/QShareHeader.h”        
 #公用的局地头文件

    s.subspec ‘Core’ do |core|                            
 #概念一个Core

       core.source_files = “QShare/*.{h,m}”    #指定Core的路径

    end        #利落定义Core

    s.subspec ‘WeChat’ do |wechat|       #概念微信

      wechat.dependency ‘QShare/Core’         #亟需地点的Core

      wechat.source_files = “QShare/Wechat/*.{h,m}”    #微信的库 

      wechat.vendored_libraries = “QShare/Wechat/*.a”
 #包裹了微信的.a

    end   #结束

    s.subspec ‘Weibo’ do |weibo|

       weibo.dependency “WeiboSDK”   #此地是一向引用了和讯的cocoapod

    end

    s.subspec ‘Tencent’ do |qq|

      qq.dependency ‘QShare/Core’

      qq.source_files = “QShare/Tencent/*.{h,m}”

      qq.vendored_frameworks =
“QShare/Tencent/SDK/TencentOpenAPI.framework”   #指定framework 的路径

    end

    s.subspec ‘Ali’ do |ali|

      ali.dependency ‘QShare/Core’

      ali.source_files = “QShare/Ali/*.{h,m}”

      ali.resources = “QShare/Ali/SDK*.bundle”   #内定了ali
的非代码财富

      ali.vendored_frameworks = “QShare/Ali/SDK/AlipaySDK.framework”

    end

end

pod spec lint Detect.podspec –verbose

2.在已某些现有项目里面创造PodSpec文件。

编辑好podspec文件后,须要说圣元(Synutra)(Nutrilon)下这一个文件是或不是能通过编译。

$ pod spec lint QShare.podspec –verbose

不过并从未经过

– ERROR | [iOS] Encountered an unknown error (The’Pods’target has
transitive dependencies that include static binaries:
(/private/var/folders/bw/c_n89d1n6xqffn525kp80000gn/T/CocoaPods/Lint/Pods/WeiboSDK/libWeiboSDK/libWeiboSDK.a))
during validation.

找了意气风发部分生死相依的,这么些错误是因为依赖库(s.dependency)包蕴了.a静态库形成的。就算那并不影响Pod的应用,可是验证是无法通过的。能够透过
–use-libraries 来让认证通过。使用以下的授命:

$ pod spec lint QShare.podspec –verbose –use-libraries

只是这种意况下使用 –use-libraries
即便不会冒出谬误(error),可是临时会带来一些告诫(waring),警报一样是回天乏术通过认证的。那时可以用
–allow-warnings 来允许警示。

$ pod spec lint QShare.podspec –verbose –use-libraries
–allow-warnings

静候佳音—-终于通过了。

果然看见了缓存路线:/Users/xxx/Library/Caches/CocoaPods/Pods/External/Detect/c95d09ca6414d5ce7e95336874fb511d-6bd8e

pod spec create HHZConfig

供参考podspec文件:

提交到pod

颁发时也会注解 Pod 的管用,假诺您在手动验证 Pod 时使用了
–use-libraries 或 –allow-warnings
等修饰符,那么发表的时候也理应选用一样的字段修饰,不然现身同样的报错。

发表成功后,终于得以选择 pod search 搜索到和谐的 Pod 了。

➜tieguan pod search QShare

-> QShare (1.0.0)

Gather Some Auth Share Pay.

pod ‘QShare’, ‘~> 1.0.0’

– Homepage:

– Source:

– Versions: 1.0.0 [master repo]

– Subspecs:

– QShare/Core (1.0.0)

– QShare/WeChat (1.0.0)

– QShare/Weibo (1.0.0)

– QShare/Tencent (1.0.0)

– QShare/Ali (1.0.0)

admindeMacBook-Pro-2:Desktop $ pod spec lint Detect.podspec
–verbose

Detect (1.0.0) – Analyzing on iOS 8.0 platform.

Preparing

Analyzing dependencies

Inspecting targets to integrate

Using `ARCHS` setting to build architectures of target `Pods-App`:
(“)

Fetching external sources

-> Fetching podspec for `Detect` from
`/Users/xxx/Desktop/Detect.podspec`

Resolving dependencies of Comparing resolved specification to the
sandbox manifest

Downloading dependencies

-> Installing Detect (1.0.0)

> Copying Detect from

`/Users/xxx/Library/Caches/CocoaPods/Pods/External/Detect/c95d09ca6414d5ce7e95336874fb511d-6bd8e`

to

`../../../private/var/folders/wq/_bbgx_v55f3b1vvhw5qvch740000gn/T/CocoaPods/Lint/Pods/Detect`

– Running pre install hooks

3.改变须求消息之后检查实验podspec文件是还是不是合格:

本子晋级

当要求立异 Pod 版本的时候,修改 .podspec 中的 s.version
为更加高的本子号,并修改 s.source 中对应的 Git
版本。提交到Git,并打上对应tag。然后重新奉行pod trunk push
QShare.podspec将新的 .podspec 公布到 CocoaPods。更新完结!

为了更有益于的修改版本号,用了以下的语句:

s.source      = { :git =>
“”, :tag => “v#{s.version}”
}

这般与 s.version实行了绑定,每回提交新的本子只要求修改s.version  =
“xxxx”。

如有不精通的大概不当的地点,请大家建议,作者会将其考订。

于是决断cd到那几个途径并展开,果然开掘了大气的缓存数据,直接把那一个多少抹掉,再去运作pod
spec lint命令,就能够另行去git上拉数据,进而使核实通过:

检查实验此前绝对要打Tag:

git tag ‘0.0.1’

git push –tags

然后检查评定文件:verbose是为着展现详细消息,allow-warnings忽视项目中的警示

pod spec lint HHZConfig.podspec –verbose –allow-warnings

参照他事他说加以考察资料

** BUILD SUCCEEDED **

->Detect (1.0.0)

Analyzed 1 podspec.

Detect.podspec passed validation.

4.注册到Pods库的master库:

pod trunk push HHZConfig.podspec –allow-warnings

PS:

1.要是碰着trunk push成功了,不过pod search 还是搜索不到,提醒[!] Unable to find a pod with name, author, summary, or description matching `xxx`则是因为找寻到缓存文件导致,删除~/Library/Caches/CocoaPods目录下的search_index.json文件就可以,然后再pod search就会招来到新交付到Pods项目。

2.去掉三方的警戒:inhibit_all_warnings!

3.依据地点品种的podspec:一时候podspec检查测试成功后不想一向push到cocoapods上,能够思量间接看重地方品种,在Podfile文件中投入:

pod ‘HHZUtils’, :podspec => ‘/Users/GoodBoy/Desktop/Github/HHZUtils/HHZUtils.podspec’

4.xcodebuild: Returned an unsuccessful exit code.

又是其蒸蒸日上恶意的一无是处,在此以前的忘了,今后开端写它种种恐怕,互连网有非常多原因,不过自身的跟她们不日新月异致,因为是新类型步向到pod,所以找不到脑子,看了错误消息,在Build的时候失利了:7
duplicate symbols for architecture x86_64
。那尼玛怎么或然,然后找了品种里面这么些,未有三个是duplicate,试了三遍依旧要命。于是希图试试是或不是tag的因由,因为一向pod的0.0.1版本的Tag,现在把Tag改为0.0.2,能够了。。。

5.Encountered an unknown error (The ‘Pods-App’ target has transitive dependencies that include static binaries: (/private/var/folders/38/j_n07_sx2lzdfq51rvnmt18w0000gn/T/CocoaPods-Lint-20170725-5018-an7p8j-HHZUmengTool/Pods/UMengUShare/UShareSDK/UMSocialSDKPlugin/libUMSocialLog.a

那时是封装友盟的工具类的时候,上传到cocoapod报错。大约很刚强了,未有重视.a静态库
或者framework动态库。

在podspec加入

s.frameworks = …

s.libraries = …

然后还须求投入–use-libraries命令,可因此pod spec lint
–help查见到有关命令

pod spec lint HHZUmengTool.podspec –verbose –allow-warnings
–use-libraries

相关文章

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注