加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

简陋的swift carthage copy-frameworks 辅助脚本

发布时间:2020-12-14 05:59:22 所属栏目:百科 来源:网络整理
导读:在看 carthage 时,其中需要配置一个 copy-frameworks 脚本,此脚本特殊的地方,需要手动填写 Input Files 和 Output Files.一个一个填写,很糟心~ 观察了下,对应修改的是 xxx.xcodeproj/project.pbxproj 中这个文本文件的特定位置的字段,类似于: /* Begin PBXSh

在看 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 optional
let 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" ] */

参考:

  • If you’re building for iOS,tvOS,or watchOS

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读