Android
 Computer >> コンピューター >  >> トラブルシューティング >> Android

AOSP(Android Open Source Project)からカスタムROMをビルドする方法【完全ガイド】

Androidスマホのroot化や、CyanogenModやその後継であるLineage OSといったカスタムROMの導入に慣れている方なら、「これらのROMは一体どうやって作られているのだろう?」「カスタムROMの開発にはどれほどの手間がかかるのか?」と疑問に思ったことがあるはずです。

このガイドでは、独自のカスタムAndroid ROMを開発するための基礎を解説します。ただし、これは非常に大規模な作業であることをあらかじめご了承ください。コーディングやLinuxターミナル操作の経験がまったくない方は、まず基礎知識を身につけてから挑戦することをおすすめします。最低限の知識があれば、できるだけわかりやすく説明していきますので、ぜひ最後まで読んでみてください。

基本的には、Androidの生(ロウ)ソースコード(AOSP)をダウンロードし、好みに合わせて改造するという作業を行います。デバイスごとにさまざまなソースが存在しますが、このガイドでは「master」ソース、すなわちAOSP(Android Open Source Project)を参照して進めます。

AOSPについて注意すべき点は、純粋なソースコードにはデバイス固有のハードウェアプロプライエタリ(専有)バイナリが含まれていないということです。平たく言えば、カメラやGPUなどのハードウェアは、AOSPだけで開発しても「すぐには動きません」。実際、これらのハードウェアバイナリがないと、端末は起動すらしません。

Googleブランドの端末(Pixel、Nexusなど)向けに開発する場合は、ハードウェアバイナリをGoogleから直接入手できます。このガイドでは、その取得方法とROMへの組み込み手順も解説します。一方、SonyやSamsungなどのメーカー製端末向けにROMを開発する場合は…覚悟が必要です。かなり骨の折れる作業になるでしょう。

一部のメーカーは独自のオープンソースプロジェクトを持っていたり、開発者向けツールを公開していたりしますが、中にはプロプライエタリコードを厳重に管理しているメーカーもあります。主要メーカーのオープンソースプロジェクトをいくつか紹介します。

  • Samsung Open Source Release Center
  • Sony Developer World
  • Lenovo Support
  • Huawei Open Source Release Center
  • Motorola Developers

それでは、Google Pixel端末向けに、最もシンプルなバニラAndroid体験を実現するROMを構築することを想定して進めていきます。ここでの知識を身につければ、特定メーカーのROMをカスタマイズした独自バージョンの開発にも応用できるはずです。

このガイドに必要なもの

  • Android Open Source Project(AOSP)
  • Pixel XL端末 または Linux用Androidエミュレータ
  • 64bit Linux OS – 初心者にはUbuntuやLinux Mintがおすすめ。BBQLinuxはAndroid開発者向けに特化したディストリビューションです。
  • Python
  • 高性能なPC(コードのコンパイルには大量のメモリとストレージが必要です!)

ビルド環境のセットアップ

まずはLinuxマシンにAndroidエミュレータをセットアップしましょう。Pixel XL実機をお持ちかどうかにかかわらず、新しいROMを端末に書き込む前に、エミュレータでテストするのが最も安全です。筆者のお気に入りはGenymotionなので、そのインストール手順を紹介します。もちろん、「Best Android Emulators」ガイドで紹介されている他のエミュレータの多くもLinuxに対応していますので、そちらを確認してみてもよいでしょう。

Genymotionの公式サイトにアクセスし、アカウント登録とメール認証を行い、実行ファイルをLinuxデスクトップにダウンロードしてください。

次にLinuxターミナルを開き、以下のコマンドを入力します。

chmod +x genymotion-xxxxx.bin(xxxxはファイル名のバージョン番号に置き換えてください)
./genymotion-xxxxxx.bin

Yキーを押してGenymotionディレクトリを作成します。続いてターミナルで以下を入力します。

cd genymotion && ./genymotion

インストールを開始するか尋ねられるので、「Add Virtual Devices(仮想デバイスの追加)」ウィンドウが表示されるまで「Next」をクリックします。「Device Model」オプションで「Pixel XL」を選択し、インストールを完了させましょう。仮想デバイスを試してみれば、まるでデスクトップ上にPixel XLがあるかのような感覚を味わえます。

続いてPythonをセットアップします。

$ apt-get install python

次に、LinuxマシンにJava Development Kit(JDK)をセットアップします。Linuxターミナルを開き、以下のコマンドを入力してください。

$ sudo apt-get update
$ sudo apt-get install openjdk-8-jdk

さらに、USBデバイスへのアクセスを許可するようLinuxシステムを設定します。ターミナルで以下のコードを実行してください。

AOSP(Android Open Source Project)からカスタムROMをビルドする方法【完全ガイド】

これにより、前述のUSBアクセスを許可する「51-android.txt」ファイルがダウンロードされます。.txtファイルを開いて自分のLinuxユーザー名を追記し、rootユーザーとして以下の場所に配置してください。AOSP(Android Open Source Project)からカスタムROMをビルドする方法【完全ガイド】

その後、端末をUSBケーブルでPCに接続すると、新しいルールが自動的に適用されます。

Androidソースのダウンロード

AOSPはGit上でホストされているため、Gitとの通信には「Repo」というツールを使用します。

まず、ホームディレクトリに/binフォルダをセットアップします。Linuxターミナルに以下のコマンドを入力してください。

$ mkdir ~/bin
$ PATH=~/bin:$PATH

次にRepoツールをダウンロードします。ターミナルに以下を入力します。

$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

Repoのインストール後、作業ファイルを格納する空のディレクトリを作成します。ターミナルに以下を入力してください。

$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY

続いて、Gitにあなたの名前とメールアドレスを設定します。必ず普段チェックしているGmailアドレスを使用してください。そうしないと、Gerritコードレビューツールを利用できません。

$ git config --global user.name "Your Name"
$ git config --global user.email you@gmail.com

次に、Repoに対してAOSPの最新masterマニフェストをGitから取得するよう指示します。

$ repo init -u https://android.googlesource.com/platform/manifest

成功すると、作業ディレクトリ内でRepoが初期化されたというメッセージが表示され、クライアントディレクトリ内に「.repo」ディレクトリが作成されます。それでは、以下のコマンドでAndroidソースツリーをダウンロードしましょう。

$ repo sync

Androidソースのビルド

ここで、このガイドの冒頭で触れたハードウェアバイナリの出番です。AOSPドライバページにアクセスし、Android 7.1.0(NDE63P)用のPixel XLバイナリをダウンロードしてください。ベンダーイメージとハードウェアコンポーネントの両方をダウンロードします。これらは圧縮アーカイブとして提供されるため、デスクトップに展開し、ルートフォルダから自己解凍スクリプトを実行します。バイナリのインストール先には、先ほど作成したWORKING_DIRECTORYのルートを選択してください。

次に、Linuxターミナルに以下を入力します。

$ make clobber
$ source build/envsetup.sh

続いて、ビルドターゲットを選択します。

$ lunch aosp_marlin-userdebug
$ setpaths
$ make -j4

これで、ソースからAndroid ROMを「ビルド」できました。それでは、ターミナルに以下を入力してエミュレータでテストしてみましょう。

$ emulator

エミュレータでいろいろと触ってみてください。おわかりのように、純粋なバニラAndroidはとてもミニマルな仕上がりになっています。だからこそ、各メーカーは自社のニーズに合わせてAOSPをカスタマイズしているのです。もちろん、今ビルドしたROMをそのまま端末に書き込むことも可能ですが、何の機能強化も加えられていないバニラAndroidは、正直かなり退屈なものになってしまうでしょう。

そこでメーカーは通常、AOSPをフォークし、独自のプロプライエタリバイナリを追加したり、UIをカスタマイズしたり、ブートロゴを組み込んだりしています。要するに、メーカーはストックAndroid ROMの上に独自の「塗装」を施しているだけなのです。あなたの次の目標も、まさにそこにあります。

お楽しみに。このガイドの第2部では、ROMへのフォント・テーマ・ブートアニメーションの追加方法を解説します!

  1. AndroidでMOBIファイルを開く方法!Kindleなどおすすめアプリ3選

    紙の本を持たずに読書を楽しみたいと考えている方は多いのではないでしょうか。電子書籍は、ページが折れたり傷んでしまいやすい紙の本よりも、持ち運びや読書がはるかに便利です。ページがクタクタになった本は好きになれないという方こそ、電子書籍がおすすめです。MOBIはインターネット上で広く普及している電子書籍ファイル形式の一つで、読者に柔軟な読書体験を提供します。ただし、まずはAndroidでMOBIファイルを開く方法を知る必要があります。読書習慣を維持するために役立つ、MOBIファイルに対応したアプリも多数存在します。この記事では、AndroidでEPUBおよびMOBIファイルを開く方法を詳しく解説し

  2. AndroidでカスタムROMインストール時に発生するTWRP「エラー7」の直し方

    カスタムAndroid ROMとは、Androidプラットフォームをベースとしたスマートフォン用ファームウェアのことです。Androidはオープンソースのプラットフォームであるため、開発者はコードを自由に編集・再コンパイルし、さまざまなデバイス向けに再リリースすることができます。 デバイスの外観や動作を自分好みにカスタマイズしたいなら、カスタムROMのインストールがおすすめです。これらのROMはAndroidコミュニティによって開発されており、そのほとんどが完全無料で利用できます。カスタムROMは、スマートフォン、スマートウォッチ、タブレットなど、Androidが動作するほぼすべてのデバイス向