iPhoneシミュレータ用にビルドするときにxcodeがアプリをデプロイするディレクトリをクリーンアップする簡単な方法はありますか?必要に応じて、起動時にDocumentsフォルダーにコピーされるsqliteデータベースを持っています。問題は、スキーマを変更する可能性があることですが、新しいデータベースは既に存在するため、コピーされません。
理想的には、ビルドするたびに、以前のコンテンツが核になるでしょう。これは可能ですか、それとも手動で行う必要がありますか?
iPhoneシミュレータ用にビルドするときにxcodeがアプリをデプロイするディレクトリをクリーンアップする簡単な方法はありますか?必要に応じて、起動時にDocumentsフォルダーにコピーされるsqliteデータベースを持っています。問題は、スキーマを変更する可能性があることですが、新しいデータベースは既に存在するため、コピーされません。
理想的には、ビルドするたびに、以前のコンテンツが核になるでしょう。これは可能ですか、それとも手動で行う必要がありますか?
回答:
シミュレーターはアプリを次の場所にインストールします:
"$HOME/Library/Application Support/iPhone Simulator/User/Applications"
また確認してください:
"$HOME/Library/Developer/CoreSimulator/Devices"
GUIDファイルとディレクトリは、シミュレーターにインストールされているアプリと一致します。
それらのファイル/ディレクトリをすべて手動で削除して、シミュレータからすべてのアプリケーションを削除します。
XCodeのビルドプロセスにスクリプトを追加する方法があることは知っています。
また、XCodeが各ビルドで使用するGUID(XCodeのビルド間でアプリが置かれているディレクトリが異なる)を変更しているように見えるため、同じディレクトリを常に削除しようとしても機能しません。一度に1つのアプリでのみ作業している場合は、ディレクトリ全体を消去することもできます。
git reset HEAD --hard && git clean -f
追加後にカレンダーサブスクリプションを削除するために実行しました
Apples Dev Resourcesから:
シミュレーターのユーザーコンテンツと設定を工場出荷時の状態に設定し、インストールしたアプリケーションを削除するには、[iPhone Simulator]> [Reset Content and Settings]を選択します。
これは次のようになります。
Hardware > Reset Content and Settings
これを行う方法は、シミュレータでアプリのアイコンをクリックしてそのまま押し続けることです。次に、アプリが小刻みに動き始めたら、白黒(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 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>
<-シミュレータをリセットします。
検証された回答の下でコメントで説明していたように:
カレンダーのサブスクリプションの追加と削除をテストしていました。実際のデバイスでは、[設定]、[ アカウント]でカレンダーのサブスクリプションを削除できますが、このメニューはiOSシミュレーターには存在せず、シミュレーター全体をリセットしたくありませんでした。
そのため、gitを使用してDeviceフォルダーをローカルでバージョン管理し、次のコマンドを実行して、追加したカレンダーサブスクリプションを削除しました。
$ 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/*'
それはシムのすべてのアプリを核にするだけです。