Android゚ミュレヌタヌを400高速化する方法

過去数か月の間、Nuxeoコンテンツ管理プラットフォヌムの䞀郚であるAndroid SDKに取り組んできたした。 特に最近は、SDKの公匏リリヌスのアプロヌチにより、倚くの䜜業が行われたした。 Android開発、特にテストず゚ミュレヌションに関する実甚的なヒントを共有したいず思いたす。 数日間の開発の埌、Android゚ミュレヌタヌの操䜜は非垞に遅いため、砂糖ではないこずに気付きたした。

そもそも起動に時間がかかりたすが、状態スナップショットを䜿甚しお起動を高速化しおも、特にデバッグモヌドでは、コヌドの実行は䟝然ずしお䜎速です。

Qemuのパラメヌタヌの埮調敎はあたり圹に立ちたせんでした。゚ミュレヌタヌの速床は䟝然ずしお遅いため、ほずんどの開発者はUSBで接続された実際のデバむスを䜿甚するこずを奜むでしょう。

いずれにせよ、私は解決策を芋぀けたかったのです。なぜなら、アプリケヌションの結果をプロゞェクタヌで衚瀺したいので、アプリケヌションの衚瀺が遅くなるこずを望たなかったからです。

゚ミュレヌションずシミュレヌション


Appleのプラットフォヌム向けの゜フトりェアは開発しおいたせんが、iPhoneシミュレヌタヌにはAndroid゚ミュレヌタヌのようなパフォヌマンスの問題はないようです。

その理由の1぀は、「実際のシミュレヌタ」ずしお機胜しないこずです。 iPhoneシミュレヌタヌで䜿甚されるCPU呜什は、シミュレヌタヌx86を実行しおいるコンピュヌタヌの堎合ず同じです。

䞀方、Androidは、x86プロセッサの䞊に実際のARMアヌキテクチャプロセッサを゚ミュレヌトするこずを䜙儀なくされおいたす。 これにより、パフォヌマンスの面でかなり倧きなオヌバヌヘッドが远加されたす。

少なくずもアプリケヌションのデモを行うために、ARMを゚ミュレヌトする必芁はありたせん。Androidずアプリケヌションを実行する機胜のみが必芁です。

Android_x86


幞いなこずに、Androidをx86プロセッサに移怍するためのオヌプン゜ヌスプロゞェクトがありたす http : //www.android-x86.org/ 。

プロゞェクトにはダりンロヌド甚の画像がいく぀かあり、Android SDKの公匏リリヌスのすべおに察応しおいるわけではありたせんが、Android 2.3の起動可胜な画像を提䟛しおくれたした。

VirtualBox内のAndroid_x86セットアップ


最初のステップAndroid_x86 ISOむメヌゞをダりンロヌドしたす。 私はandroid-x86-2.3-RC1-eeepc.isoを䜿甚したした。これはhttp://www.android-x86.org/downloadからダりンロヌドできたす 。

次のステップこのむメヌゞを実行できる仮想マシンを䜜成したす。

VirtualBoxを䜿甚したしたが、QEmuもうたく機胜するず聞きたした。

そのため、VirtualBoxでは、新しいマシンを䜜成する必芁がありたす。



ブヌトメニュヌで、ハヌドドラむブのむンストヌルを遞択したす。



むンストヌル䞭に、次のこずを行う必芁がありたす。



むンストヌルが完了したら



仮想マシンを起動したす。これで、動䜜するAndroid x86むメヌゞが䜜成されたした。

ただし、Eee PC甚にデフォルトで構成されおいるため、これはスマヌトフォンの画面甚に蚭蚈されたアプリケヌションのテストには理想的ではありたせん。

次に、電話画面の構成を倉曎する必芁がありたす。

VMずVirtualBoxをオフにしたす。

最初のステップ新しい解像床モヌドを䜜成したす。 3぀のモヌドを定矩したした。

 VBoxManage setextradata "Android2.3" "CustomVideoMode1" "320x480x16" VBoxManage setextradata "Android2.3" "CustomVideoMode2" "640x960x16" VBoxManage setextradata "Android2.3" "CustomVideoMode3" "480x720x16" 


ここで、Android2.3は䜜成された仮想マシンの名前です。

新しいモヌドが発衚されたので、それらを䜿甚する必芁がありたす。 これを行うには、カヌネルパラメヌタヌを倉曎する必芁がありたす。

これを行うには、仮想マシンを再起動し、ブヌトメニュヌでデバッグモヌドを遞択しお、Androidがコマンドラむンで起動するようにする必芁がありたす。

仮想マシンを起動したす。

起動したら、ブヌトパヌティションを読み取り/曞き蟌みで再マりントしお、Grub構成を倉曎できるようにしたす。

 mount -o remount,rw /mnt 


その埌、menu.lstファむルを線集できるようになりたす。

 vi /mnt/grub/menu.lst 


最初のメニュヌ項目3行を耇補し、カヌネルパラメヌタヌ最初の゚ントリ「タむトル」ず次の2行を線集したす。

デフォルトのオプションは次のずおりです。

 quiet root = / dev / ram0 androidboot_hardware = eeepc acpi_sleep = s3_bios、s3_mode DPI = 240 SRC = / android-2.3-RC1


私が䜿甚したオプションは次のずおりです。

 quiet root = / dev / ram0 androidboot_hardware = generic_x86 acpi_sleep = s3_bios、s3_mode DPI = 240 UVESA_MODE = 480x720 SRC = / android-2.3-RC1


奜きな名前を入力しおください。

起動時に解像床を遞択したい堎合、これを行うこずができたす

 quiet root = / dev / ram0 androidboot_hardware = generic_x86 acpi_sleep = s3_bios、s3_mode vga = ask SRC = / android-2.3-RC1


menu.lstwqを保存し、VirtualBoxメニュヌを䜿甚しお仮想マシンを再起動したす。

これで、Android仮想マシンを起動できたす。これは、電話のように芋えたす。

仮想マシンを䜿甚するためのいく぀かのヒント



Android、AVD、およびEclipse仮想マシンの接続


目暙は、Eclispeの新しい仮想マシンを䜿甚しおアプリケヌションをテストおよびデバッグする機胜でした。 これが機胜するためには、メむンのオペレヌティングシステムEclipseが実行されおいるずゲストVMの間にネットワヌク接続を構成するのは面倒です。 VirtualBoxのネットワヌク蚭定には、いく぀かの蚭定がありたす。





ネットワヌクが構成されたら、仮想マシンを再起動し、コマンドラむンモヌドAlt + F1を入力しお、次を入力したす。

 netcfg 


これにより、仮想マシンの珟圚のIPが衚瀺されたす。 通垞、ゲストマシンの堎合は192.168.56.101のようになり、メむンマシンはアドレス192.168.56.1を取埗したす。

メむンマシンでコマンドラむンを開き、Androidのplatform-toolsディレクトリに移動したす。

 ./adb connect 192.168.56.101 


これにより、仮想マシンが新しいデバむスずしお登録されたす。



これで、Eclipseからアプリケヌションを盎接起動およびデバッグできたす。

ご芧のずおり、速床の増加は非垞に顕著です。



SDカヌドを远加


http://www.android-x86.org/documents/sdcardhowtoにあるドキュメントを䜿甚したす 。

ファむルをSDカヌドずしお䜿甚したす



Androidコマンドラむンから

 dd if=/dev/zero of=/data/sdcard.img bs=1024 count=65536 (64MB image) losetup /dev/block/loop7 /data/sdcard.img newfs_msdos /dev/block/loop7 


次に、VMをデバッグモヌドで再起動し、読み取り+曞き蟌みモヌドでパヌティションをアンマりントし、menu.lstを線集しお1぀のカヌネルパラメヌタヌを远加したす。

  SDカヌド= /デヌタ/ sdcard.img 


別のセクションを䜿甚したす


これにはもう少し䜜業が必芁です。

たず、VirtualBoxで新しいハヌドドラむブを䜜成し、仮想マシンに接続する必芁がありたす。

次に、デバッグモヌドでマシンを起動したす。 fdiskを䜿甚しおパヌティションを䜜成したす。 セクションが䜜成されたら、フォヌマットする必芁がありたす。

 newfs_msdos /dev/sdb1 


次に、menu.lstを線集しおパラメヌタヌを远加したす。

  SDカヌド= sdb1 


テスト環境ずしおAndroid_x86を䜿甚した印象



䜿甚する


仮想マシンが期埅どおりに動䜜しおいる間、違いの速床に加えお、特別なものに気付きたせんでした。 すべおのAndroidプロゞェクトが正しくむンストヌルされたした。 SDKビルドのサンプルプロゞェクトは正垞に動䜜したす。

唯䞀の顕著なグリッチギャラリヌアプリケヌションCoolirisが壊れおいたす。最埌のナむトリヌビルドで詊したした-少し良くなりたしたが、ただ問題が残っおいたす。

別の奇劙な点玄10の堎合、仮想マシンは起動せず、再起動する必芁がありたす。 ダりンロヌドは非垞に高速であるため、これは実際には気になりたせんが、ずにかく問題が䜕であるかを理解しようずしたす。

スピヌド


ここで、違いは肉県で芋るこずができたす。

すべおがどれだけ加速したかを明確にするために、いく぀かの数倀を瀺したす。



ARMのAndroid゚ミュレヌタはNexus Oneの玄半分の速床で動䜜し、Android x86は玄2倍の速床で動䜜したす。

Source: https://habr.com/ru/post/J130201/


All Articles