iOS--项目目录组织及生成脚本
来源:互联网 发布:策略模式 java用户界面 编辑:程序博客网 时间:2024/06/05 06:41
在iOS应用开发,Xcode项目目录是随意组织的,这样一来,就会导致不同的人就会有不同的组织方式。从这一点来看,Xcode的项目组织形式上个人觉得就没有Android开发(无论是eclipse还是as)项目组织形式好了。
这段时间为了规范自己的编码目录组织形式,参考网上的资料,结合自己的习惯,定下了以下的一个iOS项目目录组织结构。这个结构并不完美,有好的想法和好的思路会继续更新,逐渐完善整个结构。
资源下载:iOS项目框架脚本
一、目录结构
.
| _ Expand (扩展内容)
| _ _ Category (自定义Category)
| _ _ Macros (宏定义)
| _ _ _ _ JHMacros.h (项目宏定义)
| _ _ _ _ JHMacros.h (全局默认宏定义)
| _ _ _ _ JHThirdMacros.h (项目第三方宏定义)
| _ _ Tool (工具类)
| _ Main (主逻辑及界面View)
| _ _ Module1 (模块1)
| _ _ _ _ Controller (控制器)
| _ _ _ _ Model (数据模型)
| _ _ _ _ Other (其他文件)
| _ _ _ _ Protocal (协议)
| _ _ _ _ Service (服务逻辑)
| _ _ _ _ View (自定义View视图)
| _ _ _ _ _ _ Cell (Cell视图)
| _ _ _ _ _ _ SubView (子视图)
| _ _ Module2 (模块2)
| _ _ _ _ Controller
| _ _ _ _ Model
| _ _ _ _ Other
| _ _ _ _ Protocal
| _ _ _ _ Service
| _ _ _ _ View
| _ _ _ _ _ _ Cell
| _ _ _ _ _ _ SubView
| _ _ Public (公共内容)
| _ _ _ _ Controller
| _ _ _ _ Model
| _ _ _ _ Other
| _ _ _ _ Protocal
| _ _ _ _ Service
| _ _ _ _ View
| _ _ _ _ _ _ Cell
| _ _ _ _ _ _ SubView
| _ Resource (资源)
| _ _ Font (字体资源)
| _ _ Image (图片资源)
| _ _ _ _ Module1.xcassets (模块1图片资源)
| _ _ _ _ Module2.xcassets (模块2图片资源)
| _ _ _ _ Public.xcassets (公共资源)
| _ _ Plist (Plist文件)
| _ SDKFile (第三方SDK)
| _ Vendor (开源项目代码)
二、生成脚本说明
本生成脚本共包含2个文件,一个是项目信息配置文件,一个是脚本程序。
1. 项目信息配置文件(JHFrameworkInitialization.plist)
项目信息配置文件为一个plist文件,包含两个key:projectName和Modules,分别指定项目的项目名称及项目的模块数组。项目名称最好是首字母大写并符合驼峰命名法原则,Modules是一个数组,若项目不能明显区分模块,则不需填写。 该文件需和脚本程序文件在同一目录,否则会出现找不到配置文件的错误。
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict> <key>ProjectName</key> <string>OMGProject</string> <key>Modules</key> <array> <string>Module1</string> <string>Module2</string> </array></dict></plist>
2. 脚本程序(JHFrameworkInitialization.sh)
其实这个脚本程序是很好理解的,只要有上述的项目目录组织结构,接着就基本使用mkdir命令来生成对应的文件即可。生成完成后需手动把整个结构文件夹添加
#!/bin/shecho ""echo "-------------------------------------"echo "- 初始化JH iOS框架 -"echo "-------------------------------------"echo ""echo "将在以下目录新建:"echo $PWDecho ""# 通过Plist文件获取当前配置数据infoPlistFilePath="JHFrameworkInitialization.plist"if [[ -f infoPlistFilePath ]]; then echo "找不到项目信息配置文件(JHFrameworkInitialization.plist)" return fiprojectName=$(/usr/libexec/PlistBuddy -c "print ProjectName" ${infoPlistFilePath})modules=$(/usr/libexec/PlistBuddy -c "print Modules" ${infoPlistFilePath})# 判断是否存在JH iOS框架文件JHPath="JHFramework"if [ -a "$JHPath" ]; thenrm -rf $JHPathfimkdir $JHPath# 创建Main文件夹echo "1.创建Main文件夹..."mkdir $JHPath"/Main"mkdir $JHPath"/Main/Public"mkdir $JHPath"/Main/Public/Controller"mkdir $JHPath"/Main/Public/View"mkdir $JHPath"/Main/Public/View/Cell"mkdir $JHPath"/Main/Public/View/SubView"mkdir $JHPath"/Main/Public/Model"mkdir $JHPath"/Main/Public/Other"mkdir $JHPath"/Main/Public/Protocal"mkdir $JHPath"/Main/Public/Service"# mkdir $JHPath"/Main/Preview"# mkdir $JHPath"/Main/Base"echo " Main文件夹创建成功!"# 创建Expand文件夹echo "2.创建Expand文件夹..."mkdir $JHPath"/Expand"mkdir $JHPath"/Expand/Category"mkdir $JHPath"/Expand/Macros"mkdir $JHPath"/Expand/Tool"echo " Expand文件夹创建成功!"# 创建Resource文件夹echo "3.创建Resource文件夹..."mkdir $JHPath"/Resource"mkdir $JHPath"/Resource/Font"mkdir $JHPath"/Resource/Image"mkdir $JHPath"/Resource/Image/Public.xcassets"# mkdir $JHPath"/Resource/Global"mkdir $JHPath"/Resource/Plist"echo " Resource文件夹创建成功!"# 创建SDKFile文件夹echo "4.创建SDKFile文件夹..."mkdir $JHPath"/SDKFile"echo " SDKFile文件夹创建成功!"# 创建模块文件夹echo "5.创建Vendor文件夹..."mkdir $JHPath"/Vendor"echo " Vendor文件夹创建成功!"# 初始化JHMacros.hecho "6.创建JHMacros.h文件..."macrosPath=$JHPath"/Expand/Macros/JHMacros.h" # JHMacros.h位置echo "//" >>$macrosPathecho "// JH常用宏定义(尽量不要在这里增加项目的宏定义)" >>$macrosPathecho "// JHMacros.h" >>$macrosPathecho "// "$projectName >>$macrosPathecho "//" >>$macrosPathecho "// Created by JH on $(date +%m/%d/%y)." >>$macrosPathecho "// Copyright © 2016 JH. All rights reserved." >>$macrosPathecho "//" >>$macrosPathecho "" >>$macrosPathecho "#ifndef JHMacros_h" >>$macrosPathecho "#define JHMacros_h" >>$macrosPathecho "" >>$macrosPathecho "// 导入必要的头文件" >>$macrosPathecho "#import \"JHThridMacros.h\"" >>$macrosPathecho "#import \"JH"$projectName"Macros.h\"" >>$macrosPathecho "" >>$macrosPathecho "// 设备Size常量" >>$macrosPathecho "#define JH_SCREEN_WIDTH [UIScreen mainScreen].bounds.size.width // 屏幕宽度" >>$macrosPathecho "#define JH_SCREEN_HEIGHT [UIScreen mainScreen].bounds.size.height // 屏幕高度" >>$macrosPathecho "#define JH_TABBAR_HEIGHT 49.0 // TabBar高度" >>$macrosPathecho "#define JH_STATUSBAR_HEIGHT 20.0 // 状态栏高度([[UIApplication sharedApplication] statusBarFrame].size.height)" >>$macrosPathecho "#define JH_NAVIGATIONBAR_HEIGHT 44.0 // NavigationBar高度" >>$macrosPathecho "" >>$macrosPathecho "// 设备信息常量" >>$macrosPathecho "#define JH_SYSTEM_NAME [UIDevice currentDevice].systemName // 设备系统名称" >>$macrosPathecho "#define JH_SYSTEM_VERSION [UIDevice currentDevice].systemVersion // 设备系统版本" >>$macrosPathecho "#define JH_UUID [[UIDevice currentDevice].identifierForVendor UUIDString] // UUID,每次安装app都会不一样" >>$macrosPathecho "" >>$macrosPathecho "// NSUserDefaults" >>$macrosPathecho "#define JH_USERDEFAULTS [NSUserDefaults standardUserDefaults]" >>$macrosPathecho "" >>$macrosPathecho "// 关于文件管理的常量" >>$macrosPathecho "#define JH_FILE_MANAGER [NSFileManager defaultManager] // 文件管理者" >>$macrosPathecho "#define JH_SANDBOX_DOCUMENTS_PATH [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] // sandbox中documents文件夹路径" >>$macrosPathecho "#define JH_SANDBOX_LOG_DERECTORY [JH_SANDBOX_DOCUMENTS_PATH stringByAppendingPathComponent:@"JHLog"] // 日志缓存路径" >>$macrosPathecho "" >>$macrosPathecho "#endif /* JHMacros_h */" >>$macrosPathecho " JHMacros.h文件创建成功"# 初始化JHThirdMacros.hecho "7.创建JHThirdMacros.h文件..."macrosPath=$JHPath"/Expand/Macros/JHThirdMacros.h" # JHThirdMacros.h位置echo "//" >>$macrosPathecho "// JH第三方SDK宏定义" >>$macrosPathecho "// JHThridMacros.h" >>$macrosPathecho "// "$projectName >>$macrosPathecho "//" >>$macrosPathecho "// Created by JH on $(date +%m/%d/%y)." >>$macrosPathecho "// Copyright © 2016 JH. All rights reserved." >>$macrosPathecho "//" >>$macrosPathecho "" >>$macrosPathecho "#ifndef JHThridMacros_h" >>$macrosPathecho "#define JHThridMacros_h" >>$macrosPathecho "" >>$macrosPathecho "" >>$macrosPathecho "#endif /* JHThridMacros_h */" >>$macrosPathecho " JHThirdMacros.h文件创建成功"# 初始化应用<ProjectName>Macros.hif [[ $projectName != "" ]]; then echo "8.创建JH"$projectName"Macros.h文件..." macrosPath=$JHPath"/Expand/Macros/JH"$projectName"Macros.h" # JH<ProjectName>Macros.h位置 echo "//" >>$macrosPath echo "// 本应用("$projectName")宏定义" >>$macrosPath echo "// JH"$projectName"Macros.h" >>$macrosPath echo "// "$projectName >>$macrosPath echo "//" >>$macrosPath echo "// Created by JH on $(date +%m/%d/%y)." >>$macrosPath echo "// Copyright © 2016 JH. All rights reserved." >>$macrosPath echo "//" >>$macrosPath echo "" >>$macrosPath echo "#ifndef JH"$projectName"Macros_h" >>$macrosPath echo "#define JH"$projectName"Macros_h" >>$macrosPath echo "" >>$macrosPath echo "" >>$macrosPath echo "#endif /* JH"$projectName"Macros_h */" >>$macrosPath echo " JH"$projectName"Macros.h文件创建成功"fi# 创建模块文件夹echo "9.创建模块文件夹..."for module in $modulesdo if [[ ${module} != "Array" && ${module} != "{" && ${module} != "}" ]]; then mkdir $JHPath"/Main/"$module mkdir $JHPath"/Main/"$module"/Controller" mkdir $JHPath"/Main/"$module"/View" mkdir $JHPath"/Main/"$module"/View/Cell" mkdir $JHPath"/Main/"$module"/View/SubView" mkdir $JHPath"/Main/"$module"/Model" mkdir $JHPath"/Main/"$module"/Other" mkdir $JHPath"/Main/"$module"/Protocal" mkdir $JHPath"/Main/"$module"/Service" mkdir $JHPath"/Resource/Image/"$module.xcassets fidoneecho " 模块文件夹创建成功!"echo ""echo "-------------------------------------"echo "- 初始化JH iOS框架完成 -"echo "-------------------------------------"echo ""
- iOS--项目目录组织及生成脚本
- iOS项目目录结构组织的一些总结
- 项目管理-项目组织
- 项目管理-项目组织
- Golang项目目录结构组织
- C++项目目录组织结构
- Golang项目目录结构组织
- C++项目目录组织结构
- Qt项目工程目录组织
- WINCE600的目录组织及PQOAL
- WINCE600的目录组织及PQOAL
- WinCE6.0的目录组织及PQOAL
- WinCE6.0的目录组织及PQOAL
- WINCE600的目录组织及PQOAL
- WINCE600的目录组织及PQOAL
- thinkPHP5 生成项目目录
- 项目组织的类型及特点
- iOS 项目目录结构
- yuekao=bean1
- CentOS6系统启动流程
- spring事务管理
- Spring声明式事务(Annotation注解方式)
- java处理Excel相关笔记
- iOS--项目目录组织及生成脚本
- windows下生成github ssh key详解
- PHP安裝使用說明
- 五位数倒序
- 最少交换次数
- IE6无法识别png js 代码
- WinXP下面安装配置客户端git
- RadioButton样式自定义
- 两个圆柱相交的体积 UVALive 5096 Volume