IPhoneシミュレータ用にビルドするときに、Xcodeがアプリをデプロイするディレクトリをクリーンアップする簡単な方法はありますか?必要に応じて、起動時にDocumentsフォルダーにコピーされるsqliteデータベースがあります。問題は、スキーマを変更する可能性があるが、新しいデータベースは既に存在するため、コピーされないことです。
理想的には、ビルドするたびに、以前のコンテンツが破棄されます。これは可能ですか、それとも手動で行う必要がありますか?
シミュレーターはアプリを以下にインストールします:
"$HOME/Library/Application Support/iPhone Simulator/User/Applications"
以下も確認してください:
"$HOME/Library/Developer/CoreSimulator/Devices"
GUID=ファイルとディレクトリは、シミュレーターのインストール済みアプリに一致します。
これらすべてのファイル/ディレクトリを手動で削除して、シミュレータからすべてのアプリケーションを削除します。
XCodeのビルドプロセスにスクリプトを追加する方法があることは知っています。
また、XCodeがGUIDを変更するように見えます(GUID $ ====各ビルド(アプリが置かれているディレクトリはXCodeのビルド間で変更されます)) 。一度に1つのアプリでしか作業していない場合は、ディレクトリ全体を消去するのがオプションです。
私がこれを行う方法は、シミュレーターでアプリのアイコンをクリックしてホールドすることです。その後、黒と白(x)をクリックします。本当に削除するかどうかを尋ねるメッセージがポップアップ表示されたら、[はい]をクリックします。次回アプリをビルドしてデプロイするとき、新しいsqlite dbが問題なく使用され、ファイルシステムをいじる必要はありません。
Mac OS X LionのiOS 5の後、次を試すことができます。
RemoveSimulatorApps.command
というスクリプトを作成します。rm -rf "$ HOME/Library/Application Support/iPhone Simulator/5.0/Applications /*"
PATH
のディレクトリに保存します。chmod + x RemoveSimulatorApps.command
やり過ぎかもしれませんが..
メニューと[コンテンツと設定をリセット...]を使用することもできます
スキーマを変更した場合、実際にしようとしているのは、データベースをクリアすることです。これを行う1つの方法は、アプリのバージョン2.0、3.0などの出荷を開始するときに長期的にあなたを幸せにすることです。sqliteテーブルのバージョンを確認し、変更されている場合は破棄します古いファイルを使用し、バンドル内のファイルを使用します。
シミュレータをクリーンアップする方法を見つけても、新しいスキーマで新しいバージョンを出荷するときに顧客のiPhoneをクリーンアップする方法という現実の問題は解決しません。
余分な点については、古いスキーマに遭遇したと判断した後、古いデータベースを破壊せずに新しいデータベースをコピーし、古いデータベースから新しいデータベースに興味深いデータをロードします。次に、古いデータベースを吹き飛ばします。そうすることで、データベースへのユーザーの追加を保持できます。
xcode> = 6の場合
xcrun simctl list | grep -oh '[A-Z0-9]\{8\}-[A-Z0-9]\{4\}-[A-Z0-9]\{4\}-[A-Z0-9]\{4\}-[A-Z0-9]\{12\}' | xargs -n1 xcrun simctl erase
Xcode 6の時点では、コマンドラインから次のコマンドを使用してこれを行うことができます。xcrun simctl erase
また、iOSシミュレーターアプリ(Xcode 6バージョンと古いバージョンの両方)には、現在起動しているデバイスを消去するために使用できる「コンテンツと設定のリセット」というメニュー項目があります。
これはXcode 6で動作します:
xcrun simctl list | grep -oh '[A-Z0-9]\{8\}-[A-Z0-9]\{4\}-[A-Z0-9]\{4\}-[A-Z0-9]\{4\}-[A-Z0-9]\{12\}' | xargs -I{} xcrun simctl erase {}
.bash_profileの場合
alias cleansim="xcrun simctl list | grep -oh '[A-Z0-9]\{8\}-[A-Z0-9]\{4\}-[A-Z0-9]\{4\}-[A-Z0-9]\{4\}-[A-Z0-9]\{12\}' | xargs -I{} xcrun simctl erase {}"
Xcode 6現在:
xcrun simctl erase <sim udid>
<-シミュレーターをリセットします。
XCodeで、[ウィンドウ]メニューオプションに移動し、[デバイス]を選択すると、不要になったデバイスを削除できます。
Xcodeキャッシュをクリア;
Command + Option + Shift + K
Command + Shift + K
(機能が異なるため、両方を使用してください)
派生データの内容をクリア;
メニューバー->ウィンドウ->オーガナイザー->プロジェクト->プロジェクトの選択
右ペインにはフォルダの名前が表示され、右側の削除ボタンを使用すると、派生データの内容をすべて削除できます。
シミュレータキャッシュのクリア;
メニューバー-> iOSシミュレータ->コンテンツと設定のリセット
有効な回答 の下のコメントで説明していたように:
カレンダーサブスクリプションの追加と削除をテストしていました。実際のデバイスでは、Settings、Accountsでカレンダーサブスクリプションを削除できますが、このメニューはiOS SimulatorおよびIには存在しませんシミュレーター全体をリセットしたくありませんでした。
だから私はlocally私のDeviceフォルダをgitでバージョン管理し、次のコマンドを実行してカレンダーを削除しました追加後のサブスクリプション:
$ git reset HEAD --hard
$ git clean -f
手順は次のとおりです。
~/Library/Developer/CoreSimulator/Devices/
でデバイスを識別し、cd
を実行してからgit init
を実行してgitリポジトリを作成しますgit commit -a "Message"
を実行しますgit reset --hard HEAD
を実行git commit
がなくなった後に行われたすべての変更。Xcode <= 5の場合
次を~/.bash_profile
に追加しました
alias cleansim='rm -r ~/Library/Application\ Support/iPhone\ Simulator/5.1/Applications/*'
シミュレーション上のすべてのアプリを破棄するだけです。