博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简陋的swift carthage copy-frameworks 辅助脚本
阅读量:7012 次
发布时间:2019-06-28

本文共 4187 字,大约阅读时间需要 13 分钟。

  hot3.png

在看 carthage 时,其中需要配置一个 copy-frameworks 脚本,此脚本特殊的地方,需要手动填写 Input Files 和 Output Files.一个一个填写,很糟心~

观察了下,对应修改的是 xxx.xcodeproj/project.pbxproj 中这个文本文件的特定位置的字段,类似于:

/* Begin PBXShellScriptBuildPhase section */		750D68EC2000817C006235CD /* ShellScript */ = {			isa = PBXShellScriptBuildPhase;			buildActionMask = 2147483647;			files = (			);			inputPaths = (				"$(SRCROOT)/Carthage/Build/iOS/Alamofire.framework",			);			outputPaths = (				"$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/Alamofire.framework",			);			runOnlyForDeploymentPostprocessing = 0;			shellPath = /bin/sh;			shellScript = "/usr/local/bin/carthage copy-frameworks";		};/* End PBXShellScriptBuildPhase section */

所以,就像着,自动生成 inputPathsoutputPaths ,然后直接手动修改 project.pbxproj 文件,试了下,可行.简单 nodejs 脚本如下:

var glob = require("glob")// options is optionallet frameWorks = glob.sync("**/*.framework", {  cwd: "path/to/Carthage/Build/iOS/",})console.log(frameWorks)let inputPaths = frameWorks.filter(p=>!p.includes("test")&&!p.includes("Test")).map((p)=>`$(SRCROOT)/Carthage/Build/iOS/${p}`)let outputPaths = frameWorks.filter(p=>!p.includes("test")&&!p.includes("Test")).map((p)=>`$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/${p}`)console.log(inputPaths)console.log(outputPaths)/*控制台的单引号,要手动全局替换为双引号.[ "$(SRCROOT)/Carthage/Build/iOS/Alamofire.framework",  "$(SRCROOT)/Carthage/Build/iOS/Bond.framework",  "$(SRCROOT)/Carthage/Build/iOS/Differ.framework",  "$(SRCROOT)/Carthage/Build/iOS/HEXColor.framework",  "$(SRCROOT)/Carthage/Build/iOS/KeychainAccess.framework",  "$(SRCROOT)/Carthage/Build/iOS/Kingfisher.framework",  "$(SRCROOT)/Carthage/Build/iOS/Lottie.framework",  "$(SRCROOT)/Carthage/Build/iOS/Moya.framework",  "$(SRCROOT)/Carthage/Build/iOS/ObjectMapper.framework",  "$(SRCROOT)/Carthage/Build/iOS/PKHUD.framework",  "$(SRCROOT)/Carthage/Build/iOS/ReactiveKit.framework",  "$(SRCROOT)/Carthage/Build/iOS/ReactiveMoya.framework",  "$(SRCROOT)/Carthage/Build/iOS/ReactiveSwift.framework",  "$(SRCROOT)/Carthage/Build/iOS/Realm.framework",  "$(SRCROOT)/Carthage/Build/iOS/RealmSwift.framework",  "$(SRCROOT)/Carthage/Build/iOS/Result.framework",  "$(SRCROOT)/Carthage/Build/iOS/RxBlocking.framework",  "$(SRCROOT)/Carthage/Build/iOS/RxCocoa.framework",  "$(SRCROOT)/Carthage/Build/iOS/RxMoya.framework",  "$(SRCROOT)/Carthage/Build/iOS/RxSwift.framework",  "$(SRCROOT)/Carthage/Build/iOS/SideMenu.framework",  "$(SRCROOT)/Carthage/Build/iOS/SnapKit.framework",  "$(SRCROOT)/Carthage/Build/iOS/SwiftyTimer.framework" ][ "$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/Alamofire.framework",  "$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/Bond.framework",  "$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/Differ.framework",  "$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/HEXColor.framework",  "$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/KeychainAccess.framework",  "$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/Kingfisher.framework",  "$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/Lottie.framework",  "$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/Moya.framework",  "$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/ObjectMapper.framework",  "$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/PKHUD.framework",  "$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/ReactiveKit.framework",  "$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/ReactiveMoya.framework",  "$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/ReactiveSwift.framework",  "$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/Realm.framework",  "$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/RealmSwift.framework",  "$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/Result.framework",  "$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/RxBlocking.framework",  "$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/RxCocoa.framework",  "$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/RxMoya.framework",  "$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/RxSwift.framework",  "$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/SideMenu.framework",  "$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/SnapKit.framework",  "$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/SwiftyTimer.framework" ]*/

参考:

转载于:https://my.oschina.net/ios122/blog/1606979

你可能感兴趣的文章
bootstrap-treeview 如何实现全选父节点下所有子节点及反选
查看>>
HTML5 CSS3 诱人的实例: 3D立方体旋转动画
查看>>
ElasticSearchserver操作命令
查看>>
ThreadPoolExecutor异常处理
查看>>
LeetCode 第 342 题(Power of Four)
查看>>
用QT搭建简单的播放器外壳
查看>>
索引设计指南
查看>>
Timus Online Judge 1057. Amount of Degrees(数位dp)
查看>>
jquery中关于表格行的增删问题
查看>>
分布式事务,EventBus 解决方案:CAP【中文文档】
查看>>
GUI进化--数据与界面分离
查看>>
三级菜单实例
查看>>
Teleport Pro使用教程
查看>>
C# 如何生成CHM帮助文件
查看>>
Java编程的逻辑 (93) - 函数式数据处理 (下)
查看>>
一对多多对多的建表原则
查看>>
Maven详解(四)------ 常用的Maven命令
查看>>
可视化之Berkeley Earth
查看>>
线性表的顺序存储结构之顺序表类的实现_Java
查看>>
Hadoop的namenode的管理机制,工作机制和datanode的工作原理
查看>>