26

これは、Android エミュレーターを使用しているときによくある質問ですが、エミュレーターに永続的な変更を強制的に受け入れる方法はあります/systemか?

エミュレーターは QEMU に基づいているため、理論的には(たとえば)systemイメージを強制的に同じように動作させることは可能userdataですが、QEMU がどのように処理するかについてはよくわかりません。ポインタはありますか?

4

10 に答える 10

15

更新:この-nandオプションは QEMU の最新バージョンから削除されたようです。そのため、以下は機能しなくなる可能性があります。

更新:現在のやり方については、受け入れられた回答を参照してください。


Yuryの答えは一般的なものですが、スクリプトを作成できるようにしたい場合(最終的にはこれが必要です)、/tmpディレクトリでエミュレーターイメージを見つけることができる必要があります。

QEMU の動作をオーバーライドできることがわかりました。これは少しハックですが、機能するので、最終的にこれを実行しました:

  1. system.imgプラットフォーム ディレクトリから AVD ディレクトリにコピーします。
  2. 必要なスペースの量を 16 進数に変換します。たとえば、500M が必要な場合、これは0x1f400000.
  3. エミュレーターを読み取り/書き込みモードで実行します。

    emulator -avd Galaxy_Nexus -qemu -nand system,size=0x1f400000,file=/home/fx/.android/avd/Galaxy_Nexus/system.img
    

    initfile=(エミュレーターを冗長モードにすると、デフォルトで、単に の代わりに使用されることに気付くでしょうfile=)

  4. 変更を加えると、すぐにローカルに保存されますsystem.img

  5. でエミュレータを起動するだけでemulator -avd Galaxy_Nexus、変更が使用されます

更新:スクリプトの場合、QEMU は変更をすぐにイメージに同期しないため、何かを変更した直後に再起動すると、データが失われる可能性があります。私はこれを回避する方法を探しています...

次の更新:adb -e emu killエミュレーターを停止するために使用します。reboot悪いことばかりする。

于 2013-03-15T07:40:47.007 に答える
8

それは実際には非常に良い質問です。私も同じ悩みを抱えていました。これが私の発見です。実際、私は Ubuntu を使用しており、Ubuntu の手順を説明します。Windows を使用している場合は、パスを変更するだけです。

  1. たとえば、新しい AVD を作成します。example.avd
  2. system.img をコピーandroid-sdk-linux/platforms/android-10/images します。~/.android/avd/example.avd
  3. system.img を書き込み可能および読み取り可能にします (プロパティで、または単にターミナルを使用して)
  4. コマンドを使用して AVD を実行しますemulator -avd example
  5. adb shell を使用してシステムを rw として再マウントしますmount -o rw,remount -t yaffs2 /dev/block/mtd0 /system(パーティションを検出するには、コマンドを使用しますcat /proc/mtd) 。
  6. 変更を加える...
  7. /tmp/android-<your_computer_name>エミュレーターの実行中に、次のような奇妙な名前の tmp エミュレーターを見つけ emulator-PQ7LgEてコピーします。~/.android/avd/example.avd
  8. system.imgコピーした tmp エミュレーターを削除して名前を変更します。system.img
  9. エミュレーターを閉じる
  10. cache.imguserdata.imgおよびuserdata-qemu.imgから 削除~/.android/avd/example.avd
  11. エミュレータをもう一度実行します

幸運を!

于 2013-03-14T20:06:45.450 に答える
2

FX が投稿した system.img ファイルと AVD ディレクトリを見つけるのに苦労しました。Mac では、次の場所にあります。

  • システム.img:~/Library/Android/sdk/system-images/android-19/default/
  • AVD ディレクトリ:~/.android/avd/Nexus.avd/

コメントとして追加するほどの評判がないので、このように投稿する必要がありました。ごめん。

于 2015-06-26T22:35:10.427 に答える