読者です 読者をやめる 読者になる 読者になる

【xcode】プロジェクト名を変更するのが思ったより面倒だったので手順まとめておく

xcode swift

はじめに

アプリ名とかを仮のまま開発を進めて途中でアプリ名が決定。
プロジェクト名などが旧名称のままだと気持ち悪いのでプロジェクト名を変更したかったのでその時の手順をまとめておきます。

今回は以下の名前をで変更します。
変更前:SampleOld
変更後:SampleNew

とりあえず動くようにする

プロジェクト名を変更

xcodeの[Identity and Type]から「SampleOld」→「SampleNew」に変更。
赤枠の箇所をすべて修正すればたぶんOK
f:id:yoppy0066:20170121000555p:plain

Cocoapods修正

Podfileにプロジェクト名の記述があるので修正

Podfile

target 'SampleNew' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
    use_frameworks!
    # Pods for SampleNew
    pod 'AFNetworking'
    ・・・

    target 'SampleNewTests' do
      inherit! :search_paths
      # Pods for testing
    end

    target 'SampleNewUITests' do
      inherit! :search_paths
      # Pods for testing
    end
end

インストールし直す

$ pod install
Bridging-Header.h修正

まずはリネーム
SampleOld-Bridging-Header.h →Sample New-Bridging-Header.h

設定も修正
f:id:yoppy0066:20170121000710p:plain

ここまででビルドとかは問題なくできるようになった。
しかしプロジェクトの中を見るとわかるが実際のフォルダ名はSampleOldのままで気持ち悪い。

旧プロジェクト名を完全になくす

プロジェクトディレクトリ直下に
SampleOld、SampleOldTests、SampleOldUITestsというフォルダが残っているのでそれぞれSampleOld => SampleNewにリネーム

テキストファイルの文字列を置換
find . -path "./.git" -prune -o -type f -print | perl -nle 'print if -f && -T' | xargs sed -i "" "s/SampleOld/SampleNew/g"
バイナリファイルの文字列を置換

バイナリファイルの置換とかやり方わからなかたったので、数も多くないのでviで直接編集した。

検索

$ find . -path "./.git" -prune -o -type f -print | xargs grep "SampleOld" 2> /dev/null
Binary file ./SampleOld.xcworkspace/xcuserdata/xxx.xcuserdatad/UserInterfaceState.xcuserstate matches
・・・

ファイル編集

$ vi -b ./SampleOld.xcworkspace/xcuserdata/xxx.xcuserdatad/UserInterfaceState.xcuserstate
・・・
:%s/SampleOld/SampleNew/g # 全置換して
:wq! # 保存
missing from working copy

git、svnを使ってる場合、ビルドすると上記のワーニングが出る。
コミットすると消えるらしい

さいごに

とりあえずここまでやったらちゃんと動いてる感じ。
今後何も起きないことを祈ります。以上です

以下、参考にさせて頂きました
findで特定のディレクトリを検索対象外(除外)にする - hogehoge foobar Blog Style5
findでテキストファイルのみ抽出 - Qiita