Windows10でAndroidカーネルを構築する方法
Appual’sには、Android Open Source ProjectからカスタムROMを構築する方法など、Android開発に関する優れたガイドがいくつかありますが、これらのガイドは通常、純粋なLinuxビルド環境を対象としています。
このガイドでは、Windows 10でAndroidカーネルをビルドする方法を説明します。はい、引き続きLinuxビルド環境を使用しますが、Windows 10内のLinuxサブシステムになります。したがって、Windows10の場合Android向けの開発に関心のあるユーザーは、ガイドに注意深く従ってください。
このガイドでは、ARMおよびMediaTekデバイス用のカーネルを構築する方法、機能の追加、およびGitの使用の基本的な概要について具体的に学習します。
要件
- Windows 10 x64(Fall Creatorのアップデートあり)
Linux環境のセットアップ
- Windows 10では、[設定]>[更新とセキュリティ]>[開発者向け]>[開発者モード]を有効にします。
- 次に、[コントロールパネル]>[プログラム]>[Windowsの機能をオンまたはオフにする]>[Linux用のWindowsサブシステムを有効にする]に移動します。
- PCを再起動します。
- Linuxサブシステムを起動し、ダウンロードプロセスを実行できるようにします。パスワードを設定し、紛失しないようにしてください。
- 次に、Windowsアプリストアにアクセスして、Ubuntuをダウンロードします。
- Windows 10デスクトップでUbuntuを起動すると、ユーザー名とパスワードが要求されます。
- Ubuntuで、ネイティブターミナルを起動し、次のコマンドを入力します:apt-get update
- これにより、アプリと依存関係のすべてのリポジトリが更新されます。
- 次のターミナルタイプ:sudo apt-get install -y build-essential kernel-package libncurses5-dev bzip2
- すべての依存関係が正しくインストールされているかどうかを確認するには、ターミナルに「gcc」と入力します(引用符は含みません)。
- 「gcc」がすでにインストールされている場合は、「gcc:致命的なエラー:入力ファイルがありません」と表示されます。
- これで、ターミナルに「make」と入力できます。 「make」がすでにインストールされている場合は、「make:***ターゲットが指定されておらず、makefileが見つかりません」と表示されます。やめなさい。」
- 次のタイプは「git」で、「git」がすでにインストールされている場合は、一連の基本的なgitコマンドが表示されます。
- ここで、いくつかのツールチェーンが必要です(GCC、Linaro、およびいくつかのカスタムツールを含むいくつかのタイプがあります)。一部のデバイスでは、異なるツールチェーンが必要になる場合があります。たとえば、すべてのデバイスカーネルがGCCで起動またはコンパイルされるわけではありません。
ARMデバイスの場合
これにはGCC4.7を使用します。
- Linuxターミナルを開き、次のように入力します:mkdir kernel
- 現在のタイプ:cdカーネル
- (「カーネル」である必要はありません。これは簡単にするためです。好きな名前を付けることができます。)
- 現在のタイプ:git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.7
ARM64デバイスの場合
ARM 64デバイス用の64ビットカーネルコンパイラ(aarch64など)が必要です。
デバイスのソースファイルの取得
カーネルソースをホストするGitHubリポジトリを見つける必要があるため、これは注意が必要な部分です。もちろん、それを検索する必要があります。ほとんどの場合、XDAフォーラムで見つけることができます。
カーネルソースGitの例を次に示します。
左上に「ブランチ:xxxxで完了」と表示されます。
カーネル/プロジェクトにはさまざまなバージョンがあり、通常は「テスト」、「ベータ」、「最終リリース」などで区切られています。
カーネルフォルダは通常、次のとおりです。
- / arch / arm / configs :これには、ガバナーなど、デバイスのさまざまな構成ファイルが含まれています。
- / output / arch / arm / boot / :ここにzimageが保存されます。
- build.sh :構築プロセスを簡素化するスクリプト。
- /arm-cortex-linux-gnueabi-linaro_5.2-2015.11-2 :これは通常、カーネルソースに配置されたツールチェーンであるため、見つけやすくなっています。
カーネルソースをダウンロードする必要があります。
Linuxターミナルを開き、前に作成したカーネルフォルダ(cdカーネル)にいることを確認します。
次に、ターミナルに次のように入力します。「gitclone「githubカーネルのURL」-b「ブランチの名前」
例:「gitclonehttps://github.com/atxoxx/android_ke…amsung_msm8974-bxenomTW」
カーネルの構築
簡単にするために、ファイルエクスプローラーでその場所に移動できます。 / home / user ID / kernel(またはカーネルフォルダに名前を付けたもの)である必要があります。
ツールチェーンとカーネルソース用に、内部に2つのフォルダーが表示されます。カーネルソースフォルダ内に移動します。
ARMデバイスの場合
ターミナルで、次のコマンドを入力します。
#!/bin/bash export ARCH=arm export CROSS_COMPILE= mkdir output make -C $(pwd) O=output "name of defconfig and variant if needed" make -j4 -C $(pwd) O=output
これは、将来これを簡単にするために、これらのコマンドが行うことの概要です。
- #!/ bin / bash: シェルコマンドで実行するようにスクリプトに指示します
- export ARCH =arm: どのカーネルアーキテクチャタイプであるかを定義する(たとえば、arm64など)
- export CROSS_COMPILE = :ツールチェーンがどこにあるかを見つけます。正確なパスと一致する必要があり、最後のダッシュは本当に必須です。
- mkdir出力: これにより、コンパイルされたzimageを保存するためのディレクトリが作成されます
- make -C $(pwd)O =output :カーネルコンパイルをガイドするためのdefconfigを定義します。
- make -j4 -C $(pwd)O =output :ビルドプロセスが開始されると、-j#はコンパイルの試行速度を示します。通常、この数値はCPUに応じて設定します。たとえば、バジェットCPUで-j32を設定すると、大規模な不安定性が発生する可能性があります。
- cp output / arch / arm / boot / Image $(pwd)/ arch / arm / boot / zImage :これは、画像を2番目のパスに移動するためのものです。
別の例:
#!/bin/bash export ARCH=arm export CROSS_COMPILE=$(pwd)/arm-cortex-linux-gnueabi-linaro_5.2-2015.11-2/bin/arm-cortex-linux-gnueabi- mkdir output make -C $(pwd) O=output msm8974_sec_defconfig VARIANT_DEFCONFIG=msm8974_sec_ks01_skt_defconfig SELINUX_DEFCONFIG=selinux_defconfig make -j4 -C $(pwd) O=output cp output/arch/arm/boot/Image $(pwd)/arch/arm/boot/zImage
ARM64デバイスの場合
#!/bin/bash export ARCH=arm64 export CROSS_COMPILE="path to your toolchain" (it have to end by something like "nameofarch-something-") mkdir output make -C $(pwd) O=output "name of defconfig and variant if needed" make -j4 -C $(pwd) O=output
Mediatek(MTK)デバイスの場合
#!/bin/bash export CROSS_COMPILE="path to your toolchain" (it have to end by something like "nameofarch-something-") export ARCH=arm ARCH_MTK_PLATFORM= make "name of defconfig and variant if needed" make -j4
カーネルアーキテクチャに必要な手順を完了したら、ターミナルに次のように入力できます:sudo bash build.sh
次に、ユーザーパスワードを入力すると、コンパイルプロセスが開始されます。
しばらく時間がかかる場合がありますが、通常はそれほど長くはありません。カーネルのコンパイルは、AndroidROM全体のコンパイルとは異なります。これは実際にはCPUに依存します。たとえば、8GBのRAMを搭載したAMDPhenom X4 3.4GHzは、最初から最後までコンパイルするのに約10分かかります。
完了すると、「zimageの準備ができました」などのメッセージが表示されます。
ARMおよびARM64デバイス
「/Output/ arch / arm /boot/」に移動してzimageを見つけます。
Mediatekデバイス
「/arch/ arm /boot/」に移動してzimageを見つけます。
すべてのカーネルビルドがZimageファイルになるわけではなく、他のイメージ形式としてビルドできる場合もあります。
重要:再度コンパイルする場合は、コンパイルプロセスを再開する前に、コマンドmakecleanおよびmakemrproperを入力することをお勧めします。
カーネルブートの作成
選択できるオプションは2つあります。
anykernelメソッドを使用できます(このXDAスレッドでXDAユーザー@ osm0sisによって定義されています)。チュートリアル全体を読む必要がありますが、手順の概要は次のとおりです。
- zImageをルートに配置します(カスタムデバイスが必要なデバイスの場合は、dtbやdtboもここに配置する必要があります。含まれていない場合は、それぞれが元のデバイスにフォールバックします)
- 必要なramdiskファイルを/ramdiskに配置し、modulesを/ modulesに配置します(/ modules / system / lib / modulesのようなフルパスを使用)
- 必要なパッチファイル(通常はコマンドに付随する部分ファイル)を/patchに配置します
- anykernel.shを変更して、カーネルの名前、ブートパーティションの場所、含まれているramdiskファイルのアクセス許可を追加し、必要なramdisk変更のメソッドを使用します(オプションで、バナーファイルやバージョンファイルをルートに配置して、これらを表示します)フラッシュ中)
- `zip -r9 UPDATE-AnyKernel2.zip * -x .gitREADME.md*プレースホルダー`
利用可能な他の方法は、同じROM(CM、TouchWiz、EMUIなど)と同じAndroidバージョンからboot.imgを解凍することです。次に、Zimageを交換します。繰り返しますが、これは非常に複雑なプロセスであり、正確なチュートリアルを読む必要がありますが、手順の概要は次のとおりです。
- 解凍します。
- コマンドライン「unpackimg
」を使用するか、画像をドラッグアンドドロップします。これにより、イメージが分割され、RAMディスクがサブディレクトリに解凍されます。 - RAMディスクを好きなように変更します。
- repackimgバッチスクリプトは入力を必要とせず、以前に分割されたzImageを、すべての元の画像情報(これも分割されて保存された)を使用して新しくパックされた変更されたramdiskと単純に再結合します。
- クリーンアップバッチスクリプトは、フォルダを初期状態にリセットし、split_img+ramdiskディレクトリと新しいパックされたramdiskまたはイメージファイルを削除します。
カーネルをフラッシュする前に、ストックboot.imgのバックアップを作成してから、カーネルをフラッシュして、Androidシステムを起動できるかどうかを確認する必要があります。
カーネルへの機能の追加
カーネルに機能を追加することは、カーネルにスパイスを加えるための優れた方法です。 CPUガバナー、IOスケジューラー、GPUのオーバークロック、オーディオの機能強化など、微調整できるものはたくさんあります。
ガバナーを追加する例は次のとおりです(このガバナーのコードネームはIntellimmです)。
最初の2つのテキストボックスで、「arch / arm /configs/」の「msm8974_sec_defconfig」と「cm_msm8974_sec_defconfig」が変更されていることがわかります。
このファイルの140行目と141行目の間に、「CONFIG_CPU_FREQ_GOV_INTELLIMM =y」というテキストが追加されています。
(この行は、カーネルのコンパイル時にIntellimmを有効にするためのものです)
同じ手法が他のテキストボックス(追加および削除されたものとその場所)にも適用されます
追加する機能に応じて、ファイルの変更、追加、削除を行うことができます。
要約すると、コミットでは、行われたすべての変更とその他すべてを確認できます!
一般的なヒントとコツ
カーネル名とバージョンを変更する方法:
簡単な方法:
defconfigファイルで次の行を編集します:
"CONFIG_LOCALVERSION="-" after - in your defconfig
例:CONFIG_LOCALVERSION =”-XenomTW-3.2.6”
高度な方法:
カーネルソースのルートフォルダにあるMakefileに移動します。
次の行を追加します:
CONFIG_LOCALVERSION="nameofyourkernel" LOCALVERSION="versionofyourkernel"
バージョン、パッチレベル、サブレベル、または外向性の行を変更しないでください。
別の方法:
scripts / mkcompile_hに移動し、次の行を追加します。
LINUX_COMPILE_BY="nameofyourchoice" LINUX_COMPILE_HOST="nameofyourchoice"
PATHの問題の解決:
「パスは正しいですか?」というエラーが発生した場合は、Linuxターミナルでこれを試してください。
"export PATH="pathtotoolchainlocation"/bin:$PATH"
Windows10からUbuntuフォルダーにアクセスする
Ubuntuへのパスは通常次のようになります:
C:\ Users” NAME” \ AppData \ Local \ Packages \ CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc \ LocalState \ rootfs \ home
ただし、Windowsから直接ファイルを編集しないでください。通常、ファイルのアクセス許可が失われます。その場合、Linuxターミナル内からアクセス許可をリセットする必要があります。
-
Windows 10 で Android 通知を取得する方法
Android は、世界で最も使用されているオペレーティング システムの 1 つであり、多数のユーザーを抱えています。 Android を搭載したスマートフォンの性能が向上したため、Windows 10 で Android の通知を受け取ることができるようになりました。これにより、仕事中や携帯電話が遠くにある場合でも、確認するために取りに行く必要がなくなります。 Windows 10 での通知の取得は組み込み機能の 1 つであるため、微調整が必要な設定がいくつかあります。設定を理解する前に、正規の Windows 10 と必要な更新プログラムを使用していることが重要です。 Window
-
Windows 11 で Android アプリを実行する方法
Windows 11 PC で Android アプリを実行できるかどうか知りたいですか?さて、私たちの夢がついに実現したようです。サードパーティのソフトウェアやエミュレーターを使用せずに、Windows 11 で Android アプリを簡単に実行できます。 Windows の「Amazon アプリストア」アプリを使用すると、お気に入りのアプリやゲームにアクセスできます。 Microsoft はついに、PC で Amazon アプリストアを使用して、厳選されたカタログから Android アプリを参照およびインストールできるようにする新しい更新プログラムをリリースしました。ただし、ここに問題