iOS开发进阶(十三):脚手架创建iOS项目
文章目录
- 一、前言
- 二、xcode-select 命令
- 三、拓展阅读
一、前言
项目初期,需要搭建项目基本框架,为此离不开辅助工具,即脚手架。当然,IDE也可以实现新建空白项目,但是其新建后的项目结构可能不符合预期设计,故需要通过脚手架创建项目方式统一项目开发规范,对于开发管理至关重要。
脚手架shell文本命令(createiOS.sh)如下:
git clone http://88.66.99.83/BPPlatform/vast_app_template.git
cd vast_app_template
/usr/local/cocoapods/bundle/bin/bundle-env ruby create_xcode_project.rb ../ TestSC com.boc.test
open ../
其中,create_xcode_project.rb文件内容如下:
require File.expand_path('../proj_creator', __FILE__)
require File.expand_path('../file_migration', __FILE__)
require File.expand_path('../conf_substitution', __FILE__)
require File.expand_path('../create_main_workspace', __FILE__)# # create program
# puts "\033[32m'=============START============='\033[0m\n"
# creator = ProCreator.new
# creator.start
#
# # migrate files
# puts "\033[32m'files setting...'\033[0m\n"
# mig = FileMigration.new
# mig.migration
#
# # replace key words
# puts "\033[32m'content setting...'\033[0m\n"
# subOp = ConfSubsitution.new
# subOp.start
#
# puts "\033[32m'pod install...'\033[0m\n"
# puts "\033[32m#{`pod install`}\033[0m\n"
#
#rootpath = ARGV.shiftprojName = ARGV[0]bundleid = ARGV[1]widgets = ARGV[2]generator = WorkspaceGenerator.new(rootpath, projName, bundleid, widgets)generator.create
执行shell脚本:
./createiOS.sh
生成后的项目结构如下图所示:

由项目结构可知,脚手架中对项目做了很好的分层处理,便于项目解耦。
二、xcode-select 命令
Print or change the path to the active developer directory. This directory controls which tools are used for the Xcode command line tools (for example, xcodebuild) as well as the BSD development commands (such as cc and make).
用-help可查看xcode-select存在哪些命令:

当安装多个xcode的版本,使用该工具使用指定的版本。
-p或者--print-path查看当前开发者目录,也即是xcode的版本目录。-s <path>或--switch <path>选择xcode版本。--install安装;--version查看版本;--reset恢复默认;sudo rm -rf /Library/Developer/CommandLineTools强制删除安装目录下的文件;
sudo xcode-select --switch Xcode.app
三、拓展阅读
- 《iOS 进阶专栏》
相关文章:
iOS开发进阶(十三):脚手架创建iOS项目
文章目录 一、前言二、xcode-select 命令三、拓展阅读 一、前言 项目初期,需要搭建项目基本框架,为此离不开辅助工具,即脚手架。当然,IDE也可以实现新建空白项目,但是其新建后的项目结构可能不符合预期设计࿰…...
手机无线投屏到windows11电脑
1 安装无线投影组件 2 电脑端打开允许其他设备投影的开关 3 手机找到投屏选项 4 手机搜索可用设备连接即可 这里的官方文档给的不太好,给了一些让人眼花撩乱的信息,以下是经过整合的有效信息...
linux 环境安装配置
安装java17 1.下载安装包 wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz 2.解压到自定义目录/usr/local/java mkdir /usr/local/java tar zxvf jdk-17_linux-x64_bin.tar.gz -C /usr/local/java 3.配置环境变量 echo export PATH$PATH:/…...
Git常用语句
设置用户名 git config --global user.name "用户名" git config --global user.email "邮箱"查看git用户信息 cat ~/.gitconfig初始化本地库 git initclone指定分支的代码 git clone -b my_branch gitgitlabxxxxxxxxxxxxxxxxxxxxxx.gitpush三件套 gi…...
坦克大战_java源码_swing界面_带毕业论文
一. 演示视频 坦克大战_java源码_swing界面_带毕业论文 二. 实现步骤 完整项目获取 https://githubs.xyz/y22.html 部分截图 启动类是 TankClinet.java,内置碰撞检测算法,线程,安全集合,一切皆对象思想等,是java进阶…...
JVM 记录
记录 工具 https://gceasy.io 资料 尚硅谷宋红康JVM全套教程(详解java虚拟机) https://www.bilibili.com/video/BV1PJ411n7xZ?p361 全套课程分为《内存与垃圾回收篇》《字节码与类的加载篇》《性能监控与调优篇》三个篇章。 上篇《内存与垃圾回收篇…...
Linux学习笔记————C 语言版 LED 灯实验
这里写目录标题 一、实验程序编写二、 汇编部分实验程序编写三、C 语言部分实验程序编写四、编译下载验证 汇编 LED 灯实验中,我们讲解了如何使用汇编来编写 LED 灯驱动,实际工作中是很少用到汇编去写嵌入式驱动的,毕竟汇编太难,而…...
Spring Boot 配置文件
1. 配置文件的作用 配置文件主要是为了解决硬件编码带来的问题,把可能会发生改变的信息,放在一个集中的地方,当我们启动某个程序时,程序从配置文件中读取一些数据,并加载运行。 硬编码是将数据直接放在源代码中&…...
IPKISS ------ 查看器件默认端口名称
IPKISS ------ 查看器件默认端口名称 正文正文 我们这里以 Grating Coupler 举例。 import si_fab.all as pdk import ipkiss3.all as i3class MyGratingCoupler(i3.circuit):gc = i3.childcellProperty(<...
uni-app踩坑记录
uni-app踩坑记录 Failed to load local image resource xxx the server responded with a status of 500 (HTTP/1.1 500 Internal Server Error) Failed to load local image resource xxx the server responded with a status of 500 (HTTP/1.1 500 Internal Server Error) 文…...
【嵌入式硬件】光耦
1.光耦作用 光耦一般用于信号的隔离。当两个电路的电源参考点不相关时,使用光耦可以保证在两边不共地的情况下,完成信号的传输。 2.光耦原理 光耦的原理图如下所示,其内部可以看做一个特殊的“三极管”; 一般的三极管是通过基极B和发射极E间的电流,去控制集电极C和发射极…...
学习Fast-LIO系列代码中相关概念理解
目录 一、流形和流形空间(姿态) 1.1 定义 1.2 为什么要有流形? 1.3 流形要满足什么性质? (1) 拓扑同胚 (2) 可微结构 1.4 欧式空间和流形空间的区别和联系? (1) 区别: (2) 联系: 1.5 将姿态定义在流形上比…...
React 掌握及对比常用的8个Hooks,优化及使用场景
1、useState 在函数组件中,可以使用useState来定义函数组件的状态。使用useState来创建状态。 1.引入2.接收一个参数作为初始值3.返回一个数组,第一个值为状态,第二个值为改变状态的函数 2、 useEffect useEffect又称副作用hooks。作用&…...
DNS域名解析过程
在互联网中我们通信目标是对方的IP,但是由于IP不便于记忆所以引入了域名 域名和IP是一一对应的关系,需要注意的是域名和网址是不同的概念 比如:www.csdn.net是域名,https://www.csdn.net/?spm1001.2101.3001.4476是网址 首先了解…...
MySQL数据库(数据库连接池)
文章目录 1.批处理应用1.基本介绍2.批处理演示1.创建测试表2.修改url3.编写java代码 3.批处理源码分析 2.数据库连接池1.传统连接弊端分析2.数据库连接池基本介绍1.概念介绍2.数据库连接池示意图3.数据库连接池种类 3.C3P0连接池1.环境配置1.导入jar包2.将整个lib添加到项目中3…...
【C#】知识点速通
前言: 笔者是跟着哔站课程(Trigger)学习unity才去学习的C#,并且C语言功底尚存,所以只是简单地跟着课程将unity所用的C#语言的关键部分进行了了解,然后在后期unity学习过程中加以深度学习。如需完善的C#知识…...
FTP协议
FTP协议 客户端向服务器发送文件。 C/S架构。 运行在TCP/IP协议上面。 FTP客户端要和FTP服务端建立两个TCP连接。 控制连接:运行在整个连接过程,传输控制信息。 数据连接:在每次文件传输时才会建立,文件传输完就关闭。 主动模式…...
前后端分离开发【Yapi平台】【Swagger注解自动生成接口文档平台】
前后端分离开发 介绍开发流程Yapi(api接口文档编写平台)介绍 Swagger使用方式1). 导入knife4j的maven坐标2). 导入knife4j相关配置类3). 设置静态资源映射4). 在LoginCheckFilter中设置不需要处理的请求路径 查看接口文档常用注解注解介绍 当前项目中&am…...
Android的硬件接口HAL-2 HIDL
没写完哈。 不说废话,直接上干活。 1 创建HAL mkdir -p vendor/fanged/hidltest/1.0/defaultvi vendor/fanged/hidltest/1.0/Ilovefanged.hal package vendor.fanged.hardware.hidltest1.0;interface Ilovefanged {add(int32_t a, int32_t b) generates (int32_t…...
pygame--坦克大战(二)
加载敌方坦克 敌方坦克的方向是随机的,使用随机数生成。 初始化敌方坦克。 class EnemyTank(Tank):def __init__(self,left,top,speed):self.images = {U: pygame.image.load(img/enemy1U.gif),D: pygame.image.load(img/enemy1D.gif),L: pygame.image.load(img/enemy1L.gi…...
Sealos安全架构完全指南:多租户环境下的终极防护策略
Sealos安全架构完全指南:多租户环境下的终极防护策略 【免费下载链接】sealos Sealos is a production-ready Kubernetes distribution that provides a one-stop solution for both public and private cloud. https://sealos.io 项目地址: https://gitcode.com/…...
微信850协议实战:泡泡玛特小程序授权不掉线全流程解析(附源码)
微信850协议深度应用:构建高稳定小程序授权体系的技术实践 在移动互联网生态中,微信小程序已成为连接用户与服务的重要桥梁。对于开发者而言,如何确保授权流程的稳定性,特别是在需要长期维持登录状态的场景下,成为技术…...
Cogito-V1-Preview-Llama-3B模型微调(Fine-tuning)数据准备入门教程
Cogito-V1-Preview-Llama-3B模型微调数据准备入门教程 你是不是也对那些能写代码、能聊天的AI模型感到好奇,甚至想自己动手,教一个模型学会你的专属技能?比如,让它帮你写特定风格的文案,或者理解你公司内部的业务文档…...
大疆无人机GB28181协议接入异常深度排查与系统性解决方案
大疆无人机GB28181协议接入异常深度排查与系统性解决方案 【免费下载链接】wvp-GB28181-pro 项目地址: https://gitcode.com/GitHub_Trending/wv/wvp-GB28181-pro 问题定位:从日志特征解析接入故障 在WVP-GB28181-Pro平台集成大疆Mavic 3E无人机过程中&…...
Vue+SpringBoot全栈项目搭建:手把手教你实现一个带分页和Swagger的CRUD应用
VueSpringBoot全栈开发实战:从零构建企业级CRUD应用 1. 全栈技术选型与项目初始化 在当今快速迭代的互联网开发领域,前后端分离架构已成为主流选择。Vue.js作为渐进式前端框架,以其轻量级和响应式数据绑定特性,成为构建用户界面…...
如何通过铜钟音乐重拾纯粹听歌的乐趣:一个零干扰的Web音乐解决方案
如何通过铜钟音乐重拾纯粹听歌的乐趣:一个零干扰的Web音乐解决方案 【免费下载链接】tonzhon-music 铜钟 (Tonzhon.com): 免费听歌; 没有直播, 社交, 广告, 干扰; 简洁纯粹, 资源丰富, 体验独特!(密码重置功能已回归) 项目地址: https://gitcode.com/G…...
如何用HIS开源项目解决医院信息化难题:从单体到微服务的实战指南
如何用HIS开源项目解决医院信息化难题:从单体到微服务的实战指南 【免费下载链接】HIS ZainZhao/HIS: HIS 通常代表医疗信息系统(Hospital Information System),但此链接指向的具体项目信息未知,可能是某个开发者设计或…...
MT5中文改写工具实操:支持Markdown格式保留与结构化文本增强
MT5中文改写工具实操:支持Markdown格式保留与结构化文本增强 1. 工具概览与核心价值 MT5中文改写工具是一个基于Streamlit和阿里达摩院mT5模型构建的本地化NLP工具。它能对输入的中文文本进行语义改写和数据增强,在保持原意不变的前提下生成多种不同的…...
LIBERO Benchmark自定义任务避坑指南:手把手教你从零构建厨房场景的BDDL文件
LIBERO Benchmark厨房任务BDDL实战:从场景拆解到避坑全流程 当你第一次打开LIBERO Benchmark的文档,面对那些复杂的项目结构和晦涩的术语时,是否感到无从下手?本文将以一个具体的厨房场景任务为例——"打开橱柜放入杯子&quo…...
高效智能歌词提取工具:跨平台音乐歌词获取解决方案
高效智能歌词提取工具:跨平台音乐歌词获取解决方案 【免费下载链接】163MusicLyrics Windows 云音乐歌词获取【网易云、QQ音乐】 项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics 在数字音乐时代,我们常常遇到想要学唱一首外语…...
