iOS開発コンポーネント化Podfileが大きすぎたり、内容が長すぎたりしたらどうしますか?
iOS開発コンポーネント化Podfileが大きすぎたり、内容が長すぎたりしたらどうしますか?
日常的なiOS開発では、Cocoapodsを使用してさまざまなサードパーティを管理したり、コンポーネント化したりするときに、独自のコンポーネントを管理したりします.プロジェクトが複雑になるとPodfileも肥大化するので、中の内容を複数のファイルに分散します.もっとメンテナンスがよくなります.
どうしよう?
CocoapodsはRuby言語で書かれていることはよく知られていますので、自分でスクリプトを書いて、複数のファイルからロードするPodライブラリを読み込みます.まずDemoアドレスを置いて、皆さんが調べるようにします:PodfileExample
準備作業 Podfile、これは簡単です. を作成します.他のファイルは、これも簡単ですが、
実は、Demoを見てから、あなたはもうどうすればいいか知っていると信じています.では、ここで、私は一部のコードを貼って、大まかな意味を少し説明します.
Pod_Business.rb
注意!
Podfile
ディスカッション
実際には、classを定義したり、
他に何か質問があれば、下のコメントエリアにコメントしてください~またはGithub PodfileExampleにissueを提出してください.
日常的なiOS開発では、Cocoapodsを使用してさまざまなサードパーティを管理したり、コンポーネント化したりするときに、独自のコンポーネントを管理したりします.プロジェクトが複雑になるとPodfileも肥大化するので、中の内容を複数のファイルに分散します.もっとメンテナンスがよくなります.
どうしよう?
CocoapodsはRuby言語で書かれていることはよく知られていますので、自分でスクリプトを書いて、複数のファイルからロードするPodライブラリを読み込みます.まずDemoアドレスを置いて、皆さんが調べるようにします:PodfileExample
準備作業
pod init
は.rb
などの拡張子Pod_Business.rb
を加えたほうがいいです.実は、Demoを見てから、あなたはもうどうすればいいか知っていると信じています.では、ここで、私は一部のコードを貼って、大まかな意味を少し説明します.
Pod_Business.rb
#
# , 。 3 、 10
#
#
Alarmfire
#JSON
HandyJSON, 5.0.0
# , , , , 。
PodfileExample, 0.1.0, ../
#
#end of the file
注意!
.rb
ファイルでは空行は不要ですが、読み込み時には1行ずつ読み取り、「#」と「/」の先頭の記号のみがフィルタリングされているので、空行も「#」で埋めておきますので、具体的には以下の参考にしてくださいPodfile
#
#source 'https://xxx.com/xxxx/xxx/xx.git'
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '10.0'
use_frameworks!
# , , 。
# Podfile , 。
def all_pods(file)
file_path = File.expand_path(file)
if !File.exists? file_path
# ,
return [];
end
# ,
pods_array = []
# # /
skip_line_start_symbols = ["#", "/"]
#
File.foreach(file_path) { |line|
# ,
next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ }
# , ,
pods_array.push(line);
}
return pods_array
end
target 'PodfileExample_Example' do
#
file_array = ['Pod_Business.rb', 'Pod_UI.rb']
#
file_array.map { |file|
# ,
pods_array = all_pods(file)
#
pods_array.map { |line|
# ,
array = line.split(",")
#strip()
#
name = array[0].strip()
if array.length == 2
#
version = array[1].strip()
# , pod 。
pod name, version
elsif array.length == 3
# path , , , 。
path = array[2].strip()
# path
pod name, :path => path
else
# pod
pod name
end
}
}
#
pod 'LookinServer', :configurations => ['Debug'] #UI
end
ディスカッション
実際には、classを定義したり、
name、version、path......
などのいくつかの変数を宣言したりして、ファイルから行ごとに読み取り、定義したclassのインスタンスを生成して配列に配置するなど、より完璧な方法があります.最後に,解析の際も配列を遍歴し,オブジェクトによって異なるpod文を生成すればよい.他に何か質問があれば、下のコメントエリアにコメントしてください~またはGithub PodfileExampleにissueを提出してください.