pindo 5.10.4 → 5.10.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d1a37cd33906ccb091fe34db97b79126f3a0f7a2ef0011e5f0b989387320346b
4
- data.tar.gz: b134ad5e2dba8ad21427ef5da0878086f03d7a2593df45ec6f911273d4b943ad
3
+ metadata.gz: cd33392e14ce3170db5963cd77255bc0b4f2c008c79a01579d726f8ef93037d0
4
+ data.tar.gz: 61fe09946921347ad84bc991512b29a0eb64e23e470961ca579b6247d8bdf166
5
5
  SHA512:
6
- metadata.gz: 182dbe219fe39ca4316c7e8e9616187a059c6bd3e562528f118af4385ee6b371cc489a246e76237f656fee9a4d5239a9cd063ced3e0ab903aacf950f5f6ef273
7
- data.tar.gz: 4e3c8d87cd5c57b089234af2eecf686697f8360815db52aa3cbd23bcc68c617fa21e6e461cdfc3e4b16fbefd552a0722d5f9af2d1a5dd5e0dc1a860b7d46e4e7
6
+ metadata.gz: 9147ffd74728ab059dd4a5dbb760715735c29426c9746826ec65d01a19e411257a9e4b438e9c008bdfc3b757a759713023759fc8d8e23c190dc8f816bc31ec54
7
+ data.tar.gz: '05328944fb21eb8f33617fe20c3eb68992d8eacc29f04d847edcd1f78c0441d61f7120cace4449c898b62fc4c96f264c6390234d8a6e19d71a30e66109cf98b6'
@@ -3,12 +3,14 @@ require 'fileutils'
3
3
  require 'json'
4
4
  require 'xcodeproj'
5
5
  require 'gym'
6
+ require 'pindo/module/xcode/xcodebuildhelper'
6
7
 
7
8
  module Pindo
8
9
  class Command
9
10
  class Deploy < Command
10
11
  class Build < Deploy
11
12
 
13
+ include Pindo::XcodeBuildHelper
12
14
 
13
15
  self.summary = '编译工程'
14
16
 
@@ -22,7 +24,7 @@ module Pindo
22
24
 
23
25
  def self.options
24
26
  [
25
- ['--proj', '指定上传到pgyer对应的项目名称(大小写空格忽略),用法:pindo deploy build --proj=aichatv4'],
27
+ ['--proj', '指定上传到JPS对应的项目名称(大小写空格忽略),用法:pindo deploy build --proj=aichatv4'],
26
28
  ['--upload', '是否上传编译后的ipa(上传成功后会自动发送消息给自己), 用法:pindo deploy build --upload'],
27
29
  ['--send', '发送消息到项目群(注意:不带此参数也会发送给自己),用法:pindo deploy build --send'],
28
30
  ['--resign', '上传到之后是否重签名,用法:pindo deploy build --resign'],
@@ -72,6 +74,9 @@ module Pindo
72
74
  new_project_dir = Dir.pwd
73
75
  project_fullname = Dir.glob(File.join(new_project_dir, "/*.xcodeproj")).max_by {|f| File.mtime(f)}
74
76
 
77
+ # 修复 Xcode 16 链接器兼容性问题
78
+ fix_xcode16_linker_flags(project_dir: new_project_dir)
79
+
75
80
  if File.exist?(File.join(new_project_dir, "build"))
76
81
  FileUtils.rm_rf(File.join(new_project_dir, "build"))
77
82
  end
@@ -52,8 +52,8 @@ module Pindo
52
52
  ['--macos', 'macos平台证书'],
53
53
  ['--clean', '删除本地缓存的证书'],
54
54
  ['--cleangit', '删除远程仓库中的证书'],
55
- ['--upload', '生成上传pgyer的证书'],
56
- ['--match', '生成上传pgyer的证书'],
55
+ ['--upload', '生成上传JPS的证书'],
56
+ ['--match', '生成上传JPS的证书'],
57
57
  ['--renew', '重新生成证书']
58
58
  ].concat(super)
59
59
  end
@@ -53,7 +53,7 @@ module Pindo
53
53
  [
54
54
  ['--deploy', '默认用开发的bundle id,用法:pindo dev autobuild --deploy'],
55
55
  ['--adhoc', '默认用dev证书,使用--adhoc设置使用adhoc证书编译'],
56
- ['--proj', '指定上传到pgyer对应的项目名称(大小写空格忽略)'],
56
+ ['--proj', '指定上传到JPS对应的项目名称(大小写空格忽略)'],
57
57
  ['--upload', '是否上传编译后的ipa'],
58
58
  ['--send', '上传到之后是否发送测试信息'],
59
59
  ].concat(super)
@@ -42,7 +42,7 @@ module Pindo
42
42
 
43
43
  def self.options
44
44
  [
45
- ['--proj', '指定上传到pgyer对应的项目名称(大小写空格忽略),用法:pindo dev build --proj=aichatv4'],
45
+ ['--proj', '指定上传到JPS对应的项目名称(大小写空格忽略),用法:pindo dev build --proj=aichatv4'],
46
46
  ['--upload', '是否上传编译后的ipa, 用法:pindo dev build --upload'],
47
47
  ['--send', '上传到之后是否发送测试信息,用法:pindo dev build --send'],
48
48
  ].concat(super)
@@ -45,7 +45,7 @@ module Pindo
45
45
  # 命令的选项列表
46
46
  def self.options
47
47
  [
48
- # 指定上传到蒲公英的项目
48
+ # 指定上传到JPS的项目
49
49
  ['--proj', '指定上传到测试平台的项目名称'],
50
50
  # 上传编译包
51
51
  ['--upload', '上传编译后的ipa到测试平台'],
@@ -15,7 +15,7 @@ module Pindo
15
15
 
16
16
  include Appselect
17
17
  include Pindo::Githelper
18
- # 命令的简要说明 - 打包iOS工程并发布到蒲公英
18
+ # 命令的简要说明 - 打包iOS工程并发布到JPS
19
19
  self.summary = '打包iOS工程并发布到测试平台'
20
20
 
21
21
  # 启用缓存机制
@@ -42,7 +42,7 @@ module Pindo
42
42
  ['--deploy', '默认使用开发环境的bundle id,使用此选项切换为发布环境的bundle id'],
43
43
  ['--adhoc', '默认使用开发证书,使用此选项切换为adhoc证书'],
44
44
  ['--macos', '指定为macOS平台的证书'],
45
- ['--upload', '生成用于上传到蒲公英平台的证书'],
45
+ ['--upload', '生成用于上传到JPS平台的证书'],
46
46
  ].concat(super)
47
47
  end
48
48
 
@@ -41,8 +41,8 @@ module Pindo
41
41
  [
42
42
  ['--ipa', 'iap file name.'],
43
43
  ['--proj', '指定哪个项目(忽略大小写空格等等字符): --proj=\"prancksoundv4\"'],
44
- ['--upload', '编译完成后是否上传ipa到pyger: --upload'],
45
- ['--send', '上传到pgyer之后是否发送测试信息: --send'],
44
+ ['--upload', '编译完成后是否上传ipa到JPS: --upload'],
45
+ ['--send', '上传到JPS之后是否发送测试信息: --send'],
46
46
  ['--ipa', '强制指定重签名的ipa包,用法: --ipa=path/to/demo.ipa'],
47
47
  ['--dev', '使用dev证书,默认使用adhoc证书: --dev'],
48
48
  ['--test', '使用测试的bundle id, 默认是用发布bundle id,用法:--test'],
@@ -50,7 +50,7 @@ module Pindo
50
50
  ['--build', '修改完工程之后直接编译,用法:pindo ipa import --build'],
51
51
  ['--increase', '自动增加编译的app版本号,用法:pindo ipa import --increase'],
52
52
  ['--proj', '指定哪个项目(忽略大小写空格等等字符): --proj=\"prancksoundv4\"'],
53
- ['--upload', '编译完成后是否上传ipa到pyger: 用法:pindo ipa import --upload'],
53
+ ['--upload', '编译完成后是否上传ipa到JPS: 用法:pindo ipa import --upload'],
54
54
  ['--send', '上传到之后是否发送测试信息,用法:pindo ipa import --send'],
55
55
  ['--resign', '上传到之后是否发送测试信息,用法:pindo ipa import --resign'],
56
56
 
@@ -51,7 +51,7 @@ module Pindo
51
51
  def self.options
52
52
  [
53
53
  ['--proj', '指定哪个项目(忽略大小写空格等等字符): --proj=\"prancksoundv4\"'],
54
- ['--upload', '编译完成后是否上传ipa到pyger: 用法:pindo ipa output --upload'],
54
+ ['--upload', '编译完成后是否上传ipa到JPS: 用法:pindo ipa output --upload'],
55
55
  ['--send', '上传到之后是否发送测试信息,用法:pindo ipa output --send'],
56
56
  ['--increase', '自动增加编译的app版本号,用法:pindo ipa output --increase'],
57
57
 
@@ -36,7 +36,7 @@ module Pindo
36
36
 
37
37
  def self.options
38
38
  [
39
- ['--force', '强制重新登录pgyer'],
39
+ ['--force', '强制重新登录JPS'],
40
40
  ].concat(super)
41
41
  end
42
42
 
@@ -19,7 +19,7 @@ module Pindo
19
19
  - 支持iOS和Mac设备管理
20
20
  - 读取本地CSV文件的设备数据
21
21
  - 生成多种格式的设备列表
22
- - 兼容蒲公英平台的设备格式
22
+ - 兼容JPS平台的设备格式
23
23
  - 设备信息统一管理和对比
24
24
 
25
25
  使用示例:
@@ -29,7 +29,7 @@ module Pindo
29
29
  生成文件:
30
30
  - new_devices_list.txt - App Store格式的设备列表
31
31
  - new_user_devices_list.csv - 用户设备列表
32
- - new_pgyer_devices_list.csv - 蒲公英格式设备列表
32
+ - new_jps_devices_list.csv - JPS格式设备列表
33
33
  DESC
34
34
 
35
35
  class DeviceItem
@@ -199,7 +199,7 @@ DESC
199
199
 
200
200
  def write_apppgyer_csv(devices:nil)
201
201
 
202
- device_file = File.join(Dir.pwd, "new_pgyer_devices_list.csv");
202
+ device_file = File.join(Dir.pwd, "new_jps_devices_list.csv");
203
203
 
204
204
  devices.each do |key, item|
205
205
  if item.device_type.to_s.eql?("ipad")
@@ -231,7 +231,7 @@ DESC
231
231
  devices = {}
232
232
 
233
233
 
234
- device_file = File.join(Dir.pwd, "pgyer_devices_list.csv");
234
+ device_file = File.join(Dir.pwd, "jps_devices_list.csv");
235
235
  if File.exist?(device_file)
236
236
  line_num=0
237
237
  CSV.foreach(device_file, headers:false) do |row|
@@ -51,7 +51,7 @@ DESC
51
51
  [
52
52
 
53
53
  ['--fast', '快速更新证书,开发用bundle id只更新dev证书,发布bundle id只更新adhoc证书'],
54
- ['--upload', '生成上传pgyer的证书'],
54
+ ['--upload', '生成上传JPS的证书'],
55
55
  ['--fixedid', '重新更新bundle id的功能,检查bundle id的功能是否更新'],
56
56
  ['--renew', '重新生成证书']
57
57
  ].concat(super)
@@ -53,7 +53,7 @@ module Pindo
53
53
  def self.options
54
54
  [
55
55
  ['--bundleid', '指定打包的bundleID'],
56
- # 指定上传到蒲公英的项目
56
+ # 指定上传到JPS的项目
57
57
  ['--proj', '指定上传到测试平台的项目名称'],
58
58
  # 上传编译包
59
59
  ['--upload', '上传编译后的ipa到测试平台'],
@@ -292,20 +292,21 @@ module Pindo
292
292
  info_plist_dict = Xcodeproj::Plist.read_from_path(plist_file_name)
293
293
 
294
294
  if !icloud_id.nil?
295
-
295
+ # 需要设置 iCloud
296
296
  temp_value = {}
297
297
  if !info_plist_dict['NSUbiquitousContainers'].nil? && info_plist_dict['NSUbiquitousContainers'].is_a?(Hash)
298
298
  info_plist_dict['NSUbiquitousContainers'].each do |key, value|
299
299
  if key.include?("iCloud.")
300
300
  temp_value = value
301
- break;
301
+ break
302
302
  end
303
303
  end
304
304
  end
305
305
  info_plist_dict['NSUbiquitousContainers'] = {}
306
306
  info_plist_dict['NSUbiquitousContainers'][icloud_id] = temp_value || {}
307
307
  else
308
- info_plist_dict['NSUbiquitousContainers'] = nil
308
+ # 不需要 iCloud,删除键(如果存在)
309
+ info_plist_dict.delete('NSUbiquitousContainers')
309
310
  end
310
311
 
311
312
  Xcodeproj::Plist.write_to_path(info_plist_dict, plist_file_name)
@@ -424,7 +424,7 @@ module Pindo
424
424
 
425
425
 
426
426
  else
427
- raise Informative, "请先登录Pgyer网站"
427
+ raise Informative, "请先登录JPS网站"
428
428
  end
429
429
  @proj_name = upload_proj_name
430
430
  app_info_obj
@@ -893,7 +893,7 @@ module Pindo
893
893
 
894
894
  if app_info_list.nil?
895
895
  Funlog.instance.fancyinfo_error("拉取app信息列表失败!")
896
- raise Informative, "Pgyer网络数据异常!!!"
896
+ raise Informative, "JPS网络数据异常!!!"
897
897
  end
898
898
 
899
899
 
@@ -1061,11 +1061,11 @@ module Pindo
1061
1061
  puts
1062
1062
 
1063
1063
  if comment_str.nil? || comment_str.empty?
1064
- Funlog.instance.fancyinfo_error("没有找到git备注信息,无法修改pgyer备注!")
1064
+ Funlog.instance.fancyinfo_error("没有找到git备注信息,无法修改JPS备注!")
1065
1065
  else
1066
- Funlog.instance.fancyinfo_start("开始修复pgyer备注...")
1066
+ Funlog.instance.fancyinfo_start("开始修复JPS备注...")
1067
1067
  @pgyer_client.update_project_package(projectId:app_info_obj["id"], id:version_item_obj["id"], comment:comment_str.strip)
1068
- Funlog.instance.fancyinfo_start("pgyer备注已经修改!")
1068
+ Funlog.instance.fancyinfo_start("JPS备注已经修改!")
1069
1069
  end
1070
1070
 
1071
1071
 
@@ -318,6 +318,87 @@ module Pindo
318
318
 
319
319
  end
320
320
 
321
+ # 修复 Xcode 16 链接器兼容性问题
322
+ # 自动移除 -ld_classic 和 -ld64 标志
323
+ def fix_xcode16_linker_flags(project_dir: nil)
324
+ begin
325
+ # 查找所有 xcodeproj 文件
326
+ workspace_file = Dir.glob(File.join(project_dir, "*.xcworkspace")).first
327
+ project_files = []
328
+
329
+ if workspace_file && File.exist?(workspace_file)
330
+ # 如果存在 workspace,从中提取所有项目
331
+ workspace_data_file = File.join(workspace_file, "contents.xcworkspacedata")
332
+ if File.exist?(workspace_data_file)
333
+ require 'rexml/document'
334
+ doc = REXML::Document.new(File.read(workspace_data_file))
335
+ doc.elements.each('Workspace/FileRef') do |file_ref|
336
+ location = file_ref.attributes['location']
337
+ if location && location.start_with?('group:')
338
+ relative_path = location.sub('group:', '')
339
+ if relative_path.end_with?('.xcodeproj')
340
+ full_path = File.join(project_dir, relative_path)
341
+ project_files << full_path if File.exist?(full_path)
342
+ end
343
+ end
344
+ end
345
+ end
346
+ else
347
+ # 直接查找项目文件
348
+ project_files = Dir.glob(File.join(project_dir, "**/*.xcodeproj"))
349
+ end
350
+
351
+ return if project_files.empty?
352
+
353
+ fixed_count = 0
354
+
355
+ project_files.each do |project_path|
356
+ begin
357
+ project = Xcodeproj::Project.open(project_path)
358
+ project_modified = false
359
+
360
+ project.targets.each do |target|
361
+ target.build_configurations.each do |config|
362
+ ldflags = config.build_settings['OTHER_LDFLAGS']
363
+ next unless ldflags
364
+
365
+ original_flags = ldflags.dup
366
+
367
+ # 移除过时的链接器标志
368
+ if ldflags.is_a?(Array)
369
+ ldflags.delete('-ld_classic')
370
+ ldflags.delete('-ld64')
371
+ elsif ldflags.is_a?(String)
372
+ ldflags = ldflags.gsub(/-ld_classic|-ld64/, '').strip
373
+ end
374
+
375
+ if original_flags != ldflags
376
+ config.build_settings['OTHER_LDFLAGS'] = ldflags
377
+ project_modified = true
378
+ end
379
+ end
380
+ end
381
+
382
+ if project_modified
383
+ project.save
384
+ fixed_count += 1
385
+ end
386
+
387
+ rescue => e
388
+ # 静默处理错误,不中断构建
389
+ end
390
+ end
391
+
392
+ if fixed_count > 0
393
+ puts "✅ 修复 Xcode 16 链接器兼容性配置".green
394
+ end
395
+
396
+ rescue => error
397
+ puts "⚠️ 修复链接器标志时出现错误: #{error.message}".yellow
398
+ # 不中断构建流程
399
+ end
400
+ end
401
+
321
402
 
322
403
  end
323
404
 
data/lib/pindo/version.rb CHANGED
@@ -6,7 +6,7 @@ require 'time'
6
6
 
7
7
  module Pindo
8
8
 
9
- VERSION = "5.10.4"
9
+ VERSION = "5.10.6"
10
10
 
11
11
  class VersionCheck
12
12
  RUBYGEMS_API = 'https://rubygems.org/api/v1/gems/pindo.json'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pindo
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.10.4
4
+ version: 5.10.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - wade