IOS開発日記1-プロジェクトで複数のtargetおよびpodfileファイル構成を構成

2807 ワード

前言


最近の会社の1つのプロジェクトは2つのapp端に分かれていて、2つのappの違いは小さくて、差は70%も同じモジュールではありませんが、個別のモジュールには違いがあります.最初はそんなに考えていませんでしたが、簡単にするために、それぞれ2つのプロジェクトを作成しました.その後、リーダーが2つのエンドを同時に行うように要求したので、突然2つのプロジェクトで切り替えるのが面倒だと感じました.同じモジュールを多重化するのは面倒で、毅然として決定して、2つのappエンドを1つのプロジェクトに柔らかくしました.以前githubでダウンロードしたサードパーティ製ライブラリから提供されたdemoは、異なる実行targetを選択することができ、複数のtargetを作成して異なるappエンドを生成し、やると言ったらやると思って、試験プロジェクトの複数のtarget構成を開始したことを覚えています.

複数のtargetの構成


1.copy target.
プロジェクト構成TARGETSでコピーするターゲットを選択し、Duplicateを右クリックして、***copyという名前のターゲットが表示されます.
2.target名を変更します.
まず、新しくコピーしたtargetの名前を変更し、targetの名前をダブルクリックして編集状態に入り、名前の変更を行うことができます.
次にschemeの名前を変更し、Xcodeの左上隅でプロジェクト名をクリックし、ポップアップのドロップダウンボックスでManage Schemesを選択し、ポップアップのリストボックスで***copyという新しいtargetを選択し、前に変更したのと同じ名前に変更します.
3.targetを構成します.
copy targetで***copy-infoもコピーしました.plistファイルは、もちろん自分の必要に応じてこのplistの名前を変更できますが、必ずこのplistファイルとtargetを再バインドします.新しいcopyのtargetを選択し、Generalをクリックすると、ファイルを選択するボタンが表示され、名前を新しく変更したplistファイルを選択します.
この2つのtargetは実際にはほぼ成功しており、現在は2つのtargetが実行可能になっています.後でファイルを追加するときは、自分の必要に応じて対応するtargetに追加すればいいです.しかし、コードの中でどのように2つのtargetを区別しますか?プリコンパイルマクロを追加して解決できます.target->Build Settings,検索:Preprocessor Macros,DebugとReleaseのプリコンパイルマクロコンテンツを設定しますTARGET_VERSION=1はtargetバージョンを表し(注意=前後に右スペースはできませんが、スペースがあるとコンパイルされますが)、プログラムでは異なるバージョンについて、#if TARGET_VERSION_LITE ==1 ... #elif TARGET_VERSION_LITE ==2 ... #endif

問題は?


プロジェクトの前にpodfileが構成されているため、コピー後の2つのtargetは問題ありませんが、podfileに新しい3つのライブラリ、pod installを追加すると、そのうちの1つのtargetがヘッダファイルを見つけられません.前に資料を調べてみると、podfileファイルを先に書いて、pod installにして、最後にcopyにして、問題が起こらないようにという文章がありました.しかし、1つのプロジェクトでは、後でどのようなサードパーティライブラリが使用されるか、また複数の人が協力しているかを予測するのが難しい場合があります.他の人が新しいサードパーティライブラリを追加しないのは避けられません.何度も実験を経て、資料を調べて、自分がまた新大陸を発見したように感じて、もとはpodファイルの編纂も学問で、文法もたくさんあります.問題を解決する方法はpodfileファイルの正確な作成です.公式podfileファイルの作成文法を見て、実験を経て、やっとこの問題を解決しました.
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
abstract_target 'AAAA' do  

pod 'AFNetworking', '~> 3.0'
pod 'Masonry'
pod 'MJRefresh'
pod 'SDWebImage', '~>3.8'
pod 'RongCloudIM/IMLib', '2.8.0'
pod 'RongCloudIM/IMKit', '2.8.0'
pod 'SVProgressHUD'

target 'BBBB'
target 'CCCC'
end

podfileプロファイルでabstract_を使用しましたtargetキーワード、後に続く名前AAAAAAは存在しないtarget名前で、後に私のプロジェクトに実際に存在する2つのtargetを追加して、全体的に私のこの2つのtargetが上のすべてのライブラリを共有していることを示します.もちろん他にも実現できる方法があると思いますが、pod文法はまだよく知られていないので、勉強しなければならないところがたくさんあります.
最後に、まだ起動ページやiconピクチャが設定されていないため、複数のtargetがどのように構成されているか分かりませんが、あれば後述します.

締めくくり


初めて書いて、自分の開発ノートを記録して、まだよく知らないところがたくさんあって、markdownに詳しくなくて、言語の組織能力もまだ不足して、いつも自分がはっきり言っていないと感じて、引き続き努力します.これから図を添えて、図文が茂ることを望んでいます.最后に文章に何か悪いところがありましたら、よろしくお愿いします.