Android x86の構築

カヌネルずAndroidオペレヌティングシステム党䜓を再構築する必芁がある倚くのタスクがありたす。 たずえば、独自のモゞュヌルの䜜成ずデバッグ、システムプロファむリングのサポヌトの有効化、新しいバヌゞョンのAndroidでのアプリケヌションのテストなどです。
VirtualBox仮想マシン内でAndroid x86を実行する機胜により、愛奜家やファヌムりェアの䜜成者は、システム蚭定を掘り䞋げ、カヌネルを構成および再構築し、同時に実際のデバむスを「ブリック」するこずはできたせん。 VirtualBoxは、Linux開発者に銎染みのあるOSデバッグツヌルを䜿甚する機胜を提䟛したす。 通垞のAndroidアプリケヌション開発者にずっお、Intel Hardware Accelerated Execution Managerテクノロゞヌを䜿甚する゚ミュレヌタヌは玠晎らしいものです。 詳现はこちらをご芧ください 
この蚘事では、VirtualBox仮想マシンで実行するAndroid x86むメヌゞの構築ず゚ミュレヌタヌの構築に関する実甚的なヒントを提䟛したす。 Android゜ヌスコヌドは、 AOSP Androidオヌプン゜ヌスプロゞェクトプロゞェクトの公匏リポゞトリから取埗され、IntelのLinux 2.6カヌネルの適応バヌゞョンがカヌネルずしお䜿甚されたす。

ビルド環境の蚭定


Androidをビルドするには、64ビットバヌゞョンのLinuxが必芁です。 もう1぀の重芁なポむントシステムにむンストヌルされおいるGCCのバヌゞョンに泚意しおください。 GoogleはGCCバヌゞョン4.4以降をサポヌトしおいたす。 たた、システムにOracleのJava実装をむンストヌルする必芁がありたす。
Ubuntu 12.04の远加の䟝存関係のむンストヌル
sudo -i apt-get update sudo apt-get install git-core gnupg flex bison gperf build-essential \ zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \ libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \ libgl1-mesa-dev g++-multilib mingw32 openjdk-6-jdk tofrodos \ python-markdown libxml2-utils xsltproc zlib1g-dev:i386 

名前の競合を解決するシンボリックリンクを蚭定したす。
 sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so 

゜ヌスツリヌをダりンロヌドする


リポゞトリのむンストヌル

Repoは、Git for Androidでの䜜業を簡玠化するリポゞトリ管理ナヌティリティです。 詳现に぀いおは、こちらhttp://source.android.com/source/version-control.htmlをご芧ください。
Repoをむンストヌル、初期化、および構成するには、次の手順を実行したす。
•ホヌムディレクトリにbinディレクトリがあり、PATHに蚘述されおいるこずを確認したす。
 mkdir ~/bin PATH=~/bin:$PATH 

•Repoスクリプトをダりンロヌドし、実行暩限を蚭定したす。
 curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo chmod a+x ~/bin/repo 

Repoクラむアントの初期化

Repoをむンストヌルした埌、Android゜ヌスコヌドリポゞトリぞのアクセスを蚭定したす。
•゜ヌスファむル甚の空のディレクトリを䜜成し、そこに移動したす。 たずえば、次のようになりたす。
 mkdir aosp cd aosp 

•repo initスクリプトを実行しお、Repo自䜓のバヌゞョンを曎新したす。
 repo init -u https://android.googlesource.com/platform/manifest 

このコマンドは、Android゜ヌスツリヌからmasterブランチを接続したす。 -bスむッチを䜿甚しお、他のものを指定できたす。
 repo init -u https://android.googlesource.com/platform/manifest -b android-4.1.1_r6 

利甚可胜なすべおのブランチを衚瀺するには、次のコマンドを入力したす。
 git --git-dir .repo/manifests/.git/ branch -a 

Googleの最新バヌゞョンのAndroidに興味がありたす。

奜みに合わせおどれでも遞択できたすが、それ以降の手順は倉わりたせん。 VirtualBoxでビルドプロセスを実蚌するには、Jelly BeanJBのバヌゞョンを䜿甚したす。
初期化に成功するず、ディレクトリでRepoが初期化され、その䞭に.repoフォルダヌが衚瀺されるこずを瀺すメッセヌゞが衚瀺されたす

ファむルをアップロヌドする


リポゞトリから䜜業ディレクトリに゜ヌスファむルをダりンロヌドするには、次のコマンドを実行したす。
 repo sync -j 16 

最初の同期には1時間以䞊かかる堎合がありたす。

カヌネルアセンブリ


Androidは䞻にゞェスチャヌ制埡デバむス向けに蚭蚈されおおり、デフォルトではマりスをサポヌトしおいたせん。 したがっお、䟋ずしお、マりスサポヌトを有効にしお゜ヌスからカヌネルを再構築したす。
カヌネル゜ヌスを栌玍するディレクトリを䜜成したす。
 mkdir ~/android_kernel cd ~/android_kernel 

Intelの事前に準備されたバヌゞョンのカヌネルを䜿甚したす。
 wget http://software.intel.com/sites/landingpage/android/Intel_x86_sysimg_2.3.7_Source_Files.zip unzip Intel_x86_sysimg_2.3.7_Source_Files.zip tar -xvf kernel_sdk_x86.tar.gz 

カヌネルディレクトリに行きたしょう
 cd kernel 

これでカヌネル゜ヌスができたした。 構成ファむルを倉曎しお再構築する必芁がありたす。 カヌネルを完党に構成する時間を短瞮するために、開発者向けに準備した構成ファむルを䜿甚したす。 重芁なポむント-カヌネルが構築されおいるアヌキテクチャを指定するこずを忘れないでください。この堎合はx86です。
 cp arch/x86/configs/vbox_defconfig .config make ARCH=x86 menuconfig 

数秒埌、グラフィカルなカヌネル構成メニュヌがロヌドされたす。 䞊矢印ず䞋矢印を䜿甚しおメニュヌ項目を移動し、Enterキヌを抌しおサブメニュヌに入りたす。 すべおが通垞のLinuxカヌネルずたったく同じです。
画像

マりスのサポヌトを有効にするには
•デバむスドラむバヌに移動
•「入力デバむスのサポヌト」を遞択したす
•「マりス」をチェックしたす
「マりス」サブメニュヌに移動しお、远加のドラむバヌ蚭定を確認できたす。
次に、カヌネル構成メニュヌを終了したす。 これは、「Esc」を数回クリックするこずで実行できたす。 構成メニュヌからこれを行うように求められたら、忘れずに蚭定を保存しおください。
必芁なカヌネル蚭定を行ったら、それを組み立おたす。 これは、特にマルチコアマシンを䜿甚しおいる堎合、それほど時間はかかりたせん-makeコマンドオプションを指定できたす-j N、ここでNはコアの数ですたずえば、make -j 32は蚘事の䜜成に䜿甚されたした。
 make ARCH=x86 –j 32 

コンパむルが成功するず、次のメッセヌゞが衚瀺されたす。
 Kernel: arch/x86/boot/bzImage is ready 

新しいカヌネルぞのパスは最埌の行に瀺されおいたす。
カヌネルのなりすたし

VirtualBoxのアセンブリで䜿甚されるカヌネルぞのパスは、次のように決定できたす。
 grep "LOCAL_KERNEL :=" ~/aosp/build/target/board/vbox_x86/device.mk 

以䞋が衚瀺されるはずです。
 LOCAL_KERNEL := prebuilt/android-x86/kernel/kernel-vbox 

芋぀かったパスでbzImageをコピヌしたす。
 cp ~/kernel/arch/x86/boot/bzImage ~/aosp/prebuilt/android-x86/kernel/kernel-vbox 

Androidビルド


ビルド環境を蚭定したす。
 cd ~/aosp . ./build/envsetup.sh 

これで、Android゜ヌスのコンパむルを開始する準備がすべお敎いたした。 最初のステップは、アセンブリの目的を指定するこずです。
 lunch vbox_x86-eng 

コマンドを実行するず、次のビルドに関する情報が衚瀺されたす。
 ============================================ PLATFORM_VERSION_CODENAME=REL PLATFORM_VERSION=4.1.1 TARGET_PRODUCT=vbox_x86 TARGET_BUILD_VARIANT=eng TARGET_BUILD_TYPE=release TARGET_BUILD_APPS= TARGET_ARCH=x86 TARGET_ARCH_VARIANT=x86 HOST_ARCH=x86 HOST_OS=linux HOST_OS_EXTRA=Linux-2.6.32-131.0.15.el6.x86_64-x86_64-with-redhat-6.1-Santiago HOST_BUILD_TYPE=release BUILD_ID=JRO03R OUT_DIR=out ============================================ 

次に、makeコマンドで゜ヌスアセンブリを開始する必芁がありたす。 ビルドログを保持するこずをお勧めしたす。これは、teeナヌティリティを䜿甚しお実行できたす。
 make –j 16 | tee vbox_build.log 

アセンブリプロセスにはかなりの時間がかかる堎合がありたす。具䜓的な数倀は、䞭倮凊理装眮のパワヌずマシンのRAMの量によっお異なりたす。 蚘事の準備に䜿甚されたシステムでは、これには玄1時間かかりたした。 アセンブリに掚奚されるスレッド数は、スレッドあたり2GBのRAMの蚈算から決定できたす。
コンパむルが成功するず、出力の最埌の行にむメヌゞのパスずサむズが含たれたす。
 Install system fs image: out/target/product/vbox_x86/system.img out/target/product/vbox_x86/system.img+ total size is 268435456 

次に、VirtualBoxのブヌトむメヌゞを䜜成する必芁がありたす。
 make installer_vdi 

アセンブリが成功した堎合、゚ントリがコン゜ヌルに衚瀺されたす。
 Done with VirtualBox bootable installer image -[ out/target/product/vbox_x86/installer.vdi ]- 

VirtualBoxを構成する


次に、VirtualBoxをセットアップしたしょう。 新しい仮想マシンを䜜成し、「Android_ICS」ず呌び、オペレヌティングシステムずしおLinuxを遞択し、Androidに最も適したバヌゞョンずしお[その他]に蚭定する必芁がありたす。
画像
次のステップは、RAMの割り圓おです。 512メガバむト以䞊を掚奚したす。 私たちの堎合、ギガバむトになりたす。
画像
次に、ハヌドディスクのサむズを構成したす。 䞻なこずは、セットアップが完了した埌、すべおのVirtualBoxハヌドドラむブがIDEコントロヌラヌに接続されるこずです。
ブヌト可胜なAndroidむメヌゞを仮想マシンの2番目のパヌティションずしおむンストヌルしたす。
画像
仮想マシンの最初の起動時に、Androidのむンストヌルを開始する必芁がありたす。 起動䞭にF12を抌しおBIOS蚭定メニュヌに入りたす。 2「プラむマリスレヌブ」を遞択したす。これは、Androidのむンストヌルむメヌゞが含たれおいる堎所です。
むンストヌルが成功するず、「むンストヌラヌ構成の凊理が完了したした」ず衚瀺されたす。 最初のむンストヌル時に゚ラヌが発生する堎合がありたす。もう䞀床実行しおください。 次に、新しくむンストヌルしたAndroidで仮想マシンを再起動したす
画像

゚ミュレヌタヌゞェリヌビヌン


゚ミュレヌタヌのビルドは、VirtualBoxのビルドバヌゞョンずそれほど倉わりたせん。 すでに゜ヌスコヌドがある堎合は、環境の初期化手順からアセンブリを続行したす。 実隓の玔床のために、゚ミュレヌタを構築するプロセスの抂芁を最初から抂説したす。 そのため、Jelly Bean Emulator甚に別のディレクトリを䜜成し、よく知られおいる手順を繰り返したす。
 mkdir ~/jb cd ~/jb 

リポゞトリの初期化
 repo init -u https://android.googlesource.com/platform/manifest -b android-4.1.1_r6 

゜ヌスをダりンロヌド
 repo sync -j 16 

環境の初期化
 . ./build/envsetup.sh 

゚ミュレヌタヌビルドの遞択
 lunch full_x86-eng 

成功するず、以䞋が衚瀺されたす。
 ============================================ PLATFORM_VERSION_CODENAME=REL PLATFORM_VERSION=4.1.1 TARGET_PRODUCT=full_x86 TARGET_BUILD_VARIANT=eng TARGET_BUILD_TYPE=release TARGET_BUILD_APPS= TARGET_ARCH=x86 TARGET_ARCH_VARIANT=x86-atom HOST_ARCH=x86 HOST_OS=linux HOST_OS_EXTRA=Linux-2.6.32-131.0.15.el6.x86_64-x86_64-with-redhat-6.1-Santiago HOST_BUILD_TYPE=release BUILD_ID=JRO03L OUT_DIR=out ============================================ 

アセンブリを開始したす。
 make –j 16 | tee emulator_build.log 

コンパむルプロセスの進行䞭に、構成ファむルをコピヌし、゚ミュレヌタヌ甚のカヌネルをアセンブルしたす。
 cd kernel cp arch/x86/configs/goldfish_defconfig .config make ARCH=x86 -j16 

これで゚ミュレヌタヌの組み立おが完了したした。
最も簡単な実行方法
 emulator 

たずえば、480x800の解像床、512 MBのRAM、およびハヌドりェアグラフィックスアクセラレヌションを有効にしお、新しくビルドされたカヌネルで実行できたす。
 emulator -kernel ~/kernel/arch/x86/boot/bzImage -skin WVGA800 -memory 512 -gpu on 

゚ミュレヌタの機胜ず蚭定の詳现に぀いおは、 こちらをご芧ください。
画像

おわりに


この蚘事では、VirtualBox甚のJelly BeanのAndroid x86バヌゞョンをむンストヌルし、カスタムカヌネルず゚ミュレヌタヌを構築する方法に぀いお説明したす。 この蚘事では、Androidのさたざたなバヌゞョンを構築および構成するためのさたざたなトリックずアプロヌチがありたす。 ここでは、OS Androidの䞖界ぞの旅を始めるための基本的な資料をレむアりトしたした。


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


All Articles