# JKConsole **Repository Path**: jk14138/JKConsole ## Basic Information - **Project Name**: JKConsole - **Description**: 已经被JKTools代替!!!!!!! - **Primary Language**: Objective-C - **License**: EPL-1.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-06-19 - **Last Updated**: 2025-08-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README [TOC] **一套好的工程管理方案,让你的项目结构更清晰,扩展更方便。** 虽然不太懂为啥,但是必须冠吾名之前缀**JK**,哈哈哈。 JKConsole是一个简单的、分散的 [Cocoa](http://www.oschina.net/p/cocoa) 管理器。初衷:寻个可以实现**插件式、隐蔽、可快速迭代**的简单的工程管理工具。 #### 一、JKConsole 需要Project的目录结构: //----------------------------------------//---------------------------------------// ```css Demo ├── //项目根目录 ├── Demo.xcodeproj ├── Module //子项目Module存放路径 │ ├── builds //子项目Module编译后framework/.a存放路径 │ │ ├── A.framework │ │ ├── B.framework │ ├── checkouts //子项目Module代码存放路径 │ │ ├──A │ │ │ ├── //子项目A根目录 │ │ │ └── A.xcodeproj │ │ ├──B │ │ │ ├── //子项目B根目录 │ │ │ └── B.xcodeproj ├── Modulefile //子项目Module配置 └── Modulefile.recordList //子项目Module编译顺序【无需手动编辑,build时会自动根据工程引入顺序排序】 ``` //----------------------------------------//---------------------------------------// #### 二、JKConsole 提供项目Framework私有库以下功能: 1、**cloneProject** 克隆整个项目 扩展参数,**-u**:【git地址】,**-p**:【clone到位置】,**-b**:【分支名称】 示例:`JKConsole cloneProject -u=https://XXX.git -p=/XXX/XXX -b=master` 2、**clone** 【执行目录:项目/子项目根目录】 遍历 Modulefile 及内部引用,克隆全部Framework仓库至子文件夹:/Module/checkouts/ 下 示例:`JKConsole clone` 3、**pull** 根据所在目录不同【项目根目录|Framework根目录】,pull单个工程 示例:`JKConsole clone` 4、**pull_all** pull 整个项目 示例:`JKConsole pull_all` 5、**add_tag** 给整个项目添加一个 tag,扩展参数,-v:【tag】 示例:`JKConsole add_tag -v=v1.0.0` 6、**del_tag** 给整个项目删除一个 tag,扩展参数,-v:【tag】 示例:`JKConsole del_tag -v=v1.0.0` 7、**build** 【执行目录:项目/子项目根目录】 根据所在目录不同【项目根目录|Framework根目录】,编译【全部|单个Framework】扩展参数,**-c**:【是否使用cache默认true】,**-m**:【Debug(x86_64 arm64 armv7)|Release(arm64 armv7)】 示例:`JKConsole build -c=true` 8、**buildStatic **【执行目录:项目/子项目根目录】 根据所在目录不同【项目根目录|.a根目录】,编译【全部|单个.a】,**-m**:【Debug(x86_64 arm64 armv7)|Release(arm64 armv7)】 示例:`JKConsole buildStatic` 其他 9、**archive **【执行目录:项目根目录】 归档ipa包,扩展参数**-m**:【Debug|Release】,**-t**:【target名称】,**-e**:【默认export.plist】 `JKConsole archive -m=Debug -t=targetName -e=export.plist` 10、**upload **【执行目录:在项目根目录】 上传ipa包至fir平台,扩展参数,**-t**:【target名称】,**-d**:【描述】请提前配置好fir账号 示例:`JKConsole upload -t=targetName -d=这是个app` 11、**oneKeyUpload **【执行目录:项目根目录】 上传ipa包至fir平台,扩展参数,**-t**:【target名称】,**-m**:【Debug|Release】,**-c**:【是否使用cache默认true】,**-d**:【描述】请提前配置好fir账号,**-e**:【默认export.plist】 示例:`JKConsole oneKeyUpload -t=targetName -m=Debug -d=这是个app -e=export.plist` #### 三、快速使用JKConsole: `[clone JKConsole工程] [command + B JKConsole工程]` 【编译JKConsole 会自动将命令行工具复制到/usr/local/bin/】 #### 四、项目(app/framework/.a)应用构建实例: 1、在项目根目录下创建Modulefile文件: 1.1、编辑Modulefile文件 引入framework代码库: `git "https://a.git" "master"` 2、拉取所有framework代码库,在项目根目录下执行: `JKConsole clone` 3、编译framework,在项目根目录下执行: `JKConsole build` *注意:不要手动编辑Modulefile.recordList,build时会自动根据工程引入顺序排序* 4、引入编译后的.framework 4.1、`Add file to "Demo"...` framework的依赖,无需此步骤 4.2、`Demo---->TARGETS---->Build Setting---->Framework Search Paths [$(PROJECT_DIR)/Module/Builds]` #### 五、注意事项: 1、本目录结构,支持项目对framework的依赖,支持framework对framework的依赖。framework中如果存在bundle,务必使用{ProjectName}Bundle 的命名方式,build将会自动将bundle打入.framework中。 2、本工具在app管理中,可与Cocoapods,Carthage配合使用,如果framework中使用了Carthage或者第三方库,务必在应用app中对Carthage或者第三方库重新应用,本工具仅处理自身对应的.framework/.a工程 3、使用 “其他”中的命令,请保证项目根目录下存在:`export.plist` 3、本工具只支持 iOS,不支持 mac、watch 项目编译。 4、如果framework带有分类(category): `Build Setting —- Other linker Flags` (增加`-all_load` 或者 `-ObjC`) 5、支持Bitcode 工程需要支持bitcode 需要在`Other C Flags` 里加上 `-fembed-bitcode` 或者:`Target--Build Setting -- Enable Bitcode = yes` 6、本文禁止转载,谢谢 工程中引用[Colors](https://github.com/paulot/Colors) & [shellOut](https://github.com/JohnSundell/ShellOut)了两个git开源代码。 欢迎优化&扩展。