zoukankan      html  css  js  c++  java
  • 简陋的swift carthage copy-frameworks 辅助脚本

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

    参考:

  • 相关阅读:
    PHP输出中文乱码的问题(转)
    phpmyadmin导出数据库为什么是php文件
    phpmyadmin登陆提示#2002 无法登录 MySQL 服务器和设置自增
    phpMyAdmin配置及 错误 缺少 mysqli 扩展。请检查 PHP 配置
    利用eclipse开发php<转>
    apache 2.4 You don't have permission to access / on this server
    (转)如果“打开方式”里面没有想要的打开方式,怎样创建一种文件打开方式?
    (转)安装 Apache 出现 <OS 10013> 以一种访问权限不允许的方式做了一个访问套接字的尝试
    关于ISAPI和CGI限制,这个要设为允许
    Sqlserver数据库日志太大如何快速删除
  • 原文地址:https://www.cnblogs.com/ios122/p/8284898.html
Copyright © 2011-2022 走看看