泥エミュとして有名なBlueStacksだけど、必須とも言える機能が2つないのは以前書いたとおり。
- インスタンスのインポート/エクスポートがない
- ディスククリーンアップがない
インスタンスのインポート/エクスポートがない
ファイルを直に操作して別の場所に退避すればエクスポートの代わりにはなる。
具体的には、ブルスタのインストール場所である
***\BlueStacks_nxt
の配下にあるEngineというフォルダとbluestacks.confというファイルを待避すれば良い。
・・・のだが、
待避したときのブルスタのバージョンが、戻すときのブルスタのバージョンが一緒でないといけない。
それバックアップって言うか?
インスタンスを作るときに、泥のバージョン+_(連番)でディレクトリを作るので
別PCにインスタンスをコピーすることもできない(?)。
できるかもしれないけど、どこにどんな設定がされているか全部調べないといけない。
実際にディレクトリをコピーだけしてみたけど、インスタンスマネージャーの一覧に出てこないw
あー、残念すぎる。
気が向いたらそのうち検証するかも。
対応するようにしているとブルスタの中の人は言っているけど、全然実装される気配がない。
インスタンスマネージャーでインスタンスをフォルダで整理する事ができるようになりました!
とか そんなどうでも良い機能より先にやることがあるだろw
まぁこれは良いとして、問題は
ディスククリーンアップがない
NoxやMEmuのようにインスタンスのクリーンアップ(仮想ドライブの容量削減)ができない。
つまり大きくなる一方。
インスタンスを起動して何もしないで閉じただけで10MB増えたりする。
最悪である。
中身はVirtualBoxなので、なんとかならんのか探してみたけど
ゲストOSがWindowsな事例ばかりで、同じようにコマンドを叩いても全然ダメ。
一瞬で終わると思ったら、何もやっていなかったw(ファイルサイズとタイムスタンプが変わらない)
手はないのか色々調べたり検証したりした結果、上手くいった。
美しくないけど。
ニッチな情報だけど、他に見当たらないので助かる人が居るかもしれない。
BlueStacks5系の仮想ディスクをクリーンアップする方法
参考になったのはココ。
本物かどうかわからないけど、ブルスタの中の人が出てきて、取り組んでる と言っているものの
未だに実装されていないのでダメやん・・・と。
やりとりがちょっと面白かったw
では俺流のディスククリーンアップ方法。
■環境
BlueStacks 5.5.10.1002
Windows 10 Pro
■必要なアプリ
VirtualBox ※Oracleのサイトからダウンロード&インストール
CloneVDI tool ※VirtualBoxのフォーラム記事からダウンロード&インストール
■流れ
1. ファイルの待避
インスタンスのフォルダ内でいきなり始めるわけにはいかないので、別のフォルダにコピーする。
対象は
- Data.vhd ←諸悪の根源
- bstkファイル ←※インスタンス名※.bstkや、bstk-prev、Android.bstk.inなどが対象
こいつらをどこか作業用のフォルダに。
実際の作業をいちいち手動でやってられないので、バッチファイルを作ることにした。
パスを通してあることが前提でコマンドを書いているので注意。
2. Data.vhdのUUIDを確認
現在の仮想ディスク(=Data.vhd)のUUIDを調べる。
そのためにはVirtualBoxのVBoxManageを使用する。
VBoxManageはコマンドプロンプトからも実行できる。
UUIDはこんな感じで表示されるはず。
あとで使うので控えておく。
3. ファイルの圧縮(VHD→VDI)
CloneVDI toolを使用して、Data.vhdを圧縮する。
実行ファイルを叩くとGUIの画面が出てくるけど、コマンドプロンプトからも実行できる。
バッチ野郎にはうれしい限り。
このツールでは出力ファイルが*.vdiになってしまう。
対応していないのは作者の方が「えー、VHDィ?」な感じで乗り気じゃなかったからっぽいw
それにしたところで、これは神ツールだと思う。
mpack氏に圧倒的感謝っ・・・・!
コマンドだとこんな感じ。
最後の-cが圧縮のオプション。
どらぐらい容量を削れるかというと
5.87GBのファイルが4.25GBになる。
素晴らしいです。
圧倒的感謝っ・・・・!(再
このツールはUUIDを変えずに圧縮ということもできるけど使っていない。
理由は後述。
4. フォーマットの変更(VDI→VHD)
VDIのままだとブルスタでは使用できない。
少し前のバージョンなら使用できたらしいんだけど、5.5にしてしまったので
なんとかしてVHDにしなくてはならない。
その機能はVirtualBoxにある。
これでVDIからVHDに変換することができた。
ファイルサイズを比較すると大体同じ~ちょっと大きくなる。
5. Data.vhdのUUIDを確認
2. と同様に、変換し終わったファイルのUUIDを調べる。
UUIDは前に調べた物と違っているはず。
CloneVDI toolでUUIDを変えなくても、VBoxManageのフォーマット変換で
UUIDが変わってしまうためUUIDキープのオプションは無視した。
例によって、このUUIDを控えておく。
6. 設定ファイル書き換え
UUIDが変わってしまったため、Data.vhdだけ戻してインスタンスを起動しても
エラーになって落ちる。
その理由はbstkファイルに書かれているUUIDとData.vhdのUUIDが異なっているから。
作業用のフォルダに移動しておいたbstk系のファイルを開き、
変換前に取得したUUIDを変換後のUUIDに置換する。
ここが手動で美しくない。
7. 元の場所に戻す
Data.vhdとbstkファイルを元のフォルダに戻す。
bstkファイルに更新漏れがあると起動しない。
注意点としてはインスタンスを起動していたらダメだし、
インスタンスマネージャーも終了しておくこと。
bstkファイルを掴んでいることがあって、ファイルを上書きしても
元の内容に戻されることがあるから。
これにハマって悩ませられた。
途中のVBoxManage showhdinfoで確認するときにエラーが出ることがある。
これはC:\Users\※ユーザ名※\.VirtualBox\VirtualBox.xml
に記載している内容と
仮想ディスクのUUIDと上記パスのXMLファイルに記載されているUUIDが異なるから。
俺は面倒だからXMLファイルを消しているw
どうしようもなくなったときは、最初に待避しておいたファイルを上書きすれば
大抵は復活するはず。
面倒だけどこんな感じでクリーンアップはできる。
こんなのユーザにやらせるなよw
早く機能を実装してちょうだい。