DYXCFrameworkBuilder 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 1af6467d63380ea871464c1a7787ccd9ebb765980a10f51de31f5171c1f6aa5e
4
+ data.tar.gz: 5a07af622ede9668a273afc49def2561cea4b5167e65df5f72ab6d3582eb7501
5
+ SHA512:
6
+ metadata.gz: 97f166e726f7f9d01f26225424c2c525623b6921c19294745ffc5c675b4386de323446c12a9116ad82a6f3d9b812244bd766bde70db4e18da9ecc11565a7a470
7
+ data.tar.gz: 790ce39b20ef473c2158561e48c0fa02f76fe74c7c433e811075b69e1721b4ed818381a9825fb93d8d4788142afd7f0d88254e8472546af08fd196af0916f4c7
data/.idea/.gitignore ADDED
@@ -0,0 +1,8 @@
1
+ # 默认忽略的文件
2
+ /shelf/
3
+ /workspace.xml
4
+ # 基于编辑器的 HTTP 客户端请求
5
+ /httpRequests/
6
+ # Datasource local storage ignored files
7
+ /dataSources/
8
+ /dataSources.local.xml
@@ -0,0 +1,72 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <module type="RUBY_MODULE" version="4">
3
+ <component name="ModuleRunConfigurationManager">
4
+ <shared />
5
+ </component>
6
+ <component name="NewModuleRootManager">
7
+ <content url="file://$MODULE_DIR$">
8
+ <sourceFolder url="file://$MODULE_DIR$/features" isTestSource="true" />
9
+ <sourceFolder url="file://$MODULE_DIR$/spec" isTestSource="true" />
10
+ <sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
11
+ </content>
12
+ <orderEntry type="jdk" jdkName="RVM: ruby-3.2.0" jdkType="RUBY_SDK" />
13
+ <orderEntry type="sourceFolder" forTests="false" />
14
+ <orderEntry type="library" scope="PROVIDED" name="CFPropertyList (v3.0.7, RVM: ruby-3.2.0) [gem]" level="application" />
15
+ <orderEntry type="library" scope="PROVIDED" name="activesupport (v6.1.7.10, RVM: ruby-3.2.0) [gem]" level="application" />
16
+ <orderEntry type="library" scope="PROVIDED" name="addressable (v2.8.7, RVM: ruby-3.2.0) [gem]" level="application" />
17
+ <orderEntry type="library" scope="PROVIDED" name="algoliasearch (v1.27.5, RVM: ruby-3.2.0) [gem]" level="application" />
18
+ <orderEntry type="library" scope="PROVIDED" name="aliyun-sdk (v0.8.0, RVM: ruby-3.2.0) [gem]" level="application" />
19
+ <orderEntry type="library" scope="PROVIDED" name="atomos (v0.1.3, RVM: ruby-3.2.0) [gem]" level="application" />
20
+ <orderEntry type="library" scope="PROVIDED" name="base64 (v0.2.0, RVM: ruby-3.2.0) [gem]" level="application" />
21
+ <orderEntry type="library" scope="PROVIDED" name="bundler (v2.1.4, RVM: ruby-3.2.0) [gem]" level="application" />
22
+ <orderEntry type="library" scope="PROVIDED" name="claide (v1.1.0, RVM: ruby-3.2.0) [gem]" level="application" />
23
+ <orderEntry type="library" scope="PROVIDED" name="cocoapods (v1.11.3, RVM: ruby-3.2.0) [gem]" level="application" />
24
+ <orderEntry type="library" scope="PROVIDED" name="cocoapods-core (v1.11.3, RVM: ruby-3.2.0) [gem]" level="application" />
25
+ <orderEntry type="library" scope="PROVIDED" name="cocoapods-deintegrate (v1.0.5, RVM: ruby-3.2.0) [gem]" level="application" />
26
+ <orderEntry type="library" scope="PROVIDED" name="cocoapods-downloader (v1.6.3, RVM: ruby-3.2.0) [gem]" level="application" />
27
+ <orderEntry type="library" scope="PROVIDED" name="cocoapods-plugins (v1.0.0, RVM: ruby-3.2.0) [gem]" level="application" />
28
+ <orderEntry type="library" scope="PROVIDED" name="cocoapods-project-gen (v0.2.5, RVM: ruby-3.2.0) [gem]" level="application" />
29
+ <orderEntry type="library" scope="PROVIDED" name="cocoapods-search (v1.0.1, RVM: ruby-3.2.0) [gem]" level="application" />
30
+ <orderEntry type="library" scope="PROVIDED" name="cocoapods-trunk (v1.6.0, RVM: ruby-3.2.0) [gem]" level="application" />
31
+ <orderEntry type="library" scope="PROVIDED" name="cocoapods-try (v1.2.0, RVM: ruby-3.2.0) [gem]" level="application" />
32
+ <orderEntry type="library" scope="PROVIDED" name="colored2 (v3.1.2, RVM: ruby-3.2.0) [gem]" level="application" />
33
+ <orderEntry type="library" scope="PROVIDED" name="concurrent-ruby (v1.3.5, RVM: ruby-3.2.0) [gem]" level="application" />
34
+ <orderEntry type="library" scope="PROVIDED" name="date (v3.4.1, RVM: ruby-3.2.0) [gem]" level="application" />
35
+ <orderEntry type="library" scope="PROVIDED" name="domain_name (v0.6.20240107, RVM: ruby-3.2.0) [gem]" level="application" />
36
+ <orderEntry type="library" scope="PROVIDED" name="escape (v0.0.4, RVM: ruby-3.2.0) [gem]" level="application" />
37
+ <orderEntry type="library" scope="PROVIDED" name="ethon (v0.16.0, RVM: ruby-3.2.0) [gem]" level="application" />
38
+ <orderEntry type="library" scope="PROVIDED" name="ffi (v1.17.0, RVM: ruby-3.2.0) [gem]" level="application" />
39
+ <orderEntry type="library" scope="PROVIDED" name="fourflusher (v2.3.1, RVM: ruby-3.2.0) [gem]" level="application" />
40
+ <orderEntry type="library" scope="PROVIDED" name="fuzzy_match (v2.0.4, RVM: ruby-3.2.0) [gem]" level="application" />
41
+ <orderEntry type="library" scope="PROVIDED" name="gh_inspector (v1.1.3, RVM: ruby-3.2.0) [gem]" level="application" />
42
+ <orderEntry type="library" scope="PROVIDED" name="http-accept (v1.7.0, RVM: ruby-3.2.0) [gem]" level="application" />
43
+ <orderEntry type="library" scope="PROVIDED" name="http-cookie (v1.0.8, RVM: ruby-3.2.0) [gem]" level="application" />
44
+ <orderEntry type="library" scope="PROVIDED" name="httpclient (v2.8.3, RVM: ruby-3.2.0) [gem]" level="application" />
45
+ <orderEntry type="library" scope="PROVIDED" name="i18n (v1.14.6, RVM: ruby-3.2.0) [gem]" level="application" />
46
+ <orderEntry type="library" scope="PROVIDED" name="json (v2.7.2, RVM: ruby-3.2.0) [gem]" level="application" />
47
+ <orderEntry type="library" scope="PROVIDED" name="logger (v1.7.0, RVM: ruby-3.2.0) [gem]" level="application" />
48
+ <orderEntry type="library" scope="PROVIDED" name="mime-types (v3.7.0, RVM: ruby-3.2.0) [gem]" level="application" />
49
+ <orderEntry type="library" scope="PROVIDED" name="mime-types-data (v3.2025.0805, RVM: ruby-3.2.0) [gem]" level="application" />
50
+ <orderEntry type="library" scope="PROVIDED" name="mini_portile2 (v2.8.9, RVM: ruby-3.2.0) [gem]" level="application" />
51
+ <orderEntry type="library" scope="PROVIDED" name="minitest (v5.25.1, RVM: ruby-3.2.0) [gem]" level="application" />
52
+ <orderEntry type="library" scope="PROVIDED" name="molinillo (v0.8.0, RVM: ruby-3.2.0) [gem]" level="application" />
53
+ <orderEntry type="library" scope="PROVIDED" name="nanaimo (v0.4.0, RVM: ruby-3.2.0) [gem]" level="application" />
54
+ <orderEntry type="library" scope="PROVIDED" name="nap (v1.1.0, RVM: ruby-3.2.0) [gem]" level="application" />
55
+ <orderEntry type="library" scope="PROVIDED" name="netrc (v0.11.0, RVM: ruby-3.2.0) [gem]" level="application" />
56
+ <orderEntry type="library" scope="PROVIDED" name="nkf (v0.2.0, RVM: ruby-3.2.0) [gem]" level="application" />
57
+ <orderEntry type="library" scope="PROVIDED" name="nokogiri (v1.18.9, RVM: ruby-3.2.0) [gem]" level="application" />
58
+ <orderEntry type="library" scope="PROVIDED" name="psych (v5.2.6, RVM: ruby-3.2.0) [gem]" level="application" />
59
+ <orderEntry type="library" scope="PROVIDED" name="public_suffix (v4.0.7, RVM: ruby-3.2.0) [gem]" level="application" />
60
+ <orderEntry type="library" scope="PROVIDED" name="racc (v1.8.1, RVM: ruby-3.2.0) [gem]" level="application" />
61
+ <orderEntry type="library" scope="PROVIDED" name="rake (v13.0.1, RVM: ruby-3.2.0) [gem]" level="application" />
62
+ <orderEntry type="library" scope="PROVIDED" name="rest-client (v2.1.0, RVM: ruby-3.2.0) [gem]" level="application" />
63
+ <orderEntry type="library" scope="PROVIDED" name="rexml (v3.3.8, RVM: ruby-3.2.0) [gem]" level="application" />
64
+ <orderEntry type="library" scope="PROVIDED" name="ruby-macho (v2.5.1, RVM: ruby-3.2.0) [gem]" level="application" />
65
+ <orderEntry type="library" scope="PROVIDED" name="rubyzip (v2.3.2, RVM: ruby-3.2.0) [gem]" level="application" />
66
+ <orderEntry type="library" scope="PROVIDED" name="stringio (v3.1.7, RVM: ruby-3.2.0) [gem]" level="application" />
67
+ <orderEntry type="library" scope="PROVIDED" name="typhoeus (v1.4.1, RVM: ruby-3.2.0) [gem]" level="application" />
68
+ <orderEntry type="library" scope="PROVIDED" name="tzinfo (v2.0.6, RVM: ruby-3.2.0) [gem]" level="application" />
69
+ <orderEntry type="library" scope="PROVIDED" name="xcodeproj (v1.27.0, RVM: ruby-3.2.0) [gem]" level="application" />
70
+ <orderEntry type="library" scope="PROVIDED" name="zeitwerk (v2.6.13, RVM: ruby-3.2.0) [gem]" level="application" />
71
+ </component>
72
+ </module>
data/.idea/misc.xml ADDED
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectRootManager" version="2" project-jdk-name="RVM: ruby-2.7.2 [global]" project-jdk-type="RUBY_SDK" />
4
+ </project>
data/.idea/modules.xml ADDED
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectModuleManager">
4
+ <modules>
5
+ <module fileurl="file://$PROJECT_DIR$/.idea/DYXCFrameworkBuilder.iml" filepath="$PROJECT_DIR$/.idea/DYXCFrameworkBuilder.iml" />
6
+ </modules>
7
+ </component>
8
+ </project>
data/.idea/vcs.xml ADDED
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="VcsDirectoryMappings">
4
+ <mapping directory="" vcs="Git" />
5
+ </component>
6
+ </project>
data/ARCHITECTURE.md ADDED
@@ -0,0 +1,163 @@
1
+ # DYXCFrameworkBuilder 架构说明
2
+
3
+ ## 项目结构
4
+
5
+ ```
6
+ DYXCFrameworkBuilder/
7
+ ├── lib/
8
+ │ ├── DYXCFrameworkBuilder.rb # 主入口点,提供向后兼容的API
9
+ │ └── DYXCFrameworkBuilder/
10
+ │ ├── version.rb # 版本信息
11
+ │ ├── config.rb # YAML配置解析器
12
+ │ ├── builder.rb # 主构建器门面类
13
+ │ ├── xcframework_builder.rb # 核心XCFramework构建逻辑
14
+ │ ├── podspec_parser.rb # .podspec文件解析器
15
+ │ ├── yaml_generator.rb # YAML配置文件生成器
16
+ │ ├── framework_podspec_generator.rb # 框架发布用podspec生成器
17
+ │ └── framework_publisher.rb # 私有仓库发布器
18
+ ├── bin/
19
+ │ └── builder # 命令行入口点
20
+ └── README.md # 使用说明
21
+ ```
22
+
23
+ ## 类结构和职责
24
+
25
+ ### 1. `DYXCFrameworkBuilder::XCFrameworkBuilder` (主入口)
26
+ - **位置**: `lib/DYXCFrameworkBuilder.rb`
27
+ - **职责**: 提供向后兼容的API,委托给Builder类
28
+ - **方法**:
29
+ - `initialize(options)` - 初始化,创建Builder实例
30
+ - `build()` - 执行构建,委托给Builder
31
+ - `self.create_config_template(path)` - 创建配置模板
32
+
33
+ ### 2. `DYXCFrameworkBuilder::Builder` (构建协调器)
34
+ - **位置**: `lib/DYXCFrameworkBuilder/builder.rb`
35
+ - **职责**: 协调整个构建过程,处理配置加载和构建策略选择
36
+ - **方法**:
37
+ - `initialize(options)` - 加载配置
38
+ - `build()` - 根据配置类型选择构建策略
39
+ - `load_configuration()` - 加载YAML配置或创建简单配置
40
+ - `build_from_config()` - 使用配置文件构建
41
+ - `build_from_options()` - 使用命令行参数构建(向后兼容)
42
+
43
+ ### 3. `DYXCFrameworkBuilder::Config` (配置解析器)
44
+ - **位置**: `lib/DYXCFrameworkBuilder/config.rb`
45
+ - **职责**: 解析和验证YAML配置文件
46
+ - **方法**:
47
+ - `initialize(yaml_path)` - 从YAML文件加载配置
48
+ - `self.create_template(path)` - 创建配置文件模板
49
+ - `parse_config(config)` - 解析配置数据
50
+ - `validate_config()` - 验证配置有效性
51
+
52
+ ### 4. `DYXCFrameworkBuilder::CoreBuilder` (核心构建器)
53
+ - **位置**: `lib/DYXCFrameworkBuilder/xcframework_builder.rb`
54
+ - **职责**: 包含所有核心XCFramework构建逻辑
55
+ - **主要方法**:
56
+ - `build()` - 主构建流程
57
+ - `build_for_platform(sdk, platform_config)` - 为特定平台构建
58
+ - `build_archive_command()` - 生成xcodebuild命令
59
+ - `create_framework_from_archives()` - 从archive创建framework
60
+ - `create_universal_framework()` - 创建通用二进制
61
+ - `create_xcframework()` - 创建最终的XCFramework
62
+ - `find_framework_in_archive()` - 在archive中查找framework
63
+
64
+ ### 5. `DYXCFrameworkBuilder::SimpleConfig` (简单配置)
65
+ - **位置**: `lib/DYXCFrameworkBuilder/builder.rb`
66
+ - **职责**: 为命令行参数提供配置对象,保持向后兼容
67
+ - **特点**: 提供默认的平台配置,简化直接参数使用
68
+
69
+ ### 6. `DYXCFrameworkBuilder::PodspecParser` (Podspec解析器)
70
+ - **位置**: `lib/DYXCFrameworkBuilder/podspec_parser.rb`
71
+ - **职责**: 解析.podspec文件,提取构建所需的信息
72
+ - **方法**:
73
+ - `initialize(podspec_path)` - 初始化并解析podspec文件
74
+ - `find_workspace_path()` - 在Example目录中查找workspace文件
75
+ - `to_yaml_config()` - 生成YAML配置数据结构
76
+
77
+ ### 7. `DYXCFrameworkBuilder::YamlGenerator` (YAML生成器)
78
+ - **位置**: `lib/DYXCFrameworkBuilder/yaml_generator.rb`
79
+ - **职责**: 根据podspec解析结果生成YAML配置文件
80
+ - **方法**:
81
+ - `generate(custom_output_path)` - 生成YAML文件
82
+ - `self.generate_from_podspec(podspec_path, output_path)` - 静态方法,一步完成解析和生成
83
+
84
+ ## 数据流
85
+
86
+ ```
87
+ 命令行/API调用
88
+
89
+ XCFrameworkBuilder (主入口)
90
+
91
+ Builder (协调器)
92
+
93
+ Config (配置解析) ←→ YAML文件
94
+
95
+ CoreBuilder (核心构建器)
96
+
97
+ xcodebuild命令执行
98
+
99
+ .xcframework文件
100
+ ```
101
+
102
+ ## 核心构建流程
103
+
104
+ 1. **配置加载**: 从YAML文件或命令行参数加载配置
105
+ 2. **平台构建**: 为每个目标平台(iOS设备、模拟器)构建framework
106
+ - 为每个架构创建archive
107
+ - 从archive提取framework
108
+ - 如果有多个架构,创建通用二进制
109
+ 3. **XCFramework创建**: 使用xcodebuild将所有platform framework合并为XCFramework
110
+ 4. **清理**: 删除中间文件,保留最终的.xcframework
111
+
112
+ ## 特性
113
+
114
+ - ✅ **模块化设计**: 每个类都有明确的职责
115
+ - ✅ **可扩展**: 容易添加新平台或构建选项
116
+ - ✅ **错误处理**: 完整的错误处理和日志记录
117
+ - ✅ **向后兼容**: 保持原有API不变
118
+ - ✅ **配置驱动**: 支持YAML配置文件和命令行参数
119
+ - ✅ **智能项目支持**: 自动识别.xcworkspace和.xcodeproj文件
120
+ - ✅ **跳过警告**: 自动配置编译器跳过警告
121
+ - ✅ **多架构支持**: 支持通用二进制创建
122
+
123
+ ## 扩展点
124
+
125
+ ## 🎉 新增功能: Podspec集成
126
+
127
+ 从版本更新后,工具新增了从`.podspec`文件自动生成配置的功能:
128
+
129
+ ### 特性
130
+ - ✅ **自动解析**: 从podspec文件提取name、version、deployment_target等信息
131
+ - ✅ **智能查找**: 自动在Example/目录下查找.xcworkspace文件
132
+ - ✅ **一键生成**: 生成完整的YAML配置文件,无需手动编写
133
+ - ✅ **同级输出**: 配置文件生成在podspec文件同级目录
134
+ - ✅ **元数据追踪**: 在配置中保存podspec来源信息
135
+
136
+ ### 使用方法
137
+ ```bash
138
+ # 从podspec生成配置文件
139
+ bundle exec builder --from-podspec MyLibrary.podspec
140
+
141
+ # 然后直接使用生成的配置构建
142
+ bundle exec builder -f build_config.yml -v
143
+ ```
144
+
145
+ ### 目录结构要求
146
+ ```
147
+ MyLibrary.podspec # 源podspec文件
148
+ Example/
149
+ ├── MyLibrary.xcworkspace # 工具会自动查找这个文件
150
+ └── ...
151
+ build_config.yml # 自动生成的配置文件
152
+ build/ # 构建输出目录
153
+ └── MyLibrary.xcframework # 最终输出的xcframework
154
+ ```
155
+
156
+ ## 扩展点
157
+
158
+ 如果需要添加新功能,可以在以下位置扩展:
159
+
160
+ 1. **新平台支持**: 在`CoreBuilder#build_for_platform`中添加新的SDK处理
161
+ 2. **新配置选项**: 在`Config`类中添加新的配置字段
162
+ 3. **构建后处理**: 在`CoreBuilder#create_xcframework`后添加处理步骤
163
+ 4. **自定义构建命令**: 修改`build_archive_command`方法
data/Gemfile ADDED
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ # Specify your gem's dependencies in DYXCFrameworkBuilder.gemspec
6
+ gemspec
7
+
8
+ gem "rake", "~> 13.0"
9
+ gem 'cocoapods-project-gen'
10
+ gem 'aliyun-sdk'
data/Gemfile.lock ADDED
@@ -0,0 +1,143 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ DYXCFrameworkBuilder (0.1.0)
5
+ aliyun-sdk (~> 0.8.0)
6
+ psych (~> 5.0)
7
+ rubyzip (~> 2.3)
8
+
9
+ GEM
10
+ remote: https://rubygems.org/
11
+ specs:
12
+ CFPropertyList (3.0.7)
13
+ base64
14
+ nkf
15
+ rexml
16
+ activesupport (6.1.7.10)
17
+ concurrent-ruby (~> 1.0, >= 1.0.2)
18
+ i18n (>= 1.6, < 2)
19
+ minitest (>= 5.1)
20
+ tzinfo (~> 2.0)
21
+ zeitwerk (~> 2.3)
22
+ addressable (2.8.7)
23
+ public_suffix (>= 2.0.2, < 7.0)
24
+ algoliasearch (1.27.5)
25
+ httpclient (~> 2.8, >= 2.8.3)
26
+ json (>= 1.5.1)
27
+ aliyun-sdk (0.8.0)
28
+ nokogiri (~> 1.6)
29
+ rest-client (~> 2.0)
30
+ atomos (0.1.3)
31
+ base64 (0.2.0)
32
+ claide (1.1.0)
33
+ cocoapods (1.11.3)
34
+ addressable (~> 2.8)
35
+ claide (>= 1.0.2, < 2.0)
36
+ cocoapods-core (= 1.11.3)
37
+ cocoapods-deintegrate (>= 1.0.3, < 2.0)
38
+ cocoapods-downloader (>= 1.4.0, < 2.0)
39
+ cocoapods-plugins (>= 1.0.0, < 2.0)
40
+ cocoapods-search (>= 1.0.0, < 2.0)
41
+ cocoapods-trunk (>= 1.4.0, < 2.0)
42
+ cocoapods-try (>= 1.1.0, < 2.0)
43
+ colored2 (~> 3.1)
44
+ escape (~> 0.0.4)
45
+ fourflusher (>= 2.3.0, < 3.0)
46
+ gh_inspector (~> 1.0)
47
+ molinillo (~> 0.8.0)
48
+ nap (~> 1.0)
49
+ ruby-macho (>= 1.0, < 3.0)
50
+ xcodeproj (>= 1.21.0, < 2.0)
51
+ cocoapods-core (1.11.3)
52
+ activesupport (>= 5.0, < 7)
53
+ addressable (~> 2.8)
54
+ algoliasearch (~> 1.0)
55
+ concurrent-ruby (~> 1.1)
56
+ fuzzy_match (~> 2.0.4)
57
+ nap (~> 1.0)
58
+ netrc (~> 0.11)
59
+ public_suffix (~> 4.0)
60
+ typhoeus (~> 1.0)
61
+ cocoapods-deintegrate (1.0.5)
62
+ cocoapods-downloader (1.6.3)
63
+ cocoapods-plugins (1.0.0)
64
+ nap
65
+ cocoapods-project-gen (0.2.5)
66
+ cocoapods (~> 1.11.3)
67
+ cocoapods-search (1.0.1)
68
+ cocoapods-trunk (1.6.0)
69
+ nap (>= 0.8, < 2.0)
70
+ netrc (~> 0.11)
71
+ cocoapods-try (1.2.0)
72
+ colored2 (3.1.2)
73
+ concurrent-ruby (1.3.5)
74
+ date (3.4.1)
75
+ domain_name (0.6.20240107)
76
+ escape (0.0.4)
77
+ ethon (0.16.0)
78
+ ffi (>= 1.15.0)
79
+ ffi (1.17.0)
80
+ fourflusher (2.3.1)
81
+ fuzzy_match (2.0.4)
82
+ gh_inspector (1.1.3)
83
+ http-accept (1.7.0)
84
+ http-cookie (1.0.8)
85
+ domain_name (~> 0.5)
86
+ httpclient (2.8.3)
87
+ i18n (1.14.6)
88
+ concurrent-ruby (~> 1.0)
89
+ json (2.7.2)
90
+ logger (1.7.0)
91
+ mime-types (3.7.0)
92
+ logger
93
+ mime-types-data (~> 3.2025, >= 3.2025.0507)
94
+ mime-types-data (3.2025.0805)
95
+ mini_portile2 (2.8.9)
96
+ minitest (5.25.1)
97
+ molinillo (0.8.0)
98
+ nanaimo (0.4.0)
99
+ nap (1.1.0)
100
+ netrc (0.11.0)
101
+ nkf (0.2.0)
102
+ nokogiri (1.18.9)
103
+ mini_portile2 (~> 2.8.2)
104
+ racc (~> 1.4)
105
+ psych (5.2.6)
106
+ date
107
+ stringio
108
+ public_suffix (4.0.7)
109
+ racc (1.8.1)
110
+ rake (13.0.1)
111
+ rest-client (2.1.0)
112
+ http-accept (>= 1.7.0, < 2.0)
113
+ http-cookie (>= 1.0.2, < 2.0)
114
+ mime-types (>= 1.16, < 4.0)
115
+ netrc (~> 0.8)
116
+ rexml (3.3.8)
117
+ ruby-macho (2.5.1)
118
+ rubyzip (2.3.2)
119
+ stringio (3.1.7)
120
+ typhoeus (1.4.1)
121
+ ethon (>= 0.9.0)
122
+ tzinfo (2.0.6)
123
+ concurrent-ruby (~> 1.0)
124
+ xcodeproj (1.27.0)
125
+ CFPropertyList (>= 2.3.3, < 4.0)
126
+ atomos (~> 0.1.3)
127
+ claide (>= 1.0.2, < 2.0)
128
+ colored2 (~> 3.1)
129
+ nanaimo (~> 0.4.0)
130
+ rexml (>= 3.3.6, < 4.0)
131
+ zeitwerk (2.6.13)
132
+
133
+ PLATFORMS
134
+ ruby
135
+
136
+ DEPENDENCIES
137
+ DYXCFrameworkBuilder!
138
+ aliyun-sdk
139
+ cocoapods-project-gen
140
+ rake (~> 13.0)
141
+
142
+ BUNDLED WITH
143
+ 2.1.4