スマホアプリならアンドロック
スマホアプリ(アンドロイド)レビューやスマホ情報はアンドロック
Android4.0のSource Code(ソースコード)が公開されました。
前回の記事「Android4.0(Ice Cream Sandwich)まとめ」で紹介したように
Android4.0はタブレットの3.X系と携帯プラットフォームの2.X系の統合がされるとのことで、開発者からも大きな関心がよせられていました。
NFCによるAndroid Beamや顔認証(FACE UNLOCK)など様々な新機能があり
Android4.0は日本でもNTT DOCOMOから「GALAXY NEXUS SC-04D」が発表され、登場が期待されているOSです。
エミュレーターでのAndroid4.0レビューは前回行なっているので、今回はソースからAndroid4.0をビルドしてみよう。
Android4.0のビルドはUbuntuで行い、ビルドに必要なパッケージなどもまとめていくので、チェックしてくれ!
今回はUbuntu 10.04.3 LTSを使ってAndroidOSのビルドを行なう。
情報ではAndroid4.0のビルドはメモリー16GB必要との事だったが、Core2DuoE6600のメモリー4Gでどこまでいけるか?試してみよう。
ちなみに、今回ビルドするマシンではAndroidバージョン3.1.4のビルドは時間が掛かったが成功した実績がある。
AndroidのビルドはUbuntuの64bitバージョンで行なう。
PCを準備するのが難しい人は、Wubiを使ったり、上級者は自分でブートローダーを設定してUbuntuを準備しよう。
※デュアルブートは設定を間違えるとデータが消えてしまったり、危ない面もあるのでしっかり調べて自己責任で行なうか、別PCで安全にUbuntu環境を用意しましょう。
Ubuntuの64bitバージョンはDownload Ubuntuからダウンロードすることが出来る。
現状、Ubuntu Japanese Teamから提供されているのは32bitのみなので、注意しよう。
Ubuntuをインストールしたのち追加したパッケージがいくつかある。 また、OpenJDKではなくSunのパッケージが必要となるので、すでにJava環境が整っている人は注意が必要だ。
まずは、レポジトリーを追加してJDKのインストールを行なう。
sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner" sudo add-apt-repository "deb http://archive.canonical.com/ lucid-updates partner" sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu hardy main multiverse" sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu hardy-updates main multiverse" sudo apt-get update sudo apt-get install sun-java6-jdk sudo apt-get install sun-java5-jdk
次にまとめて必要なパッケージをインストールしよう。
「lib32readline5-dev」がこちらの環境では見つからなかったので「lib32readline-gplv2-dev」を追加している。
sudo apt-get install git-core gnupg flex bison gperf \ build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \ x11proto-core-dev libx11-dev lib32readline5-dev lib32readline-gplv2-dev \ lib32z-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos \ ython-markdown libxml2-utils
AndroidOSのソースコードの取得方法はGitというバージョン管理システムからコピーしてくる仕組みになっている。
今回はAndroid4.0のソースコードを指定するが、タグとよばれるバージョンを示す部分を変更すれば、2.Xなどのソースも取得可能だ。
ココからの手順はネット環境やPCのスペックによってはかなり時間が掛かるので、注意が必要だ。
また、repoとGitはChromeOSのビルドでも同じように使われているので、興味があるひとは試してみよう。
まずは、repoとよばれるGoogleが提供しているツールを設定する。
repoコマンドはいくつかのGitレポジトリをまとめて管理してくれるので、AndroidやChromeのソース管理では活用されているツールだ。
インストール先はホームディレクトリにbinディレクトリを作成し、curlコマンドでGoogleのサーバから取得し、実行権限を追加する。
また、その際に作成したbinにパスを通すことを忘れないようにしよう、bashrcに追記してもOKだ。
mkdir ~/bin PATH=~/bin:$PATH curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo ---------出力---------------------------------------------------- % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 19731 100 19731 0 0 668 0 0:00:29 0:00:29 --:--:-- 4727 ---------出力---------------------------------------------------- chmod a+x ~/bin/repo
AndroidOSのソースをrepoから取得する際にメールアドレスと名前を聞かれる。 あらかじめ設定しておけば、その都度入力する手間が省けるのでgitの設定コマンドで設定を行なう。
git config --global user.email "androckjp@gmail.com" git config --global user.name "AndRock"
repoコマンドの設定は完了したので、ついにAndroid4.0のソースを取得する。
作業用のディレクトリを作成し、repo initしよう。
repoコマンドでオプションに「-b android-4.0.1_r1」とあるが、これはブランチが「android-4.0.1_r1」のソースを指定した場合なので
他のバージョンが欲しい場合は、それに対応したタグを指定しよう。
mkdir WORKING_DIRECTORY cd WORKING_DIRECTORY repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1 ---------出力---------------------------------------------------- Get https://android.googlesource.com/tools/repo remote: Counting objects: 1414, done remote: Finding sources: 100% (78/78) remote: Total 1414 (delta 917), reused 1414 (delta 917) Receiving objects: 100% (1414/1414), 429.88 KiB, done. Resolving deltas: 100% (917/917), done. From https://android.googlesource.com/tools/repo * [new branch] maint -> origin/maint * [new branch] master -> origin/master * [new branch] stable -> origin/stable * [new tag] v1.0 -> v1.0 * [new tag] v1.0.1 -> v1.0.1 * [new tag] v1.0.2 -> v1.0.2 続く・・・・・ Your Name [AndRock.jp]: Your Email [androckjp@gmail.com]: Your identity is: AndRock.jpis this correct [y/n]? y repo initialized in /home/androckjp/WORKING_DIRECTORY androckjp@test:~/WORKING_DIRECTORY$ ---------出力----------------------------------------------------
initの最後にNameとEmailを確認されるので、入力してy応答すれば、完了
次に、ソースのsyncを行なう。
今回のマシンはCore2なのでjオプションで4を指定して時間短縮を狙います。
同時に実行するスレッド数なので、ビルドするマシンのCPU×2倍ほどを設定すると効果があります。
repo sync -j4 ---------出力---------------------------------------------------- * [new tag] android-2.2_r1.1 -> android-2.2_r1.1 * [new tag] android-2.2_r1.2 -> android-2.2_r1.2 * [new tag] android-2.2_r1.3 -> android-2.2_r1.3 * [new tag] android-2.3.5_r1 -> android-2.3.5_r1 * [new tag] android-2.3.6_r0.9 -> android-2.3.6_r0.9 * [new tag] android-2.3.6_r1 -> android-2.3.6_r1 * [new tag] android-2.3.7_r1 -> android-2.3.7_r1 * [new tag] android-4.0.1_r1 -> android-4.0.1_r1 remote: Counting objects: 7, done 続く・・・・・ ---------出力----------------------------------------------------
下記の様にsyncが完了したら、Android4.0のソース取得は完了だ。
---------出力---------------------------------------------------- * [new tag] android-2.3_r1 -> android-2.3_r1 Fetching projects: 100% (221/221), done. Checking out files: 100% (13480/13480), done. files: 42% (5668/13480) Checking out files: 100% (4876/4876), done.out files: 35% (1750/4876) Checking out files: 100% (24598/24598), done.ut files: 40% (9947/24598) Checking out files: 100% (18692/18692), done.ut files: 0% (2/18692) Checking out files: 100% (184/184), done.ng out files: 3% (7/184) Checking out files: 100% (23382/23382), done.ut files: 0% (19/23382) Syncing work tree: 100% (221/221), done. ---------出力----------------------------------------------------
ココからは実際にAndroidOSのビルドを行なう。
makeコマンドの実行前に取得した中にある「envsetup.sh」を実行し、ビルドのターゲットを指定する。
今回ビルドしたOSはエミュレーターで実行させるので、ビルド名はfullでビルドタイプは開発タイプのengを設定した。
ブートローダーを解除した端末や、テストボードなどを持っている人は自分の環境に合わせてビルドタイプを変更しよう。
筆者はXperia Playのブートローダーを解除したので、fastbootで書き込めないか今後試す予定だ。
作業用ディレクトリで「envsetup.sh」の実行と「lunch」の設定を行なう。
source build/envsetup.sh ---------出力---------------------------------------------------- including device/samsung/maguro/vendorsetup.sh including device/samsung/tuna/vendorsetup.sh including device/ti/panda/vendorsetup.sh including sdk/bash_completion/adb.bash ---------出力---------------------------------------------------- lunch generic-eng ---------出力---------------------------------------------------- ============================================ PLATFORM_VERSION_CODENAME=REL PLATFORM_VERSION=4.0.1 TARGET_PRODUCT=generic TARGET_BUILD_VARIANT=eng TARGET_BUILD_TYPE=release TARGET_BUILD_APPS= TARGET_ARCH=arm TARGET_ARCH_VARIANT=armv7-a HOST_ARCH=x86 HOST_OS=linux HOST_BUILD_TYPE=release BUILD_ID=ITL41D ============================================ ---------出力----------------------------------------------------
ココまで設定が完了すれば、ついにMakeをおこなう。 Android4.0のビルドは時間がかかりそうなので、jオプションはもちろん、ログを取得するようにした。
make -j4 2>&1 | tee android4_make.log ============================================ PLATFORM_VERSION_CODENAME=REL PLATFORM_VERSION=4.0.1 TARGET_PRODUCT=generic TARGET_BUILD_VARIANT=eng TARGET_BUILD_TYPE=release TARGET_BUILD_APPS= TARGET_ARCH=arm TARGET_ARCH_VARIANT=armv7-a HOST_ARCH=x86 HOST_OS=linux HOST_BUILD_TYPE=release BUILD_ID=ITL41D ============================================ Checking build tools versions... 続く・・・・・ ---------出力----------------------------------------------------
14時:Make実行開始
15時:実行中・・・
15時40分:「target thumb C++: libv8 <= external/v8/src/arm/debug-arm.c」javascriptエンジンのあたりか?
16時:ビルド完了
Install: out/target/product/generic/system/app/Phone.odex Install: out/target/product/generic/system/app/Phone.apk 'out/target/common/obj/APPS/Settings_intermediates//classes.dex' as 'classes.dex'... Processing target/product/generic/obj/APPS/Settings_intermediates/package.apk Done! Install: out/target/product/generic/system/app/Settings.odex Install: out/target/product/generic/system/app/Settings.apk Finding NOTICE files: out/target/product/generic/obj/NOTICE_FILES/hash-timestamp Combining NOTICE files: out/target/product/generic/obj/NOTICE.html Installed file list: out/target/product/generic/installed-files.txt Target system fs image: out/target/product/generic/obj/PACKAGING/systemimage_intermediates/system.img Install system fs image: out/target/product/generic/system.img
2時間ほどかけて、Android4.0のビルドが成功したので、次はAVD Managerを使って、作成したIMGから起動してみよう。
Android4.0のOSビルドに成功したので、AVD Managerで起動させてみよう。
AVD ManagerはAndroid SDKに同梱されているツールで、エミュレータの作成や編集を行うツールだ。
ビルドしたAndroidOSは実機に書き込むか、エミュレータで起動させてテストすることができる。
AVDでAndroid4.0のエミュレーターを作成し、その設定をもとに作成したIMGを入れ替えて起動させよう。
AVDでのエミュレータ起動は今回はWindows7で解説するのが、エミュレーターの設定はAVDなら基本的に同じなのでディレクトリなどは自分の環境に読み替えてくれ。
まずはビルドしたOSを起動させるための設定ファイルを作成する。
今回はAndroid4.0をビルドしたので、AVD ManagerでAVD純正の4.0を作成する。
Windowsであれば、AndroirSDKのフォルダにAVD Manager.exeがあるのでそれを起動させよう。
Linuxであれば、AndroirSDKのtoolsに「android」があるので、それを起動してメニューバーから「AVD Manager」を選択しよう。
AndroirSDKのAVD Managerを起動させたら、「New」を選択して新規の仮想Androidを作成する。
「Name」にわかりやすい名前をつけて、「Target」は「Android 4.0 - API Level 14」を選択し「SD Card」は任意で設定しよう、今回は512MiBを割り当てた。
「Snapshot」は今回利用しないのでチェックをつけずに、「Skin」は「Default(WVGA800)」を選択した。
最後に「Create AVD」をクリックすると、ポップアップで作成した仮想Androidの情報が表示され
「OK」をクリックすると、AVDマネージャーの仮想マシン一覧に作成したAndroid4.0の仮想マシンが追加される。
次に作成したAndroid4.0の仮想マシンを選択して、右メニューの「Details...」を選択する。
ポップアップが開き、仮想マシンの情報が表示されるので、仮想マシンが保存されているディレクトリ「Path」を確認し該当のディレクトリへ移動しよう。
仮想マシンのディレクトリには「config.ini」というテキストファイルが保存されているので、テキストエディターで開き、「image.sysdir.1」の項目をチェックしよう。
「image.sysdir.1」はシステムイメージが置いてあるディレクトリで筆者の環境では「system-images\android-14\armeabi-v7a\」となっていた。
これは「AndroidSDK」のインストールディレクトリからのパスなので筆者の場合はこうなる「C:\Program Files\android-sdk-windows\system-images\android-14\armeabi-v7a」
今回は必要なファイルは「system-images\android-14\armeabi-v7a\」からコピーして、ビルドしたAndroid4.0のイメージを別のディレクトリに配置して、「config.ini」を書き換えることでAndroid4.0をエミュレータから起動する。
まず、「armeabi-v7a」と同じディレクトリにフォルダを作成して「AndRock4.0」と名前をつける。
次に「AndRock4.0」へUbuntuから「system.img」、「userdata.img」、「ramdisk.img」を「AndRock4.0」へコピーする。
/home/ユーザ名/WORKING_DIRECTORY/out/target/product/generic/system.img /home/ユーザ名/WORKING_DIRECTORY/out/target/product/generic/userdata.img /home/ユーザ名/WORKING_DIRECTORY/out/target/product/generic/ramdisk.img ↓ コピー C:\Program Files\AndroidSDKのインストールディレクトリ\system-images\android-14\AndRock4.0
次に「armeabi-v7a」から必要なファイルを「AndRock4.0」へコピーする。
C:\Program Files\AndroidSDKのインストールディレクトリ\system-images\android-14\armeabi-v7a\build.prop C:\Program Files\AndroidSDKのインストールディレクトリ\system-images\android-14\armeabi-v7a\kernel-qemu C:\Program Files\AndroidSDKのインストールディレクトリ\system-images\android-14\armeabi-v7a\source.properties ↓ コピー C:\Program Files\AndroidSDKのインストールディレクトリ\system-images\android-14\AndRock4.0
最後に「config.ini」の「image.sysdir.1」を「system-images\android-14\androck\」へ変更して完了。
image.sysdir.1=system-images\android-14\armeabi-v7a\ ↓ 変更 image.sysdir.1=system-images\android-14\androck\
AVD Managerに戻り、作成したAndroid4.0のエミュレーターを「Start...」させれば起動する。
「About phone」から確認すると「Android version」は4.0.1で、BuildNumberにユーザ名が入っている。
国内端末では下記のモデルがAndroid4.0(Ice Cream Sandwich)への対応を予定している。
アンドロイド携帯向けアプリの人気ランキングページです。ビジネスに、遊びに、とてもお役立ちのアンドロイドアプリが勢ぞろい。どのアプリも人気のある「10個」です。厳選されたラインナップ。もしかしたらあなたの携帯ライフを劇的に変えるアプリも現れるかもしれません!日々変わるこのアプリのランキング動向を、ぜひチェックしてください。
2020年度OBチャンピオンシップの評価ランキングを紹介します。 プロスピA O・・・
プロスピA(プロ野球スピリッツA)の攻略情報をまとめたページです。 基本・・・
LINEPay内でApplePay連携を行い、タッチiD決済をでLINEPay決済を行う方法を紹・・・
無料でゲットできちゃうLINEスタンプを一挙大公開! カワイイ・カッコイ・・・
キングダムセブンフラッグスの「潜在能力」解放のやり方を紹介します。 潜在能・・・
キングダムセブンフラッグスにて、星7双星武将 カイネ&李牧-ずっとお側に-の技・・・
QRコード・バーコードで決済ができるアプリ『PayPay』(ペイペイ)の使い方を・・・