cocoapods-byte-csjm 0.0.13 → 0.0.17

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: 860167d16235a2deb701a24ca9d7a575b5cdd609a2a48fd2b43ee3a7df3ef04a
4
- data.tar.gz: 3d10375c027f2122794acf229792c2d9163712dacf6ec1928f1f940bea1ebf2d
3
+ metadata.gz: 9cabfe6c655cbf23d67e618a57d5a78a6e78f50bffb9e424b86190706dd0239d
4
+ data.tar.gz: 531fd69060498b48d2cd818bc3d6992413fcae10b42e784dedb44f6842bf4851
5
5
  SHA512:
6
- metadata.gz: 03c17792565b7324c45e4bd1b2884006c122fc2881abcccf4a0127105a58b32cac002d348faadf36b4d3e61d5862a9d5b6fe4cdc5bb802b1bce0428c3356e60c
7
- data.tar.gz: 5ecef12a165b7a5a13783435076bb507547cfa5b70d79fd56723727565c6c2ae01f0c080eb48861e1d5e8c3f4ecf3f5ef417c19146492db5dfe304dd0a858157
6
+ metadata.gz: 96d85b34ea5758310823ce73fd1212549327b420b8b845bfbbf012038cf1d2c4599f6a9788f7ad40ee36d29cf49e6f4150ce370ac22aab02bfdf2b05073248b2
7
+ data.tar.gz: 6c9d34ecf30f2fae6384e7aba1ff0de0f231e6f623192008567812dfd123cf2156d5ec27f9bbc99fbd12abf54acd6ccfb2d99bb7bb3b5d7b5c9502cbde837029
@@ -1,4 +1,11 @@
1
+ require_relative 'net'
2
+
1
3
  module GM
4
+ module Beta
5
+ CSJ_RELEASE = 1
6
+ GM_RELEASE = 2
7
+ CSJ_BETA = 3
8
+ end
2
9
 
3
10
  class BuildConfig
4
11
 
@@ -19,7 +26,7 @@ module GM
19
26
  end
20
27
 
21
28
  def self.update_value_last_version
22
- return "last" ## 最新版本
29
+ return "last" ## 最新版本
23
30
  end
24
31
 
25
32
  def self.update_value_last_stable_version
@@ -27,100 +34,168 @@ module GM
27
34
  end
28
35
 
29
36
  def self.update_value_non
30
- return "not_update" ## 不自动更新
37
+ return "not_update" ## 不自动更新
38
+ end
39
+
40
+ def self.mediation_names
41
+ return %w[Ads-CN/CSJMediation Ads-CN-Beta/CSJMediation Ads-Fusion-CN-Beta/CSJMediation]
42
+ end
43
+
44
+ def self.mediation_name_csj
45
+ return 'Ads-CN/CSJMediation'
46
+ end
47
+
48
+ def self.mediation_name_beta
49
+ return 'Ads-CN-Beta/CSJMediation'
50
+ end
51
+
52
+ def self.mediation_name_gm
53
+ return 'Ads-Fusion-CN-Beta/CSJMediation'
31
54
  end
32
55
 
33
- def self.mediation_name
34
- return "Ads-Fusion-CN-Beta/CSJMediation"
56
+ def self.mediation_version_type(name)
57
+ return Beta::CSJ_BETA if name.start_with?('Ads-CN-Beta/')
58
+ return Beta::CSJ_RELEASE if name.start_with?('Ads-CN/')
59
+ return Beta::GM_RELEASE if name.start_with?('Ads-Fusion-CN-Beta/')
60
+ 0
35
61
  end
36
62
 
37
63
  def self.get_all_config
38
- [BuildConfig.get_update_key,BuildConfig.get_load_key,BuildConfig.get_load_detect_key]
64
+ [BuildConfig.get_update_key, BuildConfig.get_load_key, BuildConfig.get_load_detect_key]
39
65
  end
40
66
  end
41
67
 
42
68
  class Adn_Adapter
43
- ADNADAPTER = Hash[
69
+ ADN_ADAPTER = Hash[
44
70
  # 'Ads-CN' => 'ABUAdCsjAdapter',
45
- 'UnityAds' => 'CSJMUnityAdapter',
46
- 'Google-Mobile-Ads-SDK'=> 'CSJMAdmobAdapter',
47
- 'BaiduMobAdSDK'=> 'CSJMBaiduAdapter',
48
- 'GDTMobSDK'=> 'CSJMGdtAdapter',
49
- 'SigmobAd-iOS'=> 'CSJMSigmobAdapter',
50
- 'KSAdSDK'=> 'CSJMKsAdapter',
51
- 'KlevinAdSDK'=> 'CSJMKlevinAdapter',
52
- 'MintegralAdSDK'=> 'CSJMMintegralAdapter',
71
+ 'UnityAds' => 'UnityAdapter',
72
+ 'Google-Mobile-Ads-SDK' => 'AdmobAdapter',
73
+ 'BaiduMobAdSDK' => 'BaiduAdapter',
74
+ 'GDTMobSDK' => 'GdtAdapter',
75
+ 'SigmobAd-iOS' => 'SigmobAdapter',
76
+ 'KSAdSDK' => 'KsAdapter',
77
+ 'KlevinAdSDK' => 'KlevinAdapter',
78
+ 'MintegralAdSDK' => 'MintegralAdapter',
53
79
  ].freeze
54
80
 
55
- SERVERMAPADAPTER = Hash[
56
- 'unity' => 'CSJMUnityAdapter',
57
- 'admob'=> 'CSJMAdmobAdapter',
58
- 'baidu'=> 'CSJMBaiduAdapter',
59
- 'gdt'=> 'CSJMGdtAdapter',
60
- 'sigmob'=> 'CSJMSigmobAdapter',
61
- 'ks'=> 'CSJMKsAdapter',
62
- 'klevin'=> 'CSJMKlevinAdapter',
63
- 'mtg'=> 'CSJMMintegralAdapter',
81
+ SERVER_MAP_ADAPTER = Hash[
82
+ 'unity' => 'UnityAdapter',
83
+ 'admob' => 'AdmobAdapter',
84
+ 'baidu' => 'BaiduAdapter',
85
+ 'gdt' => 'GdtAdapter',
86
+ 'sigmob' => 'SigmobAdapter',
87
+ 'ks' => 'KsAdapter',
88
+ 'klevin' => 'KlevinAdapter',
89
+ 'mtg' => 'MintegralAdapter',
64
90
  ].freeze
65
91
 
66
- SERVERMAPADN = Hash[
92
+ SERVER_MAP_ADN = Hash[
67
93
  'UnityAds' => 'unity',
68
- 'Google-Mobile-Ads-SDK'=> 'admob',
69
- 'BaiduMobAdSDK'=> 'baidu',
70
- 'GDTMobSDK'=> 'gdt',
71
- 'SigmobAd-iOS'=> 'sigmob',
72
- 'KSAdSDK'=> 'ks',
73
- 'KlevinAdSDK'=> 'klevin',
74
- 'MintegralAdSDK'=> 'mtg',
94
+ 'Google-Mobile-Ads-SDK' => 'admob',
95
+ 'BaiduMobAdSDK' => 'baidu',
96
+ 'GDTMobSDK' => 'gdt',
97
+ 'SigmobAd-iOS' => 'sigmob',
98
+ 'KSAdSDK' => 'ks',
99
+ 'KlevinAdSDK' => 'klevin',
100
+ 'MintegralAdSDK' => 'mtg',
75
101
  ].freeze
76
102
 
103
+ # 获取ADN缩写名称
77
104
  def self.get_adn_abbreviation(name)
78
- SERVERMAPADN[name]
79
- end
80
-
81
- def self.get_adapter_from_adn_abbreviation(name)
82
- SERVERMAPADAPTER[name]
105
+ SERVER_MAP_ADN[name]
106
+ end
107
+
108
+ # 已知ADN缩写名称,获取adapter名称
109
+ def self.get_adapter_from_adn_abbreviation(name, beta_type)
110
+ _adapter_name = SERVER_MAP_ADAPTER[name]
111
+ adapter_name = nil
112
+ if beta_type == Beta::CSJ_BETA
113
+ adapter_name = 'GM' + _adapter_name + '-Beta'
114
+ elsif beta_type == Beta::CSJ_RELEASE
115
+ adapter_name = 'GM' + _adapter_name
116
+ elsif beta_type == Beta::GM_RELEASE
117
+ adapter_name = 'CSJM' + _adapter_name
118
+ end
119
+ adapter_name
83
120
  end
84
121
 
122
+ # 判断是否是ADN名称
85
123
  def self.is_adn?(name)
86
- ADNADAPTER.has_key?(name)
124
+ ADN_ADAPTER.has_key?(name)
87
125
  end
88
126
 
127
+ # 判断是否是adapter名称
89
128
  def self.is_adapter?(name)
90
- ADNADAPTER.has_value?(name)
129
+ if name.end_with?('-Beta')
130
+ len = name.length
131
+ name = name[0..len - 6]
132
+ end
133
+ if name.start_with?('GM')
134
+ len = name.length
135
+ name = name[2..len - 1]
136
+ elsif name.start_with?('CSJM')
137
+ len = name.length
138
+ name = name[2..len - 1]
139
+ end
140
+ ADN_ADAPTER.has_value?(name)
91
141
  end
92
142
 
93
- def self.get_adapter(name)
94
- adapter = ''
143
+ # 获取adapter的名称
144
+ def self.get_adapter(name, beta_type)
95
145
  if is_adn?(name)
96
- adapter = ADNADAPTER[name]
146
+ _adapter_name = ADN_ADAPTER[name]
147
+ adapter_name = nil
148
+ if beta_type == Beta::CSJ_BETA
149
+ adapter_name = 'GM' + _adapter_name + '-Beta'
150
+ elsif beta_type == Beta::CSJ_RELEASE
151
+ adapter_name = 'GM' + _adapter_name
152
+ elsif beta_type == Beta::GM_RELEASE
153
+ adapter_name = 'CSJM' + _adapter_name
154
+ end
155
+ return adapter_name
97
156
  end
98
- adapter
157
+ nil
99
158
  end
100
159
 
160
+ # 获取ADN的名称
101
161
  def self.get_adn(name)
102
162
  adn_name = ''
103
163
  if is_adapter?(name)
104
164
  ## .index 在调试时候会报错
105
- ADNADAPTER.select{ |key, value|
106
- if value == name
107
- adn_name = key
108
- break
109
- end
110
- true
165
+ ADN_ADAPTER.select { |key, value|
166
+ if name.include?(value)
167
+ adn_name = key
168
+ break
169
+ end
170
+ true
111
171
  }
112
172
  end
113
173
  adn_name
114
174
  end
115
175
 
176
+ # 获取所有的adapter的名称
116
177
  def self.get_all_adapter
117
- ADNADAPTER.values
178
+ adapter_base_names = ADN_ADAPTER.values
179
+ gm_adapters = adapter_base_names.map { |adapter_name|
180
+ 'CSJM' + adapter_name
181
+ }
182
+ beta_adapters = adapter_base_names.map { |adapter_name|
183
+ 'GM' + adapter_name + '-Beta'
184
+ }
185
+ did_release = Network.csj_did_release
186
+ csj_adapters = []
187
+ if did_release
188
+ csj_adapters = adapter_base_names.map { |adapter_name|
189
+ 'GM' + adapter_name
190
+ }
191
+ end
192
+ csj_adapters + beta_adapters + gm_adapters
118
193
  end
119
194
 
195
+ # 获取所有的ADN的名称
120
196
  def self.get_all_adn
121
- ADNADAPTER.keys
197
+ ADN_ADAPTER.keys
122
198
  end
123
199
  end
124
200
 
125
-
126
201
  end
@@ -1,5 +1,5 @@
1
1
  module CocoapodsByteCsjm
2
- VERSION = "0.0.13"
2
+ VERSION = "0.0.17"
3
3
  class Version
4
4
  def self.version
5
5
  VERSION
@@ -12,28 +12,25 @@ require 'cocoapods/command/update'
12
12
  require 'time'
13
13
  require 'open3'
14
14
 
15
-
16
-
17
-
18
-
19
15
  module CSJMPlugin
20
- def CSJMPlugin.action()
21
- recoder= GM::Recorder.instance
16
+ def CSJMPlugin.action
17
+ recoder = GM::Recorder.instance
22
18
  if recoder.is_load_plugin
23
19
  yield(recoder) if block_given?
24
20
  end
25
21
  end
26
22
 
27
23
  def CSJMPlugin.update
24
+ current_version = CocoapodsByteCsjm::Version.version
25
+ puts "Current version is #{current_version}"
28
26
  puts "Checking for updates..."
29
- # output = system('gem update cocoapods-byte-csjm')
30
- command = 'gem install cocoapods-byte-csjm'
31
- stdout, stderr, status = Open3.capture3(command)
32
-
33
- if status.success?
34
- puts "cocoapods-byte-csjm update sucess"
35
- else
36
- puts "cocoapods-byte-csjm update fail message:#{stderr}"
27
+ latest_version = GM::Network.latest_version
28
+ if latest_version != current_version
29
+ puts "—————————————————————————————————————————————————————————————".red
30
+ puts "| 检测到 cocoapods-byte-csjm 存在新版本 (#{latest_version} > #{current_version})".red
31
+ puts "| 请执行 `sudo gem install cocoapods-byte-csjm` 更新".red
32
+ puts "| 使用bundle用户请在Gemfile中修改 `gem 'cocoapods-byte-csjm', '~> #{latest_version}'`".red
33
+ puts "—————————————————————————————————————————————————————————————".red
37
34
  end
38
35
  end
39
36
  end
@@ -45,8 +42,9 @@ module GM
45
42
  def initialize(hash)
46
43
  @internal_data = hash
47
44
  end
45
+
48
46
  # 读取lock文件
49
- # @requrn lock的json内容
47
+ # @return lock的json内容
50
48
  # @param 文件路径
51
49
  def self.read_from_path(path)
52
50
  if File.exist?(path)
@@ -54,15 +52,17 @@ module GM
54
52
  end
55
53
  return false, nil
56
54
  end
55
+
57
56
  # 写入lock文件
58
57
  def write_to_disk(path)
59
58
  begin
60
59
  is_exist, existing = LockfileCSJM.read_from_path(path)
61
60
  return if existing == @internal_data
62
61
  rescue Exception
62
+ puts 'Read csjm lock file failed'
63
63
  end
64
64
  File.open(path, 'w+') do |f|
65
- YAML.dump(@internal_data,f)
65
+ YAML.dump(@internal_data, f)
66
66
  end
67
67
  end
68
68
  end
@@ -72,27 +72,31 @@ module GM
72
72
  class GmInfo
73
73
  attr_accessor :name
74
74
  attr_accessor :version
75
+
75
76
  def initialize(name, version)
76
77
  @name = name
77
78
  @version = version
78
79
  end
80
+
79
81
  def to_hash
80
82
  hash = {}
81
83
  hash["NAME"] = @name
82
84
  hash["VERSION"] = @version
83
85
  hash
84
86
  end
87
+
85
88
  def self.from_hash(hash)
86
- GmInfo.new(hash["NAME"],hash["VERSION"])
89
+ GmInfo.new(hash["NAME"], hash["VERSION"])
87
90
  end
88
91
  end
89
92
 
90
93
  # 媒体配置记录
91
94
  #
92
- class Note
95
+ class Note
93
96
  attr_accessor :auto_load
94
97
  attr_accessor :auto_update
95
98
  attr_accessor :load_detect
99
+
96
100
  def get_update(update_value)
97
101
  value = ''
98
102
  case update_value
@@ -111,7 +115,8 @@ module GM
111
115
 
112
116
  class GlobalNote < Note
113
117
  attr_accessor :auto_load_whitelist
114
- def initialize(auto_load = true , auto_update = GM::BuildConfig.update_value_last_version, load_detect = true, auto_load_whitelist = [])
118
+
119
+ def initialize(auto_load = true, auto_update = GM::BuildConfig.update_value_last_version, load_detect = true, auto_load_whitelist = [])
115
120
  @auto_load = auto_load
116
121
  @auto_update = get_update auto_update
117
122
  @load_detect = load_detect
@@ -136,7 +141,7 @@ module GM
136
141
  end
137
142
 
138
143
  def self.from_hash(hash)
139
- global_note = GlobalNote.new()
144
+ global_note = GlobalNote.new
140
145
  global_note.auto_load = hash["AUTO_LOAD"] if hash.has_key?("AUTO_LOAD")
141
146
  global_note.auto_update = hash["AUTO_UPDATE"] if hash.has_key?("AUTO_UPDATE")
142
147
  global_note.load_detect = hash["LOAD_DETECT"] if hash.has_key?("LOAD_DETECT")
@@ -153,9 +158,9 @@ module GM
153
158
  attr_accessor :adapter_original_version ##加载的版本号
154
159
  attr_accessor :adapter_expected_version ##期望加载的版本号
155
160
 
156
- def initialize(adn_name, auto_load = false , auto_update = GM::BuildConfig.update_value_non, load_detect = false)
161
+ def initialize(adn_name, auto_load = false, auto_update = GM::BuildConfig.update_value_non, load_detect = false)
157
162
  @adn_name = adn_name
158
- @adapter_name = GM::Adn_Adapter.get_adapter adn_name
163
+ @adapter_name = GM::Adn_Adapter.get_adapter adn_name, Beta::CSJ_RELEASE
159
164
  @auto_load = auto_load
160
165
  @auto_update = get_update auto_update
161
166
  @load_detect = load_detect
@@ -177,7 +182,7 @@ module GM
177
182
  end
178
183
 
179
184
  def self.from_hash(hash)
180
- note = AdnNote.new(hash["ADN_NAME"],hash["AUTO_LOAD"],hash["AUTO_UPDATE"],hash["LOAD_DETECT"])
185
+ note = AdnNote.new(hash["ADN_NAME"], hash["AUTO_LOAD"], hash["AUTO_UPDATE"], hash["LOAD_DETECT"])
181
186
  note.adn_name = hash["ADN_NAME"]
182
187
  note.adn_version = hash["ADN_VERSION"]
183
188
  note.adapter_name = hash["ADAPTER_NAME"]
@@ -194,9 +199,9 @@ module GM
194
199
 
195
200
  attr_accessor :is_release_target
196
201
  attr_accessor :referenced_target
197
- attr_reader :label
202
+ attr_reader :label
198
203
  attr_accessor :gm_info
199
- attr_accessor :nots_info
204
+ attr_accessor :notes_info
200
205
 
201
206
  def initialize(label)
202
207
  @label = label.clone
@@ -204,29 +209,27 @@ module GM
204
209
  end
205
210
 
206
211
  def find_note(adn_name)
207
- @nots_info ||= {}
212
+ @notes_info ||= {}
208
213
  global_note = GM::Recorder.instance.global_note
209
- note = (@nots_info.has_key?(adn_name) && @nots_info[adn_name]) || AdnNote.new(adn_name, global_note.auto_load, global_note.auto_update, global_note.load_detect)
210
- @nots_info[adn_name] = note unless @nots_info.has_key?(adn_name)
214
+ note = (@notes_info.has_key?(adn_name) && @notes_info[adn_name]) || AdnNote.new(adn_name, global_note.auto_load, global_note.auto_update, global_note.load_detect)
215
+ @notes_info[adn_name] = note unless @notes_info.has_key?(adn_name)
211
216
  note
212
217
  end
213
218
 
214
219
  def has_adn?(adn_name)
215
- GM::Adn_Adapter.is_adn?(adn_name) && @nots_info.has_key?(adn_name)
220
+ GM::Adn_Adapter.is_adn?(adn_name) && @notes_info.has_key?(adn_name)
216
221
  end
217
222
 
218
223
  def is_adn_update_or_detect?(adn_name)
219
- result = is_adn_update?(adn_name) || is_adn_detect?(adn_name)
220
- result
224
+ is_adn_update?(adn_name) || is_adn_detect?(adn_name)
221
225
  end
222
226
 
223
227
  def is_adn_update?(adn_name)
224
- result = has_adn?(adn_name) && @nots_info[adn_name].auto_update != GM::BuildConfig.update_value_non && GM::Recorder.instance.global_note.has_set_load?(adn_name)
225
- result
228
+ has_adn?(adn_name) && @notes_info[adn_name].auto_update != GM::BuildConfig.update_value_non && GM::Recorder.instance.global_note.has_set_load?(adn_name)
226
229
  end
227
230
 
228
231
  def is_adn_detect?(adn_name)
229
- has_adn?(adn_name) && @nots_info[adn_name].load_detect
232
+ has_adn?(adn_name) && @notes_info[adn_name].load_detect
230
233
  end
231
234
 
232
235
  def to_hash
@@ -234,10 +237,10 @@ module GM
234
237
  hash["LABEL"] = @label
235
238
  hash["IS_RELEASE_TARGET"] = @is_release_target
236
239
  hash["GM_INFO"] = @gm_info.to_hash
237
- hash["NOTS_INFO"] = {}
238
- @nots_info.each {|key, value|
239
- hash["NOTS_INFO"][key] = value.to_hash
240
- }
240
+ hash["NOTES_INFO"] = {}
241
+ @notes_info.each { |key, value|
242
+ hash["NOTES_INFO"][key] = value.to_hash
243
+ } if @notes_info != nil
241
244
  hash
242
245
  end
243
246
 
@@ -245,9 +248,9 @@ module GM
245
248
  target = Target.new(hash["LABEL"])
246
249
  target.is_release_target = true
247
250
  target.gm_info = GmInfo.from_hash hash["GM_INFO"] if hash.has_key?("GM_INFO")
248
- target.nots_info ||= {}
249
- hash["NOTS_INFO"].each do |name, note_info|
250
- target.nots_info[name] = AdnNote.from_hash note_info
251
+ target.notes_info ||= {}
252
+ hash["NOTES_INFO"].each do |name, note_info|
253
+ target.notes_info[name] = AdnNote.from_hash note_info
251
254
  end
252
255
  target
253
256
  end
@@ -264,6 +267,7 @@ module GM
264
267
  attr_reader :is_load_plugin
265
268
  attr_reader :plugin_version
266
269
  attr_reader :lockfile_data
270
+
267
271
  def set_plugin_load(is_load)
268
272
  @is_load_plugin = is_load
269
273
  @plugin_version = CocoapodsByteCsjm::Version.version
@@ -274,22 +278,21 @@ module GM
274
278
  end
275
279
 
276
280
  def find_global_note(option, is_force_update = false)
277
-
278
281
  return @global_note if !is_force_update && @global_note != nil
279
282
  @global_note = GlobalNote.new(false, GM::BuildConfig.update_value_non, false)
280
- load_key = GM::BuildConfig.get_load_key
281
- update_key = GM::BuildConfig.get_update_key
283
+ load_key = GM::BuildConfig.get_load_key
284
+ update_key = GM::BuildConfig.get_update_key
282
285
  load_detect_key = GM::BuildConfig.get_load_detect_key
283
286
  auto_load_whitelist_key = GM::BuildConfig.get_load_whitelist_key
284
287
  case option
285
288
  when true, false
286
- @global_note = GM::GlobalNote.new(option,option,option,{})
289
+ @global_note = GM::GlobalNote.new(option, option, option, {})
287
290
  when Hash
288
291
  load_value = option.has_key?(load_key) ? option[load_key] : true
289
292
  update_value = option.has_key?(update_key) ? option[update_key] : true
290
293
  detect_value = option.has_key?(load_detect_key) ? option[load_detect_key] : true
291
- auto_load_whitelist = option.has_key?(auto_load_whitelist_key)?option[auto_load_whitelist_key] : {}
292
- @global_note = GM::GlobalNote.new(load_value, update_value,detect_value,auto_load_whitelist)
294
+ auto_load_whitelist = option.has_key?(auto_load_whitelist_key) ? option[auto_load_whitelist_key] : {}
295
+ @global_note = GM::GlobalNote.new(load_value, update_value, detect_value, auto_load_whitelist)
293
296
  else
294
297
  raise ArgumentError, "CSJM error: `#{option.inspect}`, should be a boolean or hash."
295
298
  end
@@ -311,7 +314,7 @@ module GM
311
314
  hash["PLUGIN_VERSION"] = @plugin_version
312
315
  hash["GLOBAL_NOTE"] = @global_note.to_hash
313
316
  hash["TARGET_INFO"] = {}
314
- @target_info.each {|item, value|
317
+ @target_info.each { |item, value|
315
318
  hash["TARGET_INFO"][item] = value.to_hash
316
319
  }
317
320
  checksum = Digest::SHA1.hexdigest(hash.inspect)
@@ -325,48 +328,49 @@ module GM
325
328
  #
326
329
  class SpecificationInfo
327
330
  @@possibilities = {}
331
+
328
332
  def self.update(name = '', possibilities)
329
- if name.length > 0
330
- @@possibilities[name] ||= []
331
- @@possibilities[name] = @@possibilities[name] | possibilities
332
- end
333
+ if name.length > 0
334
+ @@possibilities[name] ||= []
335
+ @@possibilities[name] = @@possibilities[name] | possibilities
336
+ end
333
337
  end
334
338
 
335
- def self.get_info()
336
- @@possibilities
339
+ def self.get_info
340
+ @@possibilities
337
341
  end
338
342
 
339
343
  def self.get_a_specfication(name, version)
340
- result = @@possibilities[name].find { |specification|
344
+ result = @@possibilities[name].find { |specification|
341
345
  specification.version.version == version
342
346
  }
343
347
  result
344
348
  end
345
349
 
346
- def self.get_specfication(info_list = [])
350
+ def self.get_specfication(info_list = [], beta_type)
347
351
 
348
352
  ##请注意, 这里可能获取不到对应的Specfication 实例, 此时需要报错并提示媒体使用pod update
349
- result = info_list.map{|info|
353
+ result = info_list.map { |info|
350
354
  info['is_find'] = false
351
- adapter_name = GM::Adn_Adapter.get_adapter_from_adn_abbreviation info["adn_name"]
355
+ adapter_name = GM::Adn_Adapter.get_adapter_from_adn_abbreviation(info["adn_name"], beta_type)
352
356
  @@possibilities[adapter_name].find { |specification|
353
357
  info['is_find'] = true if specification.version.version == info["adn_adapter_version"]
354
358
  specification.version.version == info["adn_adapter_version"]
355
359
  }
356
360
  }.flatten
357
- unfind_list = info_list.select{ |info|
361
+ unfind_list = info_list.select { |info|
358
362
  info['is_find'] == false
359
363
  }
360
364
  if unfind_list.size > 0
361
- ins = get_info
365
+ # infos = get_info
362
366
  str = "adapters("
363
- unfind_list.each {|item|
364
- str << GM::Adn_Adapter.get_adapter_from_adn_abbreviation(info["item"]) + "->" + item["adn_adapter_version"]+ " "
367
+ unfind_list.each { |item|
368
+ str << GM::Adn_Adapter.get_adapter_from_adn_abbreviation(item["adn_name"], beta_type) + "->" + item["adn_adapter_version"] + " "
365
369
  }
366
370
  str << ")"
367
371
  raise "CSJM error: #{str} 版本未找到,请执行 `pod update --verbose`"
368
372
  end
369
- result
373
+ result
370
374
  end
371
375
  end
372
376
 
@@ -382,41 +386,41 @@ module GM
382
386
  checksum = hash.delete("RECODER_CHECKSUM")
383
387
  verified_checksum = Digest::SHA1.hexdigest(hash.inspect).encode('UTF-8') if checksum.respond_to?(:encode)
384
388
  if verified_checksum != checksum
385
- raise "CSJM error: Podfile.csjm.lock 文件校验失败, 请检查该文件是否被改动, 尝试删掉该文件并执行 'pod install', 若你确认没有被修改,请联系技术支持"
389
+ raise "CSJM error: Podfile.csjm.lock 文件校验失败, 请检查该文件是否被改动, 尝试删掉该文件并执行 'pod install', 若你确认没有被修改,请联系技术支持"
386
390
  end
387
391
  ## 校验对应的target是否存在
388
- if !hash["TARGET_INFO"].has_key?(target.gm_build_config.referenced_target)
389
- raise "CSJM error:#{target.gm_build_config.label} 设置了'is_release_target=true' 但是在 Podfile.csjm.lock文件中没有找到target的信息"
392
+ unless hash["TARGET_INFO"].has_key?(target.gm_build_config.referenced_target)
393
+ raise "CSJM error:#{target.gm_build_config.label} 设置了'is_release_target=true' 但是在 Podfile.csjm.lock文件中没有找到target的信息"
390
394
  end
391
395
 
392
396
  ## 校验gm版本是否符合
393
- gm_spec = specs.find do |spec|
394
- GM::BuildConfig.mediation_name==spec.spec.name
397
+ gm_spec = specs.find do |spec|
398
+ GM::BuildConfig.mediation_name == spec.spec.name
395
399
  end
396
400
  if gm_spec.nil?
397
- raise "CSJM error:#{GM::BuildConfig.mediation_name} not found in #{target.label}"
401
+ raise "CSJM error:#{GM::BuildConfig.mediation_name} not found in #{target.label}"
398
402
  end
399
- referenced_target = GM::Target.from_hash hash["TARGET_INFO"][target.gm_build_config.referenced_target]
403
+ referenced_target = GM::Target.from_hash hash["TARGET_INFO"][target.gm_build_config.referenced_target]
400
404
  if gm_spec.spec.version.version != referenced_target.gm_info.version
401
- raise "CSJM error:#{GM::BuildConfig.mediation_name} version has change(#{referenced_target.gm_info.version}->#{gm_spec.spec.version.version}),please check"
405
+ raise "CSJM error:#{GM::BuildConfig.mediation_name} version has change(#{referenced_target.gm_info.version}->#{gm_spec.spec.version.version}),please check"
402
406
  end
403
407
  ## 替换各adapter的版本
404
- referenced_target.nots_info.each do |adn_name, note|
408
+ referenced_target.notes_info.each do |adn_name, note|
405
409
 
406
- original_adapter_sp = specs.find{|spec|
410
+ original_adapter_sp = specs.find { |spec|
407
411
  spec.spec.name == note.adapter_name
408
412
  }
409
413
  if original_adapter_sp.nil?
410
- raise "CSJM error:#{note.adapter_name} not found"
414
+ raise "CSJM error:#{note.adapter_name} not found"
411
415
  end
412
416
  ##校验adn是否更换了版本
413
417
  original_adn_sp = specs.find do |spec|
414
418
  spec.spec.name == note.adn_name
415
419
  end
416
420
  if original_adn_sp.spec.version.version != note.adn_version
417
- raise "CSJM error:#{note.adn_name} version has change(#{note.adn_version}->#{original_adapter_sp.spec.version.version}),please check"
421
+ raise "CSJM error:#{note.adn_name} version has change(#{note.adn_version}->#{original_adapter_sp.spec.version.version}),please check"
418
422
  end
419
- if note.adapter_expected_version.length > 0 && original_adapter_sp.spec.version.version != note.adapter_expected_version
423
+ if note.adapter_expected_version.length > 0 && original_adapter_sp.spec.version.version != note.adapter_expected_version
420
424
  title_options = { :verbose_prefix => '-> '.green }
421
425
  Pod::UserInterface.titled_section("#{note.adn_name} will change adapter version , the current adapter(#{note.adapter_name}) version will change from #{original_adapter_sp.spec.version.version} to #{note.adapter_expected_version}", title_options)
422
426
  replace_sp = GM::SpecificationInfo.get_a_specfication note.adapter_name, note.adapter_expected_version
@@ -426,21 +430,24 @@ module GM
426
430
  end
427
431
  end
428
432
  end
429
- specs.sort_by!{|spec| spec.spec.name}
433
+ specs.sort_by! { |spec| spec.spec.name }
430
434
  else
431
- raise "CSJM error: #{File.expand_path("#{Pod::Config.instance.installation_root}/Podfile.csjm.lock")} not found, please check"
435
+ raise "CSJM error: #{File.expand_path("#{Pod::Config.instance.installation_root}/Podfile.csjm.lock")} not found, please check"
432
436
  end
433
437
  end
434
438
 
435
439
  def self.resolve_last(target, specs)
436
-
440
+ beta_type = target.did_pod_csjm_beta specs
437
441
  gm_spec = nil
442
+ mediation_names = GM::BuildConfig.mediation_names
438
443
  adn_specs = specs.select do |spec|
439
444
  name = spec.spec.name
440
- if name == GM::BuildConfig.mediation_name
441
- gm_spec = spec
442
-
443
- target.gm_build_config.gm_info = GM::GmInfo.new(spec.spec.name, spec.spec.version.version)
445
+ if mediation_names.include?(name)
446
+ version_type = GM::BuildConfig.mediation_version_type(name)
447
+ if version_type == beta_type
448
+ gm_spec = spec
449
+ target.gm_build_config.gm_info = GM::GmInfo.new(spec.spec.name, spec.spec.version.version)
450
+ end
444
451
  end
445
452
  if GM::Adn_Adapter.is_adapter?(name)
446
453
  adn_note = target.gm_build_config.find_note GM::Adn_Adapter.get_adn name
@@ -452,20 +459,20 @@ module GM
452
459
  end
453
460
  target.gm_build_config.is_adn_update?(name) ## 这里去掉不更新但版本校验功能
454
461
  end
455
- raise "CSJM error: #{GM::BuildConfig.mediation_name} not found,please check" if gm_spec == nil
456
- adn_info_list = adn_specs.map{|adn_spec|
462
+ GM::VersionAnalyzer.delete_invalid_sdks_for_beta target, specs, beta_type
463
+ raise "CSJM error: #{GM::BuildConfig.mediation_name} not found, please check" if gm_spec == nil
464
+ adn_info_list = adn_specs.map { |adn_spec|
457
465
  adn_note = target.gm_build_config.find_note adn_spec.spec.name
458
466
  adn_note.adn_version = adn_spec.spec.version.version
459
- {"adn_name" => GM::Adn_Adapter.get_adn_abbreviation(adn_spec.spec.name),"adn_version" => adn_spec.spec.version.version}
467
+ { "adn_name" => GM::Adn_Adapter.get_adn_abbreviation(adn_spec.spec.name), "adn_version" => adn_spec.spec.version.version }
460
468
  # {"adn_name" => "ks","adn_version" => adn_spec.spec.version.version}
461
469
  # {"adn_name" => adn_spec.spec.name,"adn_version" => adn_spec.spec.version.version, "auto_update" => adn_note.auto_update, "load_detect" => adn_note.load_detect, "adapter_name" => adn_note.adapter_name, "adapter_version" => adn_note.adapter_original_version}
462
470
  } if gm_spec
463
471
  ## 网络请求
464
472
  response_data = request_adapter gm_spec.spec.version.version, adn_info_list
465
- result = GM::SpecificationInfo.get_specfication response_data
466
- result.each{|item|
467
-
468
- original_sp = specs.find{|spec|
473
+ result = GM::SpecificationInfo.get_specfication(response_data, beta_type)
474
+ result.each { |item|
475
+ original_sp = specs.find { |spec|
469
476
  spec.spec.name == item.name
470
477
  }
471
478
  adn_name = GM::Adn_Adapter.get_adn item.name
@@ -476,47 +483,95 @@ module GM
476
483
  Pod::UserInterface.titled_section("#{adn_name} has set version update or check, the current adapter(#{item.name}) version(#{item.version.version}) is as expected", title_options)
477
484
  else
478
485
 
479
- if original_sp && original_sp.spec.version.version != item.version.version ## 更新到最新版本 或 最新稳定版本
480
- if target.gm_build_config.is_adn_update?(adn_name)
481
- # puts '开始更新版本'
482
- title_options = { :verbose_prefix => '-> '.green }
483
- Pod::UserInterface.titled_section("#{adn_name} will change adapter version , the current adapter(#{item.name}) version will change from #{original_sp.spec.version.version} to #{item.version.version}", title_options)
484
- specs << Pod::Resolver::ResolverSpecification.new(item, original_sp.used_by_non_library_targets_only, item.spec_source)
485
- specs.delete original_sp
486
- elsif target.gm_build_config.is_adn_detect?(adn_name) ##媒体关闭了自动更新,只选择检查版本是否适配
487
- ## 版本校验功能暂时去掉 , 一期不上,后续具体看情况
488
- # puts '开始校验版本'
489
- # if item.version.version != original_sp.spec.version.version
490
- # raise "CSJM error:#{adn_name} has set the version check of the adapter(#{item.name}), current version does not match. please change your version. The current version is #{original_sp.spec.version.version} but the expected version is #{item.version.version}"
491
- # end
492
- else
493
- # puts '什么也不做'
486
+ if original_sp && original_sp.spec.version.version != item.version.version ## 更新到最新版本 或 最新稳定版本
487
+ if target.gm_build_config.is_adn_update?(adn_name)
488
+ # puts '开始更新版本'
489
+ title_options = { :verbose_prefix => '-> '.green }
490
+ Pod::UserInterface.titled_section("#{adn_name} will change adapter version , the current adapter(#{item.name}) version will change from #{original_sp.spec.version.version} to #{item.version.version}", title_options)
491
+ specs << Pod::Resolver::ResolverSpecification.new(item, original_sp.used_by_non_library_targets_only, item.spec_source)
492
+ specs.delete original_sp
493
+ elsif target.gm_build_config.is_adn_detect?(adn_name) ##媒体关闭了自动更新,只选择检查版本是否适配
494
+ ## 版本校验功能暂时去掉 , 一期不上,后续具体看情况
495
+ # puts '开始校验版本'
496
+ # if item.version.version != original_sp.spec.version.version
497
+ # raise "CSJM error:#{adn_name} has set the version check of the adapter(#{item.name}), current version does not match. please change your version. The current version is #{original_sp.spec.version.version} but the expected version is #{item.version.version}"
498
+ # end
499
+ else
500
+ # puts '什么也不做'
501
+ end
494
502
  end
495
503
  end
496
- end
497
504
  }
498
- specs.sort_by!{|spec| spec.spec.name}
505
+ specs.sort_by! { |spec| spec.spec.name }
499
506
  end
500
507
 
501
508
  def self.delete_invalid_adapters(target, specs)
502
- un_den_adn_list= GM::Adn_Adapter.get_all_adn - specs.map(&:spec).map(&:name).map do |item|
509
+ un_den_adn_list = GM::Adn_Adapter.get_all_adn - specs.map(&:spec).map(&:name).map do |item|
503
510
  GM::Adn_Adapter.is_adn?(item) ? Pod::Specification.root_name(item) : nil
504
511
  end.compact.uniq
505
- un_den_adapter_list = []
506
- un_den_adapter_list = un_den_adn_list.map {|item|
507
- GM::Adn_Adapter.get_adapter item
512
+ un_den_adapter_list_csj = un_den_adn_list.map { |item|
513
+ GM::Adn_Adapter.get_adapter(item, GM::Beta::CSJ_RELEASE)
514
+ }
515
+ un_den_adapter_list_beta = un_den_adn_list.map { |item|
516
+ GM::Adn_Adapter.get_adapter(item, GM::Beta::CSJ_BETA)
508
517
  }
518
+ un_den_adapter_list_gm = un_den_adn_list.map { |item|
519
+ GM::Adn_Adapter.get_adapter(item, GM::Beta::GM_RELEASE)
520
+ }
521
+ un_den_adapter_list = un_den_adapter_list_csj + un_den_adapter_list_beta + un_den_adapter_list_gm
509
522
  specs.delete_if { |spec|
510
- hh = !GM::Recorder.instance.global_note.auto_load_whitelist.include?(Pod::Specification.root_name(spec.spec.name))
511
- result = un_den_adapter_list.include?(Pod::Specification.root_name(spec.spec.name)) && !GM::Recorder.instance.global_note.auto_load_whitelist.include?(Pod::Specification.root_name(spec.spec.name))
523
+ # hh = !GM::Recorder.instance.global_note.auto_load_whitelist.include?(Pod::Specification.root_name(spec.spec.name))
524
+ result = un_den_adapter_list.include?(Pod::Specification.root_name(spec.spec.name)) && !GM::Recorder.instance.global_note.auto_load_whitelist.include?(Pod::Specification.root_name(spec.spec.name))
512
525
  if result
513
- title_options = { :verbose_prefix => '-> '.red}
526
+ title_options = { :verbose_prefix => '-> '.red }
514
527
  Pod::UserInterface.titled_section("remove #{spec.spec.name}", title_options)
515
528
  end
516
529
  result
517
530
  }
518
531
  end
519
532
 
533
+ def self.delete_invalid_sdks_for_beta(target, specs, beta_type)
534
+ mediation_name_gm = GM::BuildConfig.mediation_name_gm
535
+ mediation_name_csj = GM::BuildConfig.mediation_name_csj
536
+ mediation_name_beta = GM::BuildConfig.mediation_name_beta
537
+ if beta_type == GM::Beta::CSJ_BETA
538
+ remove_csjm_names = [mediation_name_gm, mediation_name_csj]
539
+ elsif beta_type == GM::Beta::CSJ_RELEASE
540
+ remove_csjm_names = [mediation_name_gm, mediation_name_beta]
541
+ elsif beta_type == GM::Beta::GM_RELEASE
542
+ remove_csjm_names = [mediation_name_csj, mediation_name_beta]
543
+ end
544
+ remove_names = []
545
+ remove_csjm_names.each do |name|
546
+ parent_name = name.split('/')[0]
547
+ remove_names.append(parent_name)
548
+ end
549
+
550
+ specs.delete_if { |spec|
551
+ name = spec.spec.name
552
+ need_remove = false
553
+ remove_names.each { |r_n|
554
+ need_remove = true if name == r_n || name == r_n + '/BUAdSDK' || name == r_n + '/CSJMediation'
555
+ }
556
+ if need_remove
557
+ title_options = { :verbose_prefix => '-> '.red }
558
+ Pod::UserInterface.titled_section("remove #{name}", title_options)
559
+ true
560
+ else
561
+ # 匹配头部,固定CSJM|GM
562
+ start_right = beta_type != GM::Beta::GM_RELEASE ? name.start_with?('CSJM') : name.start_with?('GM')
563
+ # 匹配尾部,beta版本以Adapter结尾,正式版本以Beta结尾
564
+ end_right = (beta_type != GM::Beta::CSJ_BETA && name.end_with?('Adapter-Beta')) || (beta_type == GM::Beta::CSJ_BETA && name.end_with?('Adapter'))
565
+ result = start_right && end_right
566
+ if result
567
+ title_options = { :verbose_prefix => '-> '.red }
568
+ Pod::UserInterface.titled_section("remove #{name}", title_options)
569
+ end
570
+ result
571
+ end
572
+ }
573
+ end
574
+
520
575
  def self.get_package_name
521
576
 
522
577
  project_path = Pod::Config.instance.project_root
@@ -539,9 +594,8 @@ module GM
539
594
  end
540
595
 
541
596
  def self.request_adapter(m_version, adn_list)
542
-
543
597
  package_name = ['com.bytedance.gromore-inhouse'] ##get_package_name
544
- body = Hash["package_name"=>package_name, "mediation_version"=>m_version, "os_type"=>"ios", "list"=>adn_list]
598
+ body = Hash["package_name" => package_name, "mediation_version" => m_version, "os_type" => "ios", "list" => adn_list]
545
599
  Pod::UserInterface.section '[DEBUG]CSJM plugin Network request data' do
546
600
  puts "请求信息:#{body}"
547
601
  end
@@ -549,7 +603,7 @@ module GM
549
603
  data = GM::Network.request_adapter(body)
550
604
  config_time_end = (Time.now.to_f * 1000).to_i
551
605
  ## 埋点信息
552
- push_track config_time_start ,config_time_end ,data,m_version
606
+ push_track config_time_start, config_time_end, data, m_version
553
607
 
554
608
  if data["code"] == "PG0000"
555
609
  ## 请求adn数目和返回adapter 个数不一致时进行报错处理
@@ -560,7 +614,7 @@ module GM
560
614
  { "adn_name" => hash["adn_name"], "adn_version" => hash["adn_version"] }
561
615
  end
562
616
  end.compact
563
- raise "CSJM error:未查找到与#{JSON.generate(unfind_adn_list)}匹配的Adadpter,请更新SDK至合适版本,如有疑问请联系技术支持。"
617
+ raise "CSJM error:未查找到与#{JSON.generate(unfind_adn_list)}匹配的Adapter,请更新SDK至合适版本,如有疑问请联系技术支持。"
564
618
  end
565
619
  return data["data"]
566
620
  else
@@ -568,7 +622,7 @@ module GM
568
622
  case data["code"]
569
623
  when "PG0201"
570
624
  raise "CSJM error: #{data["message"]}(应用ID:#{package_name}),请使用在平台注册的应用ID,如有疑问请联系技术支持。"
571
- when "21018" ,"PG21018"
625
+ when "21018", "PG21018"
572
626
  raise "CSJM error: #{data["message"]}(应用ID:#{package_name}),如有疑问请联系技术支持。"
573
627
  else
574
628
  raise "CSJM error: #{data["message"]}(应用ID:#{package_name}),如有疑问请联系技术支持。"
@@ -579,10 +633,10 @@ module GM
579
633
  def self.push_track(config_start_time, config_end_time, response_data, m_version)
580
634
  config_duration = config_end_time - config_start_time
581
635
  package_name = get_package_name
582
- event_extra = Hash["package_ids"=>package_name, "mediation_version"=>m_version, "os"=>"ios", "config_time_start" => config_start_time,"config_time_end" => config_end_time,"config_duration"=>config_duration,"response"=>response_data, "plugin_version" => CocoapodsByteCsjm::Version.version]
636
+ event_extra = Hash["package_ids" => package_name, "mediation_version" => m_version, "os" => "ios", "config_time_start" => config_start_time, "config_time_end" => config_end_time, "config_duration" => config_duration, "response" => response_data, "plugin_version" => CocoapodsByteCsjm::Version.version]
583
637
  event_extra = event_extra.to_json
584
- stats_list = Array.new << Hash["conn_type" => 1, "event_id" => "3C0BA297-0C19-4F68-949A-3196B6F0B895", "timestamp" =>(Time.now.to_f * 1000).to_i ,"type" => "auto_tools", "event_extra" => event_extra]
585
- body = Hash["ts" =>Time.now.to_i, "stats_list" => stats_list]
638
+ stats_list = Array.new << Hash["conn_type" => 1, "event_id" => "3C0BA297-0C19-4F68-949A-3196B6F0B895", "timestamp" => (Time.now.to_f * 1000).to_i, "type" => "auto_tools", "event_extra" => event_extra]
639
+ body = Hash["ts" => Time.now.to_i, "stats_list" => stats_list]
586
640
  # Pod::UserInterface.section '[DEBUG]CSJM plugin Network request data' do
587
641
  # puts "埋点信息:#{body}"
588
642
  # end
@@ -615,15 +669,17 @@ end
615
669
  class Pod::Resolver
616
670
 
617
671
  alias_method :original_search_for, :search_for
672
+
618
673
  def search_for(dependency)
619
- possibilities = original_search_for(dependency) ##返回不可变数组
620
- CSJMPlugin.action do |recoder|
621
- GM::SpecificationInfo.update dependency.name , possibilities
622
- end
623
- possibilities
674
+ possibilities = original_search_for(dependency) ##返回不可变数组
675
+ CSJMPlugin.action do |recoder|
676
+ GM::SpecificationInfo.update dependency.name, possibilities
677
+ end
678
+ possibilities
624
679
  end
625
680
 
626
681
  alias_method :original_specifications_for_dependency, :specifications_for_dependency
682
+
627
683
  def specifications_for_dependency(dependency, additional_requirements = [])
628
684
  CSJMPlugin.action do |recoder|
629
685
  if additional_requirements.length > 0 && GM::Adn_Adapter.is_adapter?(dependency.name)
@@ -638,16 +694,17 @@ end
638
694
  class Pod::Installer::Analyzer
639
695
 
640
696
  alias_method :original_resolve_dependencies, :resolve_dependencies
697
+
641
698
  def resolve_dependencies(locked_dependencies)
642
699
  resolver_specs_by_target = original_resolve_dependencies(locked_dependencies)
643
700
  CSJMPlugin.action do |recoder|
644
701
  resolver_specs_by_target.each do |target, specs|
645
702
  if specs.length > 0
646
- Pod::UserInterface.section 'CSJM plugin remove invalid adapter dependencie from loaded dependencies ' do
703
+ Pod::UserInterface.section 'CSJM plugin remove invalid adapter dependency from loaded dependencies ' do
647
704
  GM::VersionAnalyzer.delete_invalid_adapters target, specs
648
705
  end if GM::Recorder.instance.get_global_note.auto_load
649
706
 
650
- if target.gm_build_config.is_release_target
707
+ if target.gm_build_config&.is_release_target
651
708
  Pod::UserInterface.section "CSJM plugin is detected that #{target.label} target is set to `gm_release_target!`, start configuration" do
652
709
  GM::VersionAnalyzer.resolve_release_target target, specs
653
710
  end
@@ -684,28 +741,30 @@ module Pod
684
741
  end
685
742
 
686
743
  alias_method :original_pod, :pod
744
+
687
745
  def pod(name = nil, *requirements)
746
+ # 执行注入
688
747
  CSJMPlugin.action do |recoder|
689
748
  if recoder.get_global_note.auto_load
690
- unless current_target_definition.is_add_adapter_dependencys
691
- current_target_definition.is_add_adapter_dependencys = true
749
+ unless current_target_definition.is_add_adapter_dependencies
750
+ current_target_definition.is_add_adapter_dependencies = true
692
751
  Pod::UserInterface.section 'CSJM plugin start auto load dependencies ' do
693
- GM::Adn_Adapter.get_all_adapter.each {|item|
694
- if GM::Recorder.instance.global_note.auto_load_whitelist.include?(GM::Adn_Adapter.get_adn item) || GM::Recorder.instance.global_note.auto_load_whitelist.size==0
752
+ GM::Adn_Adapter.get_all_adapter.each { |item|
753
+ if GM::Recorder.instance.global_note.auto_load_whitelist.include?(GM::Adn_Adapter.get_adn item) || GM::Recorder.instance.global_note.auto_load_whitelist.size == 0
695
754
  title_options = { :verbose_prefix => '-> '.green }
696
- Pod::UserInterface.titled_section("add #{item}", title_options)
697
- current_target_definition.store_pod(item,[String.new(">=0")] )
755
+ Pod::UserInterface.titled_section("add #{item}", title_options) # unless item.end_with?('-Beta')
756
+ current_target_definition.store_pod(item, [String.new(">=0")])
698
757
  end
699
758
  }
700
759
  end
701
760
  end
702
761
  end
703
-
704
762
  end
705
763
  original_pod(name, *requirements)
706
764
  end
707
765
 
708
766
  alias_method :original_plugin, :plugin
767
+
709
768
  def plugin(name, options = {})
710
769
  if name == 'cocoapods-byte-csjm'
711
770
  GM::Recorder.instance.set_plugin_load true
@@ -717,12 +776,49 @@ module Pod
717
776
  end
718
777
 
719
778
  class TargetDefinition
720
-
721
779
  attr_reader :gm_release_target
722
- attr_accessor :is_add_adapter_dependencys
780
+ attr_accessor :is_add_adapter_dependencies
723
781
  attr_reader :global_gm_build_config
724
782
  attr_reader :gm_build_config
783
+ # attr_reader :internal_hash
784
+
785
+ def did_pod_csjm_beta(specs)
786
+ # 检测是否pod依赖
787
+ beta_type = _did_pod_csjm_beta
788
+ if beta_type == nil
789
+ # 以上仅判断是否使用pod依赖进来的,对于媒体封装的组件依赖SDK的情况无效,所以需要继续判断
790
+ # 遍历每一个spec,判断非adapter,并且依赖mediation的
791
+ mediation_beta_name = GM::BuildConfig.mediation_name_beta
792
+ mediation_gm_name = GM::BuildConfig.mediation_name_gm
793
+ mediation_csj_name = GM::BuildConfig.mediation_name_csj
794
+ specs.map(&:spec).map { |item|
795
+ name = item.name
796
+ unless name.start_with?('CSJM') || name.start_with?('GM')
797
+ attributes = item.attributes_hash
798
+ dependencies = attributes['dependencies']
799
+ if dependencies && dependencies.keys.include?(mediation_beta_name)
800
+ beta_type = GM::Beta::CSJ_BETA
801
+ elsif dependencies && dependencies.keys.include?(mediation_gm_name)
802
+ beta_type = GM::Beta::GM_RELEASE
803
+ elsif dependencies && dependencies.keys.include?(mediation_csj_name)
804
+ beta_type = GM::Beta::CSJ_RELEASE
805
+ end
806
+ end
807
+ }
808
+ end
809
+ beta_type
810
+ end
725
811
 
812
+ def _did_pod_csjm_beta
813
+ list = @internal_hash['dependencies']
814
+ list.each do |item|
815
+ item.keys.each do |name|
816
+ version_type = GM::BuildConfig.mediation_version_type name
817
+ return version_type if version_type != 0
818
+ end
819
+ end
820
+ nil
821
+ end
726
822
 
727
823
  def gm_release_target!(option = true)
728
824
 
@@ -730,11 +826,11 @@ module Pod
730
826
  case option
731
827
  when true
732
828
  name = String.new("T-") << label
733
- @gm_build_config = GM::Recorder.instance.get_target name
829
+ @gm_build_config = GM::Recorder.instance.get_target name
734
830
  @gm_build_config.is_release_target = option
735
831
  @gm_build_config.referenced_target = name
736
832
  when Hash
737
- @gm_build_config = GM::Recorder.instance.get_target String.new("T-") << label
833
+ @gm_build_config = GM::Recorder.instance.get_target String.new("T-") << label
738
834
  @gm_build_config.is_release_target = true
739
835
  @gm_build_config.referenced_target = String.new("T-") << option[:referenced]
740
836
  else
@@ -747,19 +843,20 @@ module Pod
747
843
  end
748
844
 
749
845
  alias_method :original_parse_inhibit_warnings, :parse_inhibit_warnings
846
+
750
847
  def parse_inhibit_warnings(name, requirements)
751
848
 
752
849
  CSJMPlugin.action do |recoder|
753
850
  options = requirements.last || {}
754
851
  name = Specification.root_name(name)
755
- @gm_build_config = recoder.get_target String.new("T-") << label
852
+ @gm_build_config = recoder.get_target String.new("T-") << label
756
853
  if GM::Adn_Adapter.is_adn?(name)
757
- load_key = GM::BuildConfig.get_load_key
758
- update_key = GM::BuildConfig.get_update_key
854
+ load_key = GM::BuildConfig.get_load_key
855
+ update_key = GM::BuildConfig.get_update_key
759
856
  load_detect_key = GM::BuildConfig.get_load_detect_key
760
857
 
761
858
  gm_note = @gm_build_config.find_note name
762
- GM::BuildConfig.get_all_config.each{|item|
859
+ GM::BuildConfig.get_all_config.each { |item|
763
860
  if options.is_a?(Hash) && options[item] != nil
764
861
  # gm_note.auto_load = options[item] if item == load_key ## adn维度 auto_load 失效
765
862
  gm_note.load_detect = options[item] if item == load_detect_key
@@ -774,6 +871,7 @@ module Pod
774
871
  end
775
872
 
776
873
  private
874
+
777
875
  def adapter_update_config(update_value)
778
876
  value = ''
779
877
  is_update = false
@@ -785,7 +883,7 @@ module Pod
785
883
  value = GM::BuildConfig.update_value_non
786
884
  when String
787
885
  value = update_value
788
- is_update = true if update_value == GM::BuildConfig.update_value_last_version || update_value == GM::BuildConfig.update_value_non
886
+ is_update = true if update_value == GM::BuildConfig.update_value_last_version || update_value == GM::BuildConfig.update_value_non
789
887
  else
790
888
  raise ArgumentError, "CSJM error: `#{update_value.inspect}`, 应该设置为布尔值"
791
889
  end
@@ -35,5 +35,33 @@ module GM
35
35
  def Network.push_track(body)
36
36
  data = post("https://gromore.pangolin-sdk-toutiao.com/api/ad/union/mediation/stats/",body)
37
37
  end
38
+
39
+ def Network.latest_version
40
+ url = URI.parse('https://sf3-fe-tos.pglstatp-toutiao.com/obj/csj-sdk-static/cocoapods-byte-csjm/latest_version.txt')
41
+ http = Net::HTTP.new(url.host, url.port)
42
+ http.use_ssl = true
43
+ request = Net::HTTP::Get.new(url)
44
+ response = http.request(request)
45
+ if response.code == '200'
46
+ result = response.body
47
+ return result
48
+ else
49
+ return nil
50
+ end
51
+ end
52
+
53
+ def Network.csj_did_release
54
+ url = URI.parse('https://cdn.cocoapods.org/all_pods_versions_a_9_a.txt') # GMGdtAdapter所在的地址
55
+ http = Net::HTTP.new(url.host, url.port)
56
+ http.use_ssl = true
57
+ request = Net::HTTP::Get.new(url)
58
+ response = http.request(request)
59
+ if response.code == '200'
60
+ result = response.body
61
+ return result.include?('GMGdtAdapter')
62
+ # return result.include?('AtomicSDK')
63
+ end
64
+ false
65
+ end
38
66
  end
39
67
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocoapods-byte-csjm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.13
4
+ version: 0.0.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - zhangtianhao.1230@bytedance.com
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-08-23 00:00:00.000000000 Z
11
+ date: 2024-04-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cocoapods
@@ -69,9 +69,6 @@ files:
69
69
  - LICENSE.txt
70
70
  - README.md
71
71
  - Rakefile
72
- - cocoapods-byte-csjm-0.0.4.gem
73
- - cocoapods-byte-csjm-0.0.5.gem
74
- - cocoapods-byte-csjm-0.0.6.gem
75
72
  - cocoapods-byte-csjm.gemspec
76
73
  - lib/cocoapods-byte-csjm.rb
77
74
  - lib/cocoapods-byte-csjm/config.rb
@@ -101,7 +98,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
101
98
  - !ruby/object:Gem::Version
102
99
  version: '0'
103
100
  requirements: []
104
- rubygems_version: 3.2.3
101
+ rubygems_version: 3.5.4
105
102
  signing_key:
106
103
  specification_version: 4
107
104
  summary: a plugin for csjm
Binary file
Binary file
Binary file