これは、Android エミュレーターを使用しているときによくある質問ですが、エミュレーターに永続的な変更を強制的に受け入れる方法はあります/systemか?
エミュレーターは QEMU に基づいているため、理論的には(たとえば)systemイメージを強制的に同じように動作させることは可能userdataですが、QEMU がどのように処理するかについてはよくわかりません。ポインタはありますか?
更新:この-nandオプションは QEMU の最新バージョンから削除されたようです。そのため、以下は機能しなくなる可能性があります。
更新:現在のやり方については、受け入れられた回答を参照してください。
Yuryの答えは一般的なものですが、スクリプトを作成できるようにしたい場合(最終的にはこれが必要です)、/tmpディレクトリでエミュレーターイメージを見つけることができる必要があります。
QEMU の動作をオーバーライドできることがわかりました。これは少しハックですが、機能するので、最終的にこれを実行しました:
system.imgプラットフォーム ディレクトリから AVD ディレクトリにコピーします。0x1f400000.エミュレーターを読み取り/書き込みモードで実行します。
emulator -avd Galaxy_Nexus -qemu -nand system,size=0x1f400000,file=/home/fx/.android/avd/Galaxy_Nexus/system.img
initfile=(エミュレーターを冗長モードにすると、デフォルトで、単に の代わりに使用されることに気付くでしょうfile=)
変更を加えると、すぐにローカルに保存されますsystem.img
emulator -avd Galaxy_Nexus、変更が使用されます更新:スクリプトの場合、QEMU は変更をすぐにイメージに同期しないため、何かを変更した直後に再起動すると、データが失われる可能性があります。私はこれを回避する方法を探しています...
次の更新:adb -e emu killエミュレーターを停止するために使用します。reboot悪いことばかりする。
それは実際には非常に良い質問です。私も同じ悩みを抱えていました。これが私の発見です。実際、私は Ubuntu を使用しており、Ubuntu の手順を説明します。Windows を使用している場合は、パスを変更するだけです。
example.avdandroid-sdk-linux/platforms/android-10/images
します。~/.android/avd/example.avdemulator -avd examplemount -o rw,remount -t
yaffs2 /dev/block/mtd0 /system(パーティションを検出するには、コマンドを使用しますcat /proc/mtd) 。/tmp/android-<your_computer_name>エミュレーターの実行中に、次のような奇妙な名前の
tmp エミュレーターを見つけ
emulator-PQ7LgEてコピーします。~/.android/avd/example.avdsystem.imgコピーした tmp エミュレーターを削除して名前を変更します。system.imgcache.img、userdata.imgおよびuserdata-qemu.imgから
削除~/.android/avd/example.avd幸運を!
FX が投稿した system.img ファイルと AVD ディレクトリを見つけるのに苦労しました。Mac では、次の場所にあります。
~/Library/Android/sdk/system-images/android-19/default/~/.android/avd/Nexus.avd/コメントとして追加するほどの評判がないので、このように投稿する必要がありました。ごめん。