web-dev-qa-db-ja.com

iPhoneシミュレーターのクリーンアップ

IPhoneシミュレータ用にビルドするときに、Xcodeがアプリをデプロイするディレクトリをクリーンアップする簡単な方法はありますか?必要に応じて、起動時にDocumentsフォルダーにコピーされるsqliteデータベースがあります。問題は、スキーマを変更する可能性があるが、新しいデータベースは既に存在するため、コピーされないことです。

理想的には、ビルドするたびに、以前のコンテンツが破棄されます。これは可能ですか、それとも手動で行う必要がありますか?

104
Travis Jensen

シミュレーターはアプリを以下にインストールします:

"$HOME/Library/Application Support/iPhone Simulator/User/Applications"

以下も確認してください:

"$HOME/Library/Developer/CoreSimulator/Devices"

GUID=ファイルとディレクトリは、シミュレーターのインストール済みアプリに一致します。

これらすべてのファイル/ディレクトリを手動で削除して、シミュレータからすべてのアプリケーションを削除します。

XCodeのビルドプロセスにスクリプトを追加する方法があることは知っています。

また、XCodeがGUIDを変更するように見えます(GUID $ ====各ビルド(アプリが置かれているディレクトリはXCodeのビルド間で変更されます)) 。一度に1つのアプリでしか作業していない場合は、ディレクトリ全体を消去するのがオプションです。

86
PyjamaSam

Apples Dev Resourcesから:

シミュレーターのユーザーコンテンツと設定を出荷時の状態に設定し、インストールしたアプリケーションを削除するには、iPhone Simulator> Reset Content and Settingsを選択します。

これは次のようになります。

iOS Reset

130
j7nn7k

私がこれを行う方法は、シミュレーターでアプリのアイコンをクリックしてホールドすることです。その後、黒と白(x)をクリックします。本当に削除するかどうかを尋ねるメッセージがポップアップ表示されたら、[はい]をクリックします。次回アプリをビルドしてデプロイするとき、新しいsqlite dbが問題なく使用され、ファイルシステムをいじる必要はありません。

21
John

Mac OS X LionのiOS 5の後、次を試すことができます。

  1. 次を含むRemoveSimulatorApps.commandというスクリプトを作成します。
     rm -rf "$ HOME/Library/Application Support/iPhone Simulator/5.0/Applications /*"
    
  2. このスクリプトをPATHのディレクトリに保存します。
  3. 次のようなファイルを実行可能にします。
     chmod + x RemoveSimulatorApps.command

仮定

  • LogitechまたはMicrosoftキーボードのプログラム可能なキーなど(たとえば、.shの代わりに.commandファイルとして保存する)など、キーボードのお気に入りボタンからこれを呼び出すことができます。
  • IOSシミュレーターのすべてを吹き飛ばしても問題ありません(1つのアプリで積極的に作業している場合に理想的です)
  • 他の人からのすべてのメモは、優れたアップグレード可能なアプリであることなどに当てはまります(私は個人的にはこの便利なことに気付きましたb/c特定の状態でデータベースをリロードする開発モードスイッチがあるため、一貫した堅牢性/エラー処理を試みました)
12
idStar

やり過ぎかもしれませんが..

メニューと[コンテンツと設定をリセット...]を使用することもできます

8
ShoeLace

スキーマを変更した場合、実際にしようとしているのは、データベースをクリアすることです。これを行う1つの方法は、アプリのバージョン2.0、3.0などの出荷を開始するときに長期的にあなたを幸せにすることです。sqliteテーブルのバージョンを確認し、変更されている場合は破棄します古いファイルを使用し、バンドル内のファイルを使用します。

シミュレータをクリーンアップする方法を見つけても、新しいスキーマで新しいバージョンを出荷するときに顧客のiPhoneをクリーンアップする方法という現実の問題は解決しません。

余分な点については、古いスキーマに遭遇したと判断した後、古いデータベースを破壊せずに新しいデータベースをコピーし、古いデータベースから新しいデータベースに興味深いデータをロードします。次に、古いデータベースを吹き飛ばします。そうすることで、データベースへのユーザーの追加を保持できます。

7
mahboudz

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
6
jia tian

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 {}"
5
Thomas T

Xcode 9を使用している場合->Menubar->ハードウェア->すべてのコンテンツと設定を消去

Xcode -> Hardware -> Erase All Content and Settings

4
Harald

Xcode 6現在:

xcrun simctl erase <sim udid> <-シミュレーターをリセットします。

3
TinyTimZamboni

XCodeで、[ウィンドウ]メニューオプションに移動し、[デバイス]を選択すると、不要になったデバイスを削除できます。

1
Simon

Xcodeキャッシュをクリア;

Command + Option + Shift + K

Command + Shift + K

(機能が異なるため、両方を使用してください)

派生データの内容をクリア;

メニューバー->ウィンドウ->オーガナイザー->プロジェクト->プロジェクトの選択

右ペインにはフォルダの名前が表示され、右側の削除ボタンを使用すると、派生データの内容をすべて削除できます。

シミュレータキャッシュのクリア;

メニューバー-> iOSシミュレータ->コンテンツと設定のリセット

1
Huseyin

有効な回答 の下のコメントで説明していたように:

カレンダーサブスクリプションの追加と削除をテストしていました。実際のデバイスでは、SettingsAccountsでカレンダーサブスクリプションを削除できますが、このメニューはiOS SimulatorおよびIには存在しませんシミュレーター全体をリセットしたくありませんでした。

だから私はlocally私のDeviceフォルダをgitでバージョン管理し、次のコマンドを実行してカレンダーを削除しました追加後のサブスクリプション:

$ git reset HEAD --hard
$ git clean -f

手順は次のとおりです。

  1. IOSシミュレーターにアプリケーションをインストールし、必要な操作を行います
  2. ~/Library/Developer/CoreSimulator/Devices/でデバイスを識別し、cdを実行してからgit initを実行してgitリポジトリを作成します
  3. 状態を保存したい場合は、git commit -a "Message"を実行します
  4. 設定を変更するものは何でも(例:カレンダーサブスクリプションの追加)、テストを実行します
  5. シミュレーターをシャットダウンします
  6. git reset --hard HEADを実行
  7. シミュレータを起動します。git commitがなくなった後に行われたすべての変更。
1
Thibault D.

Xcode <= 5の場合

次を~/.bash_profileに追加しました

alias cleansim='rm -r ~/Library/Application\ Support/iPhone\ Simulator/5.1/Applications/*'

シミュレーション上のすべてのアプリを破棄するだけです。

0
wfbarksdale