これは、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.avd
android-sdk-linux/platforms/android-10/images
します。~/.android/avd/example.avd
emulator -avd example
mount -o rw,remount -t
yaffs2 /dev/block/mtd0 /system
(パーティションを検出するには、コマンドを使用しますcat /proc/mtd
) 。/tmp/android-<your_computer_name>
エミュレーターの実行中に、次のような奇妙な名前の
tmp エミュレーターを見つけ
emulator-PQ7LgE
てコピーします。~/.android/avd/example.avd
system.img
コピーした tmp エミュレーターを削除して名前を変更します。system.img
cache.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/
コメントとして追加するほどの評判がないので、このように投稿する必要がありました。ごめん。