fir-cli 2.0.22 → 2.0.24

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: 77e9cba516478be239dcf9a96ee35f2a70d7da8871344a535d8de295ec32c4da
4
- data.tar.gz: 19dd18244a059ee6aea0437b0e932d0dc483103fa52b4dfcf6b1f3c554e823bb
3
+ metadata.gz: 780261ddc58b3e97a74409054acc6873d510c9f56651374f1430f94cb97fd779
4
+ data.tar.gz: cb715ab080b9d6b87d6d804daae6ea88f91e870081003b555ca639e71a6ce5de
5
5
  SHA512:
6
- metadata.gz: 8f72df72c72976e596d68a9b6c3b13afca9f5656253d295de2330b46d3fb44a7399894abe34b292ebffbcb408a2da1c6459160de73fd33b20b52af0140a8a1c1
7
- data.tar.gz: d7bd5babd00854b4bcca761b283b2228fcc8970b47754436e3c9899ea750111309a449a7191d78893ab9a3c4ee16e8fa5012b57da4b2af9ffca8680a120c549d
6
+ metadata.gz: a18e89e1da15843183dbe1a14a16ccbfe9a09914e924f2b3b9b73867bb7b813f30d2430df6a1f7471a2a90465e139f545af5586040f18c69d4c5ca6120d897ad
7
+ data.tar.gz: 6ab8bbc3b9d15fbbcaacdb46a8eeb13a04e33fa00f5e09f68d5217f8736bfa07efbec7c490c7b29425d7c41b2a69a7d36520ae721e52bea2b6440d43138e6f3c
data/Gemfile CHANGED
@@ -8,3 +8,7 @@ end
8
8
  # Specify your gem's dependencies in fir.gemspec
9
9
  gemspec
10
10
  gem 'codeclimate-test-reporter', group: :test, require: nil
11
+
12
+ # Fix compatibility with Ruby 3.2.2
13
+ # mime-types 3.2.2 uses _1, _2, _3 as parameter names which are reserved in Ruby 2.7+
14
+ gem 'mime-types', '>= 3.3.0'
data/README.md CHANGED
@@ -19,6 +19,8 @@ fir.im-cli 可以通过指令查看, 上传, iOS/Android 应用.
19
19
  - 我们也提供 docker 版本的 fir-cli, 具体使用方式参见 **Docker 运行 fir-cli** 章节
20
20
 
21
21
  # 最近更新
22
+ - (2.0.24) 修复部分 APK 包含非法 XML 控制字符导致解析失败的问题
23
+ - (2.0.23) 增强上传稳定性
22
24
  - (2.0.22) 支持自定义下载文件名称 --user_download_file_name=具体文件名称 注意, 此参数无法与switch_to_qiniu 一起使用
23
25
  - (2.0.21) 修正 publish 的结果不返回导致 fastlane-plugin-fir_cli 命令执行结果为nil 的问题
24
26
  - (2.0.20) 新增参数 --save_uploaded_info, 可以将上传的结果存入当前目录下的 fir-cli-upload-info.json 文件中, 方便集成其他功能
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Fix for rest-client 2.1.0 compatibility with Ruby 2.6/2.7
4
+ # The bug: In some cases, @response is a String instead of a response object,
5
+ # causing NoMethodError when calling @response.code in http_code method.
6
+ #
7
+ # See: https://github.com/rest-client/rest-client/issues/...
8
+ module RestClient
9
+ class Exception
10
+ def http_code
11
+ # return integer for compatibility
12
+ if @response
13
+ # Handle case where @response is a String (e.g., "401 Unauthorized")
14
+ # or when @response is a proper response object
15
+ code = if @response.respond_to?(:code)
16
+ @response.code
17
+ else
18
+ @response.to_s[/\d{3}/]
19
+ end
20
+ code.to_i
21
+ else
22
+ @initial_response_code
23
+ end
24
+ end
25
+ end
26
+ end
data/lib/fir/patches.rb CHANGED
@@ -9,3 +9,4 @@ require_relative './patches/os_patch'
9
9
  require_relative './patches/try'
10
10
  require_relative './patches/default_headers'
11
11
  require_relative './patches/progress'
12
+ require_relative './patches/rest_client_fix'
@@ -70,6 +70,10 @@ module FIR
70
70
  t = Time.now
71
71
  http = Net::HTTP.new(hostname, 443)
72
72
  http.use_ssl = true
73
+ # 根据环境变量配置SSL证书验证
74
+ unless ENV['UPLOAD_VERIFY_SSL']
75
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
76
+ end
73
77
  req = Net::HTTP::Put.new(uri.request_uri, headers)
74
78
  req.content_length = io.size
75
79
  req.body_stream = io
@@ -1,6 +1,25 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative './common'
4
+
5
+ # Monkey patch to fix illegal character issues in AXML parsing
6
+ # Some APKs contain control characters in strings that REXML cannot handle
7
+ module Android
8
+ class AXMLParser
9
+ alias_method :original_parse_strings, :parse_strings
10
+
11
+ def parse_strings
12
+ original_parse_strings
13
+ # Remove illegal XML control characters from strings
14
+ @strings = @strings.map do |str|
15
+ next str unless str.is_a?(String)
16
+ # Keep only valid XML characters: #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
17
+ str.gsub(/[^\x09\x0A\x0D\x20-\uD7FF\uE000-\uFFFD]/, '')
18
+ end
19
+ end
20
+ end
21
+ end
22
+
4
23
  module FIR
5
24
  module Parser
6
25
  class Apk
@@ -18,13 +37,18 @@ module FIR
18
37
  end
19
38
 
20
39
  def basic_info
21
- @basic_info ||= {
22
- type: 'android',
23
- name: fetch_label,
24
- identifier: @apk.manifest.package_name,
25
- build: @apk.manifest.version_code.to_s,
26
- version: @apk.manifest.version_name.to_s
27
- }
40
+ @basic_info ||= begin
41
+ manifest = @apk.manifest
42
+ raise 'Failed to parse AndroidManifest.xml. The APK may be corrupted, repacked, or contain unsupported characters.' unless manifest
43
+
44
+ {
45
+ type: 'android',
46
+ name: fetch_label,
47
+ identifier: manifest.package_name,
48
+ build: manifest.version_code.to_s,
49
+ version: manifest.version_name.to_s
50
+ }
51
+ end
28
52
  @basic_info.reject! { |_k, v| v.nil? }
29
53
  @basic_info
30
54
  end
data/lib/fir/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module FIR
4
- VERSION = "2.0.22"
4
+ VERSION = "2.0.24"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fir-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.22
4
+ version: 2.0.24
5
5
  platform: ruby
6
6
  authors:
7
7
  - NaixSpirit
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2024-06-12 00:00:00.000000000 Z
12
+ date: 2026-03-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -226,6 +226,7 @@ files:
226
226
  - lib/fir/patches/native_patch.rb
227
227
  - lib/fir/patches/os_patch.rb
228
228
  - lib/fir/patches/progress.rb
229
+ - lib/fir/patches/rest_client_fix.rb
229
230
  - lib/fir/patches/try.rb
230
231
  - lib/fir/util.rb
231
232
  - lib/fir/util/ali_uploader.rb
@@ -290,7 +291,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
290
291
  - !ruby/object:Gem::Version
291
292
  version: '0'
292
293
  requirements: []
293
- rubygems_version: 3.4.6
294
+ rubygems_version: 3.1.6
294
295
  signing_key:
295
296
  specification_version: 4
296
297
  summary: fir.im command tool