那片树海

用心做一件工艺品


  • 首页

  • 分类

  • 归档

  • 标签

  • 关于

Cocoapods target has transitive dependencies that include static frameworks

发表于 2018-07-09 | 更新于: 2026-05-11

最近在写一个新的 Swift 工程,在引用旧的 objective-c 的 pod 时开启了 use_frameworks!配置项,结果在 pod install 和 pod update 出现了这么一个问题

1
target has transitive dependencies that include static frameworks: (AAA)

问题原因

Podfile 中不使用 use_frameworks! 时是会生成相应的 .a(静态链接库)文件,然后通过 static libraries 来管理 pod 代码,在 Linked 时会包含该 pod 引用的其他的 pod 的 .a 文件

Podfile 中使用 use_frameworks! 时是会生成相应的 .framework 文件(动态链接库:实际内容为 Header+动态链接库+资源文件),然后通过 dynamic frameworks 的方式来管理 pod 代码,在 Linked 时会包含该 pod 引用的其他的 pod 的 .framework 文件

我们开启了 use_frameworks! 以动态 framework 的方式引用了 AAA,然而 AAA 实际上是一个静态库,需要拷贝并链接到该 pod 中,然而 dynamic frameworks 方式并不会这么做,所以就报错了。

解决方案

在引用 AAA 的 pod 的 podspec 文件当中开启 static_framework 配置

1
s.static_framework = true

把该 pod 作为一个静态 framework 来编译链接,这样 AAA 就会被拷贝链接到到该 pod 的 framework 当中,这样就能正常引用了。

iOS Archive之后出现Other Items无法导出

发表于 2018-05-28 | 更新于: 2026-05-11

最近在 iOS 打包时碰到了无法导出为 ipa 的情况,问题表现为打包之后包出现在 Other Items 下而不是 iOS Apps 下。

这是因为打包的项目中某些配置导致打出来的包多了一些文件,网上大致有以下几种解决方案:

1.依赖工程的 skip install 设置为 Yes,Build Settings->Deployment->Skip Install

2.依赖工程 Build Phases->Copy Headers 中所有的头文件拉到 Project 下,即 Public 和 Private 下不能有文件

3.清空 Build Settings->Deployment->Installation Directory 选项的内容

这里我需要指出的是如果你是升级了 CocoaPods 之后出现的这种情况,而且 CocoaPods 的版本大于 1.3.1 并且小于 1.5.2,那么也有可能是 CocoaPods 的脚本错误造成的,所以可以尝试下

4.将 CocoaPods 降级至 1.3.1 或者升级为大于等于 1.5.2 的版本

另外苹果官方有个文档,虽然比较旧,也可以参考下
https://developer.apple.com/library/content/technotes/tn2215/_index.html

CocoaPods重复生成UUID的问题

发表于 2018-05-28 | 更新于: 2026-05-11

最近使用 CocoaPods 在 pod install 或者 pod update 时会出现 [!] [Xcodeproj] Generated duplicate UUIDs: 的错误,大段的 warning 占满整个终端。

解决方案:

终端执行如下命令

1
export COCOAPODS_DISABLE_DETERMINISTIC_UUIDS=YES

后续 CocoaPods 已经把该配置移入到 Podfile 当中,执行上面命令无效的可以在 Podfile 当中添加如下配置即可:

1
2
# 建议放在文件开始或者 source 之后
install! 'cocoapods', :deterministic_uuids => false

主题替换为NexT

发表于 2018-04-04 | 更新于: 2026-05-11

之前一直觉得博客的主题在显示比较多的文字和代码的时候略显凌乱,而且不太方便阅读,所以就把博客主题替换成了 NexT。NexT 在文字排版上比较清晰,而且界面元素也不多,可以使自己把更多的关注点放在内容上。

NexT 主题地址:https://github.com/iissnan/hexo-theme-next

多说两句

1.NexT 有 4 个 scheme,每个 scheme 对应一个不同的布局,可以在 _config.yml 当中设置

1
2
3
4
5
6
7
8
# ---------------------------------------------------------------
# Scheme Settings
# ---------------------------------------------------------------

# Schemes
scheme: Muse
# scheme: Mist
#scheme: Pisces

2.大于 5.0.1 小于 6.0.0 版本的 NexT 在 sudo hexo generate 时速度会特别慢,不知道是不是个例,在使用的时候注意一下

从ReactNative到React

发表于 2018-03-29 | 更新于: 2026-05-11

最近在写自己的一个前端小 Demo,因为之前在工作中使用了 ReactNative,就选择了 React 作为技术选型,也就走上了这么一条自上而下的路。本文主要内容为 ReactNative 和 Reactjs 的一些不同以及从 ReactNative 到 Reactjs 的一些开发中的经验,因此适合从原生转向前端或者对前端有些兴趣的同学,希望能帮大家少踩一些坑,少费一些力。

安装脚手架和搭建基础工程

1
2
3
4
5
6
//-g是将create-react-app安装到全局,该电脑的任何用户都可以使用
npm install -g create-react-app
create-react-app my-app

cd my-app
npm start

这样我们就有一个基础的工程和基础的页面了,下面我们就开始讨论详细的问题了

阅读全文 »

2017年个人总结

发表于 2018-01-09 | 更新于: 2026-05-11

20180109-1

阅读全文 »

MobX绑定过程和其中的一些坑的总结

发表于 2017-10-19 | 更新于: 2026-05-11

20171019-1

阅读全文 »

Xcode9的一些问题

发表于 2017-10-10 | 更新于: 2026-05-11

Xcode9 的正式版也使用了一段时间了,bug 还是有点多的,总感觉好像是赶工出来的版本,刚开始用的时候还是有点痛苦的,下面就把这些点列出来,大家可以参考一下。

BUG

1.APP 图标不见了

用 Xcode9 跑起来工程之后发现应用图标不见了,这个是因为 CocoaPods 的资源脚本有点问题,在 Xcode9 上资源位置异常,工程引用不到,解决方案是在 Podfile 添加如下 hook 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
post_install do |installer|
copy_pods_resources_path = "Pods/Target Support Files/Pods-[工程名]/Pods-[工程名]-resources.sh"
string_to_replace = '--compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"'
assets_compile_with_app_icon_arguments = '--compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${BUILD_DIR}/assetcatalog_generated_info.plist"'
text = File.read(copy_pods_resources_path)
new_contents = text.gsub(string_to_replace, assets_compile_with_app_icon_arguments)
File.open(copy_pods_resources_path, "w") {|file| file.puts new_contents }
end

# 如果有多个TARGETS,遍历执行即可
post_install do |installer|
installer.aggregate_targets.each do |target|
copy_pods_resources_path = "Pods/Target Support Files/Pods-[工程名]/Pods-[工程名]-resources.sh"
string_to_replace = '--compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"'
assets_compile_with_app_icon_arguments = '--compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${BUILD_DIR}/assetcatalog_generated_info.plist"'
text = File.read(copy_pods_resources_path)
new_contents = text.gsub(string_to_replace, assets_compile_with_app_icon_arguments)
File.open(copy_pods_resources_path, "w") {|file| file.puts new_contents }
end
end
阅读全文 »

一行命令搞定工程图片浏览查找

发表于 2017-09-12 | 更新于: 2026-05-11

在项目开发过程中随着项目的逐渐增大,项目当中的图片资源会越来越多,而且有些时候因为命名不规范和人员的变动等原因会造成项目当中重复的图片资源越来越多,而且 Xcode 查看图片的方式也不集中,查找起来也不方便,这种情况下我们往往会更倾向于添加一个新的图片资源,从而更加剧了图片资源重复的问题。

为了解决这个问题,我们打算来写一个脚本,把工程当中图片数据扫描一遍,然后用 html 集中显示出来,这样就方便我们来查找了。

问题分析

我们基本上需要解决以下 3 个问题

  1. 工程资源文件扫描脚本的编写
  2. html 展示页面的编写
  3. html 页面和扫描脚本的数据交互

1 和 2 两点查阅相关资料就可以比较容易解决,主要是第 3 点,一般情况下浏览器是不提供操作文件的接口的,网上说的ActiveXObject也只是 IE 浏览器提供。这个地方我们采用了一个比较特殊的方式,就是将脚本扫描得到的数据直接利用脚本的文件操作写成一个 js 文件,虽然浏览器不能操作文件,但是可以直接读取 js 文件,这样就比较好的解决了脚本和 html 交互的问题。

阅读全文 »

一个优雅的水波动画

发表于 2017-08-11 | 更新于: 2026-05-11

今天整理文件的时候发现以前写的一个动画,感觉还不错,就和大家分享一下。

如何实现一个如下图的动画呢?

20170811-1

下面我们就来一步步的实现它。

阅读全文 »
1234…7
树海

树海

61 日志
1 分类
21 标签
RSS
GitHub Weibo
© 2026 树海
由 Hexo 强力驱动
|
主题 — NexT.Muse