<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>ReDroid on Ivon's Blog</title><link>https://ivonblog.com/ja-jp/tags/redroid/</link><description>Recent content in ReDroid on Ivon's Blog</description><generator>Hugo -- gohugo.io</generator><language>ja-jp</language><managingEditor>infoivonblog.nkfjt@aleeas.com (Ivon Huang)</managingEditor><webMaster>infoivonblog.nkfjt@aleeas.com (Ivon Huang)</webMaster><copyright>Ivon's Blog（ivonblog.com）の記事はご自由に共有いただけます。引用の際は、記事のURLを明記してください。特に明記されていない限り、すべての記事CC BY-SA 4.0 表示-継承 4.0 国際 ライセンスの下で提供されています。商用利用をご希望の場合は、お問い合わせください。</copyright><lastBuildDate>Fri, 06 Jun 2025 16:00:00 +0800</lastBuildDate><atom:link href="https://ivonblog.com/ja-jp/tags/redroid/index.xml" rel="self" type="application/rss+xml"/><follow_challenge><feedId>56005902658351104</feedId><userId>1132431067563556864</userId></follow_challenge><item><title>PCでAndroidアプリを動かしたい？Linux向け「Androidゲームエミュレーター」ソリューション紹介</title><link>https://ivonblog.com/ja-jp/posts/android-emulators-for-linux/</link><pubDate>Fri, 06 Jun 2025 16:00:00 +0800</pubDate><author>infoivonblog.nkfjt@aleeas.com (Ivon Huang)</author><guid>https://ivonblog.com/ja-jp/posts/android-emulators-for-linux/</guid><description>&lt;!-- Co-translated by ChatGPT --&gt;
&lt;!--類別：導航文--&gt;
&lt;p&gt;この記事では、LinuxシステムでAndroidアプリを動かしたり、スマホゲームを遊んだりするための、無料の「Androidエミュレーター」ソリューションをいくつか紹介します。
&lt;figure&gt;
 &lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://static.ivonblog.com/posts/android-emulators-for-linux/images/android-x86-qemu.webp"
 onerror="this.onerror=null;this.src='https://ivonblog.com/images/unable-to-load-the-image-pepe.webp'"
 &gt;&lt;figcaption&gt;Gentoo LinuxのKDE PlasmaデスクトップでAndroid-x86仮想マシンを使ってFGOをプレイ&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;</description><content:encoded>&lt;!-- Co-translated by ChatGPT --&gt;
&lt;!--類別：導航文--&gt;
&lt;p&gt;この記事では、LinuxシステムでAndroidアプリを動かしたり、スマホゲームを遊んだりするための、無料の「Androidエミュレーター」ソリューションをいくつか紹介します。
&lt;figure&gt;
 &lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://static.ivonblog.com/posts/android-emulators-for-linux/images/android-x86-qemu.webp"
 onerror="this.onerror=null;this.src='https://ivonblog.com/images/unable-to-load-the-image-pepe.webp'"
 &gt;&lt;figcaption&gt;Gentoo LinuxのKDE PlasmaデスクトップでAndroid-x86仮想マシンを使ってFGOをプレイ&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;

&lt;h2 class="relative group"&gt;概論
 &lt;div id="概論" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%e6%a6%82%e8%ab%96" aria-label="アンカー"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;市場にはBlueStacks、NOX、LDPlayer、MEmu、Google Play Games on PCなど、多くの商用Androidエミュレーターがあります。形はいろいろですが、結局のところx86 PC上でx86またはARMアーキテクチャのスマホゲームを遊べるというものです。多重起動、放置周回、キーボードマッピングも難しくありません。&lt;/p&gt;
&lt;p&gt;Windowsに多数存在するAndroidエミュレーターと比べると、GNU/Linuxシステム（Ubuntu、Fedora、Arch Linux、openSUSE、Gentoo、ChromeOSを除く）の選択肢はかなり少ないです。Windowsで有名なAndroidエミュレーターの多くはLinux版を出していません。初期のLinuxでは「Genymotion」と「Android Studio」くらいしか使えず、この2つは基本的に開発者向けで、ゲーム用途には使いにくいものでした。&lt;/p&gt;
&lt;p&gt;また、上で述べたWindows向けAndroidエミュレーターは、Wineを使ってもLinuxでは動きません。&lt;/p&gt;
&lt;p&gt;幸い、近年は状況が改善してきました。LXCコンテナ技術を使うAnboxとWaydroidの登場により、LinuxでもAndroidアプリを実行できるようになりました。LinuxのQEMU/KVM技術を利用して、高効率なAndroid-x86仮想マシンをインストールするのも堅実で実用的な方法です。&lt;/p&gt;
&lt;p&gt;いまでは、LinuxユーザーがPC上でAndroidアプリを動かしたりゲームを遊んだりしたい場合、オープンソースソフトウェアで構成されたソリューションを使って「Androidエミュレーター」に近い効果を実現できます。ついでに商用Androidエミュレーターにありがちな企業案件や広告表示からも離れられます。&lt;/p&gt;

&lt;h2 class="relative group"&gt;1. Waydroid
 &lt;div id="1-waydroid" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#1-waydroid" aria-label="アンカー"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;WaydroidはCanonicalが開発したAnboxに由来し、LXC技術を採用しています。コンテナはLinuxとカーネルを共有し、Androidシステムを実行します。開発チームはBliss OSの開発も担当しています。&lt;/p&gt;
&lt;p&gt;Anboxは基本的に開発が停止しており、Waydroidがそれに代わる最も有名なAnbox後継となっています。
&lt;figure&gt;
 &lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://static.ivonblog.com/posts/android-emulators-for-linux/images/waydroid.webp"
 onerror="this.onerror=null;this.src='https://ivonblog.com/images/unable-to-load-the-image-pepe.webp'"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;特徴：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ライセンス：GPLv3&lt;/li&gt;
&lt;li&gt;LXCコンテナは非常に軽量で、実行効率は仮想マシンやエミュレーターよりかなり高く、PCのGPUを有効活用してゲーム性能を加速できます&lt;/li&gt;
&lt;li&gt;LinuxシステムとAndroidクリップボードを共有し、アプリをウィンドウモードで操作できます。まるでネイティブLinuxアプリのような操作感で、MicrosoftのWSAに似ています&lt;/li&gt;
&lt;li&gt;Google Playストアを内蔵&lt;/li&gt;
&lt;li&gt;x86とARMのイメージを提供しており、x86 PCでもRaspberry Piでもデプロイできます&lt;/li&gt;
&lt;li&gt;Waydroidを動かすにはWayland表示プロトコルのデスクトップが必要です&lt;/li&gt;
&lt;li&gt;Waydroidは多重起動に向いておらず、1台のPCにインストールできるAndroidバージョンは1つだけです&lt;/li&gt;
&lt;li&gt;ARMトランスレーターを手動でインストールする必要があります&lt;/li&gt;
&lt;li&gt;現在Nvidia GPUには対応しておらず、Mesaオープンソースドライバーを使うIntelとAMDなどのGPUのみ対応しています&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;インストール手順は&lt;a href="https://ivonblog.com/ja-jp/posts/ubuntu-waydroid/" target="_blank" rel="noreferrer"&gt;こちら&lt;/a&gt;をご覧ください。&lt;/p&gt;

&lt;h2 class="relative group"&gt;2. ReDroid
 &lt;div id="2-redroid" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#2-redroid" aria-label="アンカー"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;DockerコンテナでAndroidシステムを実行し、さらにScrcpyでデスクトップに接続します。開発者の本来の意図はサーバー上にクラウドスマホを構築することですが、デスクトップユーザーもこの方法を参考にできます。
&lt;figure&gt;
 &lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://static.ivonblog.com/posts/android-emulators-for-linux/images/redroid.webp"
 onerror="this.onerror=null;this.src='https://ivonblog.com/images/unable-to-load-the-image-pepe.webp'"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;特徴：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ライセンス：Apache&lt;/li&gt;
&lt;li&gt;x86とARMアーキテクチャのイメージを提供しており、x86 PCでもRaspberry Piでもデプロイできます&lt;/li&gt;
&lt;li&gt;GPUハードウェアアクセラレーションに対応&lt;/li&gt;
&lt;li&gt;ARMトランスレーターを提供&lt;/li&gt;
&lt;li&gt;Google Playストアは自分でインストールする必要があります&lt;/li&gt;
&lt;li&gt;Dockerコンテナの特性によりサーバーへ素早くデプロイでき、Scrcpyでリモート接続できます&lt;/li&gt;
&lt;li&gt;Dockerコンテナはリソース消費が少なく複製も容易なので、多重起動も可能です&lt;/li&gt;
&lt;li&gt;インストール手順はやや煩雑で、うまく使うにはDockerの操作知識がある程度必要です&lt;/li&gt;
&lt;li&gt;現在Nvidia GPUには対応しておらず、Mesaオープンソースドライバーを使うIntelとAMDなどのGPUのみ対応しています&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;インストール方法は&lt;a href="https://ivonblog.com/ja-jp/posts/redroid-android-docker/" target="_blank" rel="noreferrer"&gt;ReDroid&lt;/a&gt;をご覧ください&lt;/p&gt;

&lt;h2 class="relative group"&gt;3. Android-x86仮想マシン
 &lt;div id="3-android-x86仮想マシン" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#3-android-x86%e4%bb%ae%e6%83%b3%e3%83%9e%e3%82%b7%e3%83%b3" aria-label="アンカー"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;Android-x86仮想マシンは、長く開発されてきた同名プロジェクトに由来します。物理PCにインストールできるだけでなく、仮想マシンにもインストールできます。&lt;/p&gt;
&lt;p&gt;ただし、オリジナルのAndroid-x86はAndroid 9以降ほとんど更新されていません。&lt;/p&gt;
&lt;p&gt;近年はAndroid-x86ベースの「Bliss OS」が登場し、非常に活発に更新され、Android 15まで対応しています。
&lt;figure&gt;
 &lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://static.ivonblog.com/posts/android-emulators-for-linux/images/blissos.webp"
 onerror="this.onerror=null;this.src='https://ivonblog.com/images/unable-to-load-the-image-pepe.webp'"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;特徴は以下の通りです：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ライセンス：Apache&lt;/li&gt;
&lt;li&gt;Android-x86は完全なOSで、Android 7からAndroid 15までISOがあります&lt;/li&gt;
&lt;li&gt;ほぼオープンソースソフトウェアで構成されたソリューションで、システムはクリーンかつ広告なしです&lt;/li&gt;
&lt;li&gt;仮想マシンにデプロイできるほか、Microsoft Surfaceなどの物理機にメインシステムとしてインストールすることもできます&lt;/li&gt;
&lt;li&gt;ARM → x86アーキテクチャ変換に対応し、より多くのスマホゲームをサポートします&lt;/li&gt;
&lt;li&gt;GPUパススルーなしでもVirGLで3Dハードウェアアクセラレーションを実現でき、Intel、AMD、Nvidia GPUに対応します&lt;/li&gt;
&lt;li&gt;多重起動の可能性があります&lt;/li&gt;
&lt;li&gt;Google Playストアを内蔵&lt;/li&gt;
&lt;li&gt;仮想マシンのバックエンドにはQEMU/KVM、VirtualBox、VMwareなどを選べます&lt;/li&gt;
&lt;li&gt;仮想マシンなのでGPUアクセラレーション能力には限界があります&lt;/li&gt;
&lt;li&gt;x86アーキテクチャのPCのみ対応&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;QEMU/KVMでAndroid-x86仮想マシンを動かす手順はこちら：&lt;a href="https://ivonblog.com/ja-jp/posts/bliss-os-qemu-installation/" target="_blank" rel="noreferrer"&gt;Bliss OS QEMU VM&lt;/a&gt;。&lt;/p&gt;

&lt;h2 class="relative group"&gt;4. Android StudioのAVDエミュレーター
 &lt;div id="4-android-studioのavdエミュレーター" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#4-android-studio%e3%81%aeavd%e3%82%a8%e3%83%9f%e3%83%a5%e3%83%ac%e3%83%bc%e3%82%bf%e3%83%bc" aria-label="アンカー"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;Android Virtual Device、略してAVDは、Google公式が開発するAndroidエミュレーターで、Android Studioに付属しています。
&lt;figure&gt;
 &lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://static.ivonblog.com/posts/android-emulators-for-linux/images/avd.webp"
 onerror="this.onerror=null;this.src='https://ivonblog.com/images/unable-to-load-the-image-pepe.webp'"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;特徴：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ライセンス：プロプライエタリソフトウェア&lt;/li&gt;
&lt;li&gt;主にAndroidアプリ開発用で、他の方案と比べると比較的成熟しています&lt;/li&gt;
&lt;li&gt;クロスプラットフォームで、同じソフトウェア一式をWindowsとmacOSでも使えます&lt;/li&gt;
&lt;li&gt;ADBとRootを使用できます&lt;/li&gt;
&lt;li&gt;複数のスマホ機種をエミュレートでき、技術的には多重起動も可能です&lt;/li&gt;
&lt;li&gt;Google PlayとARMトランスレーターlibndkを内蔵&lt;/li&gt;
&lt;li&gt;GPUグラフィックアクセラレーションを提供し、Intel、AMD、Nvidia GPUに対応します。&lt;/li&gt;
&lt;li&gt;Android Studio実行時は非常にリソースを食いますが、AVDエミュレーターはAndroid Studioに依存せず単独で実行するよう設定できます&lt;/li&gt;
&lt;li&gt;x86アーキテクチャのPCのみ対応&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;参考手順：&lt;a href="https://ivonblog.com/ja-jp/posts/linux-android-studio-avd-as-a-gaming-emulator" target="_blank" rel="noreferrer"&gt;Linux + Android AVD&lt;/a&gt;&lt;/p&gt;

&lt;h2 class="relative group"&gt;5. Genymotionエミュレーター
 &lt;div id="5-genymotionエミュレーター" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#5-genymotion%e3%82%a8%e3%83%9f%e3%83%a5%e3%83%ac%e3%83%bc%e3%82%bf%e3%83%bc" aria-label="アンカー"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;クロスプラットフォームの商用Androidエミュレーターです。
&lt;figure&gt;
 &lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://static.ivonblog.com/posts/android-emulators-for-linux/images/genoymotion.webp"
 onerror="this.onerror=null;this.src='https://ivonblog.com/images/unable-to-load-the-image-pepe.webp'"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;特徴：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ライセンス：プロプライエタリソフトウェア&lt;/li&gt;
&lt;li&gt;インストールが最も簡単&lt;/li&gt;
&lt;li&gt;実行時にQEMU/KVMまたはVirtualBoxに依存します&lt;/li&gt;
&lt;li&gt;さまざまなスマホ機種のエミュレーションを提供&lt;/li&gt;
&lt;li&gt;スクリーンショット、録画、ジェスチャーのシミュレーションに便利なクイックボタン操作を提供&lt;/li&gt;
&lt;li&gt;ARMトランスレーターを内蔵&lt;/li&gt;
&lt;li&gt;Intel、AMD、Nvidia GPUグラフィックアクセラレーションに対応。&lt;/li&gt;
&lt;li&gt;使用には登録が必要&lt;/li&gt;
&lt;li&gt;無料版では画面上にウォーターマークが表示され、使用の妨げになります。ライセンス購入が必要です&lt;/li&gt;
&lt;li&gt;x86アーキテクチャのPCのみ対応&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Linux版Genymotionのインストール手順は&lt;a href="https://ivonblog.com/ja-jp/posts/genymotion-for-linux" target="_blank" rel="noreferrer"&gt;こちら&lt;/a&gt;&lt;/p&gt;

&lt;h2 class="relative group"&gt;どれを選ぶべきか？
 &lt;div id="どれを選ぶべきか" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%e3%81%a9%e3%82%8c%e3%82%92%e9%81%b8%e3%81%b6%e3%81%b9%e3%81%8d%e3%81%8b" aria-label="アンカー"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;Nvidiaグラフィックカードのユーザーで、内蔵GPUがなく、面倒な調整もしたくない場合、選択肢はAndroid StudioのAVDとGenymotionだけです。&lt;/p&gt;
&lt;p&gt;IntelやAMDグラフィックカードのユーザーなら、選択肢は増えます。Linuxの各種「Androidエミュレーター」方案を比較すると、Waydroidは間違いなく最高性能です。LXCコンテナ技術を使い、Linuxとカーネルを共有するため、計算時の性能損失がほとんどありません。Waydroidの性能は、物理PCにAndroidをインストールしたようなものです。&lt;/p&gt;
&lt;p&gt;Android StudioのAVDエミュレーターやAndroid-x86仮想マシン方案と比べると、Waydroidの性能はかなり高いです。特に低スペックPCでは、Waydroidが最も経済的な選択です。私がGeekbenchでベンチマークしたところ、仮想化を一層挟んだAndroidの性能は、最大でほぼ半分近く失われます！つまり仮想マシンの性能を支えるには、より多くのCPUコアを割り当てる必要があります。PCのCPUが4コア以下なら、Android-x86仮想マシンを起動すると全リソースを食い尽くしてしまいます！それに比べ、Waydroidのリソース消費は低いです。&lt;/p&gt;
&lt;p&gt;Android-x86仮想マシンのグラフィックアクセラレーションはVirGLに依存しており、この性能はAndroid StudioのAVDエミュレーターよりやや弱いです。&lt;/p&gt;
&lt;p&gt;ReDroidについては上級者向けで、クラウドスマホへリモート接続したいプレイヤーに向いています。&lt;/p&gt;</content:encoded><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://ivonblog.com/ja-jp/posts/android-emulators-for-linux/featured.webp"/></item><item><title>ReDroidチュートリアル：DockerでAndroidシステムを動かし、x86 PCでARMスマホゲームを遊ぶ</title><link>https://ivonblog.com/ja-jp/posts/redroid-android-docker/</link><pubDate>Thu, 15 Aug 2024 21:00:00 +0800</pubDate><author>infoivonblog.nkfjt@aleeas.com (Ivon Huang)</author><guid>https://ivonblog.com/ja-jp/posts/redroid-android-docker/</guid><description>&lt;!-- Co-translated by ChatGPT --&gt;
&lt;p&gt;ReDroid (Remote anDroid) は自前で「クラウドスマホ」を構築する方案で、DockerでAndroidシステムコンテナを動かし、さらにScrcpyの画面ミラーリング機能でAndroidデスクトップへ接続します。
&lt;figure&gt;
 &lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://static.ivonblog.com/posts/redroid-android-docker/images/FQXt3GC.webp"
 onerror="this.onerror=null;this.src='https://ivonblog.com/images/unable-to-load-the-image-pepe.webp'"
 &gt;&lt;figcaption&gt;LinuxでReDroidを使ってFGOをプレイ&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;</description><content:encoded>&lt;!-- Co-translated by ChatGPT --&gt;
&lt;p&gt;ReDroid (Remote anDroid) は自前で「クラウドスマホ」を構築する方案で、DockerでAndroidシステムコンテナを動かし、さらにScrcpyの画面ミラーリング機能でAndroidデスクトップへ接続します。
&lt;figure&gt;
 &lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://static.ivonblog.com/posts/redroid-android-docker/images/FQXt3GC.webp"
 onerror="this.onerror=null;this.src='https://ivonblog.com/images/unable-to-load-the-image-pepe.webp'"
 &gt;&lt;figcaption&gt;LinuxでReDroidを使ってFGOをプレイ&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;ReDroidもPC上で&lt;strong&gt;オープンソースソフトウェア&lt;/strong&gt;を使ってAndroidアプリを動かすソリューションです。クラウドスマホはさておき、多くのAndroidスマホゲームエミュレーターは&lt;strong&gt;クローズドソースソフトウェア&lt;/strong&gt;ですからね。それに比べ、ReDroidはARMトランスレーター以外はオープンソースです。さらに素晴らしいことに、ReDroidはGPUアクセラレーション＋ARMからx86へのトランスレーターに対応しているため、大多数のスマホ3Dゲームを遊べます。&lt;/p&gt;
&lt;p&gt;Linuxユーザーにとって、これは&lt;a href="https://ivonblog.com/ja-jp/posts/android-emulators-for-linux/" target="_blank" rel="noreferrer"&gt;WaydroidとAndroid-x86仮想マシン&lt;/a&gt;以外に、Linux PCでAndroidアプリを高効率に動かす方法でもあります。さらにWaydroidよりクラウドスマホ用途に向いています。&lt;a href="https://ivonblog.com/posts/scrcpy-app-remote-control-android-in-cloud/" target="_blank" rel="noreferrer"&gt;Self-hosting Cloud Phone&lt;/a&gt;を参照してください&lt;/p&gt;
&lt;p&gt;この記事では、x86アーキテクチャのLinux PCでReDroidを使い、ARMアーキテクチャのスマホゲームを遊ぶ方法を扱います。最良の使用体験を得るため、ReDroidイメージにARMトランスレーター＋Googleサービスフレームワークを追加します。&lt;/p&gt;

&lt;h2 class="relative group"&gt;1. ReDroidシステム要件
 &lt;div id="1-redroidシステム要件" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#1-redroid%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e8%a6%81%e4%bb%b6" aria-label="アンカー"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;任意のLinuxディストリビューションで使えるはずです。&lt;/p&gt;
&lt;p&gt;この記事ではx86アーキテクチャのPCでReDroidを動かす例を示します。ARMアーキテクチャのPCについては、Oracle ARMアーキテクチャサーバーでのデプロイ成功例を報告したネットユーザーがおり、私も&lt;a href="https://ivonblog.com/posts/redroid-on-raspberry-pi" target="_blank" rel="noreferrer"&gt;Raspberry Pi 5でReDroidを動かせる&lt;/a&gt;ことをテスト済みです。&lt;/p&gt;
&lt;p&gt;PCがx86アーキテクチャの場合、実行できるのはx86アーキテクチャのAndroidアプリだけです。しかし多くのスマホゲームはARMアーキテクチャ版しかないため、ReDroidにはlibndkまたはlibhoudiniのARMトランスレーターを入れる必要があります。&lt;/p&gt;
&lt;p&gt;スマホゲームを遊ぶなら、PCには少なくとも8GB以上のRAMをおすすめします。ARMをx86命令へ変換するとき、大量のRAMを消費することがあるためです。&lt;/p&gt;
&lt;p&gt;GPUアクセラレーションについては、IntelやAMDのGPUなど、Linux Mesaがサポートするドライバーの使用をおすすめします。3Dアクセラレーションがそのまま使えます。Nvidiaはおすすめしません。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Androidバージョンについて、Redroid作者が公開している&lt;code&gt;redroid:11.0.0-latest&lt;/code&gt;と&lt;code&gt;redroid:12.0.0-latest&lt;/code&gt;イメージにはGoogle開発のARMトランスレーターlibndkが内蔵されています。試したところAndroid 11だけが比較的安定しており、GAppsも使えたので、この記事ではAndroid 11のイメージを選びます。&lt;/p&gt;

&lt;h2 class="relative group"&gt;2. ReDroid前提依存項目をインストール
 &lt;div id="2-redroid前提依存項目をインストール" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#2-redroid%e5%89%8d%e6%8f%90%e4%be%9d%e5%ad%98%e9%a0%85%e7%9b%ae%e3%82%92%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab" aria-label="アンカー"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;ReDroidの&lt;a href="https://github.com/remote-android/redroid-doc/blob/master/deploy/README.md" target="_blank" rel="noreferrer"&gt;Github&lt;/a&gt;には主要Linuxディストリビューション向けのインストール説明があります。私はUbuntuシステムを例にします。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;まずbinderカーネルモジュールを用意します。Ubuntu 24.04では以下のコマンドを実行し、必要なbinderカーネルモジュールをインストールします：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install linux-modules-extra-&lt;span class="sb"&gt;`&lt;/span&gt;uname -r&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo modprobe binder_linux &lt;span class="nv"&gt;devices&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;binder,hwbinder,vndbinder&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="2"&gt;
&lt;li&gt;上記カーネルモジュールを起動時自動読み込みに追加します&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;binder_linux options binder_linux devices=&amp;#34;binder,hwbinder,vndbinder&amp;#34;&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; sudo tee -a /etc/modules-load.d/redroid.conf&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="3"&gt;
&lt;li&gt;
&lt;p&gt;コンテナ実行用に&lt;a href="https://ivonblog.com/posts/install-docker-engine-on-linux/" target="_blank" rel="noreferrer"&gt;Docker&lt;/a&gt;をインストールします&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://developer.android.com/tools/releases/platform-tools?hl=zh-tw" target="_blank" rel="noreferrer"&gt;ADB&lt;/a&gt;ツールをインストールします&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;最後に&lt;a href="https://ivonblog.com/posts/scrcpy-usage" target="_blank" rel="noreferrer"&gt;Scrcpy&lt;/a&gt;をインストールします。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;キーマッピングを統合したグラフィカルなScrcpy UIが欲しい場合は、&lt;a href="https://ivonblog.com/posts/android-qtscrcpy-usage/" target="_blank" rel="noreferrer"&gt;QtScrcpy&lt;/a&gt;を入れてもよいです。Web版の&lt;a href="https://ivonblog.com/posts/ws-scrcpy/" target="_blank" rel="noreferrer"&gt;ws-scrcpy&lt;/a&gt;も試せます。&lt;/p&gt;

&lt;h2 class="relative group"&gt;3. ReDroidイメージに事前にGAppsをインストール
 &lt;div id="3-redroidイメージに事前にgappsをインストール" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#3-redroid%e3%82%a4%e3%83%a1%e3%83%bc%e3%82%b8%e3%81%ab%e4%ba%8b%e5%89%8d%e3%81%abgapps%e3%82%92%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab" aria-label="アンカー"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;ReDroid作者が公開しているイメージは素のAndroidで、GAppsはプリインストールされていません。&lt;a href="https://hub.docker.com/search?q=redroid" target="_blank" rel="noreferrer"&gt;Docker Hub&lt;/a&gt;で他人が事前にビルドしたReDroidイメージを探すこともできます。GApps内蔵のものなら自分でbuildする必要はありません。もちろん、リスクは自己責任です。&lt;/p&gt;
&lt;p&gt;ここでは&lt;a href="https://github.com/ayasa520/redroid-script" target="_blank" rel="noreferrer"&gt;ayasa520のRemote-Android Script&lt;/a&gt;を使い、ReDroidイメージを自動取得してGAppsを入れます。Android 11のイメージのみ対応です。&lt;/p&gt;
&lt;p&gt;このスクリプトはlibndk、libhoudini、Magisk、Widevine DRMなどのコンポーネントのインストールにも使えます。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Remote-Android Scriptリポジトリをクローンし、Python仮想環境を作成します&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install lzip python3 python3-venv python3-pip
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone https://github.com/ayasa520/redroid-script.git
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; redroid-script
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python3 -m venv venv
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;venv/bin/pip install -r requirements.txt&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Android 11のイメージを取得し、GAppsをインストールします&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;venv/bin/python3 redroid.py -a 11.0.0 -g&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="3"&gt;
&lt;li&gt;これでGApps入りイメージ&lt;code&gt;redroid/redroid:11.0.0_gapps&lt;/code&gt;が得られます。&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 class="relative group"&gt;4. docker-composeでReDroidコンテナを起動
 &lt;div id="4-docker-composeでredroidコンテナを起動" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#4-docker-compose%e3%81%a7redroid%e3%82%b3%e3%83%b3%e3%83%86%e3%83%8a%e3%82%92%e8%b5%b7%e5%8b%95" aria-label="アンカー"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;この手順はNvidiaグラフィックカードの場合のみ必要です。IntelとAMDグラフィックカードのユーザーは次の手順へ直接進んでください。ReDroidのNvidiaグラフィックカード対応は良くありません。可能なら内蔵GPUで動かすことをおすすめします。どうしてもNvidiaを使うなら、ReDroid用の仮想マシンを作成します。NvidiaクローズドソースドライバーではReDroidにGPUアクセラレーションを使わせられないため、QEMU仮想マシンを動かし、その中にReDroidを入れてvirtio-gpuでハードウェアアクセラレーションを実現する必要があります。ただしこれは準仮想化技術なので性能損失は大きいです。仮想マシンを作らず、PCに内蔵GPUもない場合、ReDroidはソフトウェアレンダリングになります。ソフトウェアレンダリングの性能を受け入れられるなら、仮想マシンをインストールする必要はありません。&lt;/li&gt;
&lt;/ol&gt;
&lt;details&gt;
&lt;summary&gt; ReDroid用仮想マシンを作成&lt;/summary&gt;
&lt;p&gt;QEMU ＋ Virt Managerをインストールし、&lt;a href="https://releases.ubuntu.com/" target="_blank" rel="noreferrer"&gt;Ubuntu 24.04をダウンロード&lt;/a&gt;して、64GBのUbuntu仮想マシンを作成します&lt;/p&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;qemu-img create -f qcow2 ubuntu.qcow2 64GB
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;qemu-system-x86_64 -boot d -cdrom &lt;span class="s2"&gt;&amp;#34;ubuntu-22.04.1-desktop-amd64.iso&amp;#34;&lt;/span&gt; -enable-kvm -smp &lt;span class="m"&gt;4&lt;/span&gt; -device intel-hda -device hda-duplex -device virtio-vga-gl -net nic -net user,hostfwd&lt;span class="o"&gt;=&lt;/span&gt;tcp::5555-:5555 -cpu host -m &lt;span class="m"&gt;4096&lt;/span&gt; -display sdl,gl&lt;span class="o"&gt;=&lt;/span&gt;on -hda ubuntu.qcow2&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;仮想マシンへ起動し、その後&lt;a href="https://ivonblog.com/posts/install-docker-engine-on-linux/" target="_blank" rel="noreferrer"&gt;Dockerをインストール&lt;/a&gt;します。&lt;/p&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;qemu-system-x86_64 -enable-kvm -smp &lt;span class="m"&gt;4&lt;/span&gt; -device intel-hda -device hda-duplex -device virtio-vga-gl -net nic -net user,hostfwd&lt;span class="o"&gt;=&lt;/span&gt;tcp::5555-:5555 -cpu host -m &lt;span class="m"&gt;4096&lt;/span&gt; -display sdl,gl&lt;span class="o"&gt;=&lt;/span&gt;on -hda ubuntu.qcow2&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/details&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Androidデータ保存用ディレクトリを作成し、docker-composeを追加します&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir ~/redroid
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; redroid
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;vim docker-compose.yml&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="3"&gt;
&lt;li&gt;以下の内容を入力します：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;services&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;redroid&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;redroid/redroid:11.0.0_gapps&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# 先ほど作成したGApps入りReDroidイメージを使用&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;stdin_open&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;tty&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;privileged&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;ports&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="m"&gt;127.0.0.1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;5555&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;5555&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# ADBポート。セキュリティ強化のためローカルlocalhostポートのみリッスン&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;volumes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;./redroid-11-data:/data&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# データは現在ディレクトリに保存&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;command&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;androidboot.redroid_width=720&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# スマホ解像度&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;androidboot.redroid_height=1280&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;androidboot.redroid_dpi=320&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;androidboot.redroid_fps=60&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;androidboot.redroid_gpu_mode=host&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# ホストGPUハードウェアアクセラレーションを有効化。hostはGPUアクセラレーション、guestはソフトウェアレンダリング&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;ro.product.cpu.abilist0=x86_64,arm64-v8a,x86,armeabi-v7a,armeabi&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# libndk関連設定&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;ro.product.cpu.abilist64=x86_64,arm64-v8a&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;ro.product.cpu.abilist32=x86,armeabi-v7a,armeabi&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;ro.dalvik.vm.isa.arm=x86&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;ro.dalvik.vm.isa.arm64=x86_64&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;ro.enable.native.bridge.exec=1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;ro.dalvik.vm.native.bridge=libndk_translation.so&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;ro.ndk_translation.version=0.2.2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="4"&gt;
&lt;li&gt;サービスを起動&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo docker compose up -d&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="5"&gt;
&lt;li&gt;ADBでローカルのReDroidへ接続します。ローカルなのでIPはlocalhostです。ReDroidをリモートにデプロイしている場合は、リモートホストのIPに変更します。&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb connect localhost:5555
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 接続できない場合、以下のコマンドでコンテナ内部で何が起きているか確認します&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo docker ps
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo docker &lt;span class="nb"&gt;exec&lt;/span&gt; &amp;lt;容器ID&amp;gt; logcat
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo docker logs &amp;lt;容器ID&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="6"&gt;
&lt;li&gt;Scrcpyを実行し、Androidへ接続します：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;scrcpy -s localhost:5555 --audio-codec&lt;span class="o"&gt;=&lt;/span&gt;aac&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="7"&gt;
&lt;li&gt;
&lt;p&gt;これでAndroidデスクトップが見えます。
&lt;figure&gt;
 &lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://static.ivonblog.com/posts/redroid-android-docker/images/rPc7feZ.webp"
 onerror="this.onerror=null;this.src='https://ivonblog.com/images/unable-to-load-the-image-pepe.webp'"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Google Playサービスが「デバイスは認証されていません」というエラーメッセージを出すことがあります。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;以下のコマンドでAndroidデバイスIDを取得し、&lt;a href="https://www.google.com/android/uncertified" target="_blank" rel="noreferrer"&gt;Googleサイトでデバイスを登録&lt;/a&gt;します。30分ほど待ってからRedroidコンテナを再起動すると、Google Playにログインできます。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb -s localhost:5555 root
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb -s localhost:5555 shell &lt;span class="s1"&gt;&amp;#39;sqlite3 /data/data/com.google.android.gsf/databases/gservices.db \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; &amp;#34;select * from main where name = \&amp;#34;android_id\&amp;#34;;&amp;#34;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="10"&gt;
&lt;li&gt;
&lt;p&gt;ReDroidの3Dアクセラレーションが正常に動いているか確認するには、&lt;a href="https://www.aida64.com/downloads" target="_blank" rel="noreferrer"&gt;AIDA64&lt;/a&gt;をインストールし、PCのGPU型番を認識できるか見ます。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;セキュリティを強化したい場合は、ReDroidのdocker-composeネットワーク設定をローカルlocalhostポートのみリッスンするようにしてください（&lt;code&gt;ports: 127.0.0.1:5000:5000&lt;/code&gt;）。ReDroidを外部ネットワークからアクセス可能にする場合は、ファイアウォール設定に注意し、ADBの5000ポートを直接インターネットへ公開しないでください。重大なセキュリティリスクになります。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 class="relative group"&gt;5. ReDroidにAPKをインストールする方法
 &lt;div id="5-redroidにapkをインストールする方法" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#5-redroid%e3%81%abapk%e3%82%92%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95" aria-label="アンカー"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;現在、libndkをインストールしていても、Android 11のPlayストアはARMアーキテクチャのアプリをダウンロードさせてくれません。APKPureのようなアプリストアと組み合わせてアプリをインストールしてください。&lt;/p&gt;
&lt;p&gt;コンテナ内部のブラウザでAPKをダウンロードする以外に、ADBでAPKをReDroidコンテナへインストールすることもできます。たとえば&lt;a href="https://www.apkmirror.com/apk/line-corporation/line/" target="_blank" rel="noreferrer"&gt;ApkMirror&lt;/a&gt;からLineのAPKをダウンロードし、ADBでインストールします：&lt;/p&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb -s localhost:5555 install &lt;span class="s2"&gt;&amp;#34;jp.naver.line.android.apk&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;ScrcpyはAPKをウィンドウへドラッグしてインストールできます。&lt;/p&gt;
&lt;p&gt;ADBの&lt;code&gt;pull&lt;/code&gt;と&lt;code&gt;push&lt;/code&gt;コマンドでファイルを転送することもできます。&lt;/p&gt;

&lt;h2 class="relative group"&gt;6. ReDroidを「起動・停止」する方法
 &lt;div id="6-redroidを起動停止する方法" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#6-redroid%e3%82%92%e8%b5%b7%e5%8b%95%e5%81%9c%e6%ad%a2%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95" aria-label="アンカー"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;ReDroidを停止したい場合、Scrcpyウィンドウを閉じた後、コンテナを停止します：&lt;/p&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~/redroid
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo docker compose down&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;その後、このコマンドでReDroidを再び起動できます。ReDroidコンテナの&lt;code&gt;/data&lt;/code&gt;データは&lt;code&gt;~/redroid/redroid-11-data&lt;/code&gt;ディレクトリにあり、複数システムのファイルをバックアップするのに使えます。&lt;/p&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~/redroid
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo docker compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb connect localhost:5555
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;scrcpy -s localhost:5555 --audio-codec&lt;span class="o"&gt;=&lt;/span&gt;aac&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 class="relative group"&gt;7. ReDroid多重起動の例
 &lt;div id="7-redroid多重起動の例" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#7-redroid%e5%a4%9a%e9%87%8d%e8%b5%b7%e5%8b%95%e3%81%ae%e4%be%8b" aria-label="アンカー"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://ivonblog.com/posts/redroid-multiple-instances" target="_blank" rel="noreferrer"&gt;ReDroid Multiple Instances&lt;/a&gt;を参照してください&lt;/p&gt;

&lt;h2 class="relative group"&gt;付録
 &lt;div id="付録" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%e4%bb%98%e9%8c%b2" aria-label="アンカー"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;details&gt; &lt;summary&gt; ReDroidイメージへGAppsを手動インストール &lt;/summary&gt;
&lt;p&gt;ReDroid作者によると、Googleサービスフレームワークはプロプライエタリソフトウェアなので内蔵できません。したがって自分でインストールする必要があります。1つ目の方法はReDroidイメージの再コンパイル、2つ目はOpenGAppsの手動インストールです。&lt;/p&gt;
&lt;p&gt;1つ目の方法はおすすめしません。時間がかかるうえ、作者が提供するGAppsビルド手順には他のアプリが検出できない問題もあります。&lt;/p&gt;
&lt;p&gt;ここでは2つ目の方法、手動インストールを使います。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://opengapps.org/" target="_blank" rel="noreferrer"&gt;OpenGapps&lt;/a&gt;からx86_64アーキテクチャのAndroid 11 GAppsをダウンロードし、最小構成のpico版を選びます。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;展開すると、以下のディレクトリが見えます&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;open_gapps-x86_64-11.0-pico-20220503
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── Core
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── GApps
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── META-INF
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── Optional&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="3"&gt;
&lt;li&gt;
&lt;p&gt;展開したディレクトリ&lt;code&gt;open_gapps-x86_64-11.0-pico-20220503&lt;/code&gt;の下に&lt;code&gt;system&lt;/code&gt;ディレクトリを追加します。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;次に、&lt;code&gt;Core&lt;/code&gt;と&lt;code&gt;GApps&lt;/code&gt;ディレクトリ内の&lt;code&gt;.lz&lt;/code&gt;ファイルをすべて展開し、中のAPKディレクトリを対応するインストール先に従って&lt;code&gt;system&lt;/code&gt;ディレクトリへ置きます。たとえば&lt;code&gt;GApps/googletts-x86_64/nodpi/app/&lt;/code&gt;下の&lt;code&gt;GoogleTTS&lt;/code&gt;ディレクトリは&lt;code&gt;/system/app&lt;/code&gt;へ置きます。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;配置後、&lt;code&gt;system&lt;/code&gt;下のディレクトリ構造はこのようになるはずです：&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;system
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── app
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   ├── GoogleCalendarSyncAdapter
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   │   └── GoogleCalendarSyncAdapter.apk
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   ├── GoogleContactsSyncAdapter
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   │   └── GoogleContactsSyncAdapter.apk
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   ├── GoogleExtShared
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   │   └── GoogleExtShared.apk
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   └── GoogleTTS
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   └── GoogleTTS.apk
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── etc
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   ├── default-permissions
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   │   ├── default-permissions.xml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   │   └── opengapps-permissions-q.xml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   ├── permissions
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   │   ├── com.google.android.dialer.support.xml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   │   ├── com.google.android.maps.xml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   │   ├── com.google.android.media.effects.xml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   │   ├── privapp-permissions-google.xml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   │   └── split-permissions-google.xml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   ├── preferred-apps
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   │   └── google.xml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   └── sysconfig
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   ├── dialer_experience.xml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   ├── google_build.xml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   ├── google_exclusives_enable.xml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   ├── google-hiddenapi-package-whitelist.xml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   └── google.xml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── framework
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   ├── com.google.android.dialer.support.jar
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   ├── com.google.android.maps.jar
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   └── com.google.android.media.effects.jar
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── priv-app
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   ├── AndroidAutoPrebuiltStub
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   │   └── AndroidAutoPrebuiltStub.apk
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   ├── AndroidMigratePrebuilt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   │   └── AndroidMigratePrebuilt.apk
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   ├── CarrierSetup
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   │   └── CarrierSetup.apk
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   ├── ConfigUpdater
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   │   └── ConfigUpdater.apk
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   ├── GoogleBackupTransport
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   │   └── GoogleBackupTransport.apk
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   ├── GoogleExtServices
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   │   └── GoogleExtServices.apk
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   ├── GoogleFeedback
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   │   └── GoogleFeedback.apk
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   ├── GoogleOneTimeInitializer
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   │   └── GoogleOneTimeInitializer.apk
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   ├── GooglePackageInstaller
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   │   └── GooglePackageInstaller.apk
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   ├── GooglePartnerSetup
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   │   └── GooglePartnerSetup.apk
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   ├── GoogleRestore
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   │   └── GoogleRestore.apk
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   ├── GoogleServicesFramework
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   │   └── GoogleServicesFramework.apk
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   ├── Phonesky
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   │   └── Phonesky.apk
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   ├── PrebuiltGmsCore
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   │   └── PrebuiltGmsCore.apk
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   └── SetupWizard
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   └── SetupWizard.apk
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└── product
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └── overlay
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └── PlayStoreOverlay.apk&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="6"&gt;
&lt;li&gt;以下のコマンドでroot権限を取得します：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb connect localhost:5555
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb -s localhost:5555 root
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb -s localhost:5555 remount
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb -s localhost:5555 shell &lt;span class="s2"&gt;&amp;#34;rm -rf system/priv-app/PackageInstaller&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="7"&gt;
&lt;li&gt;次に&lt;code&gt;system&lt;/code&gt;ディレクトリをReDroidシステムへpushし、権限を付与します：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb -s localhost:5555 push system /
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb -s localhost:5555 shell &lt;span class="s2"&gt;&amp;#34;pm grant com.google.android.gms android.permission.ACCESS_COARSE_LOCATION&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb -s localhost:5555 shell &lt;span class="s2"&gt;&amp;#34;pm grant com.google.android.gms android.permission.ACCESS_FINE_LOCATION&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb -s localhost:5555 shell &lt;span class="s2"&gt;&amp;#34;pm grant com.google.android.setupwizard android.permission.READ_PHONE_STATE&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb -s localhost:5555 shell &lt;span class="s2"&gt;&amp;#34;pm grant com.google.android.setupwizard android.permission.READ_CONTACTS&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb reboot&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="8"&gt;
&lt;li&gt;ReDroidコンテナを再起動します：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~/redroid
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo docker compose down
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo docker compose up -d&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="9"&gt;
&lt;li&gt;Scrcpyを起動&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;scrcpy -s localhost:5555 --audio-codec&lt;span class="o"&gt;=&lt;/span&gt;raw&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="10"&gt;
&lt;li&gt;システム設定 → アプリを開き、右上からシステムアプリ表示を選択し、Google PlayサービスとPlayストアの権限をすべて有効にします。&lt;/li&gt;
&lt;/ol&gt;
&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt; libndkを手動抽出してAndroidイメージをビルド &lt;/summary&gt;
&lt;p&gt;libndkはGoogleが開発したプロプライエタリソフトウェアで、Android Studioのエミュレーターに含まれています。&lt;a href="https://github.com/zhouziyang/libndk_translation" target="_blank" rel="noreferrer"&gt;ReDroid作者の指示&lt;/a&gt;によると、新しいAndroidエミュレーターからlibndkを手動で抽出し、ReDroidの素のシステムへ入れることができます。&lt;/p&gt;
&lt;p&gt;ここではAndroid 13を例にします。作者は必ず使えるとは保証していない点に注意してください。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Android Studioをインストールし、Android 13の仮想マシンを追加します&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ADBで接続&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb devices
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;su&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="3"&gt;
&lt;li&gt;libndkをパッケージ化&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;{&lt;/span&gt; find /system -name arm* -type d&lt;span class="p"&gt;;&lt;/span&gt; find /system -name *ndk_translation*&lt;span class="p"&gt;;&lt;/span&gt; find /system/etc -name *arm*&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; tar -cf /sdcard/nb.tar -T -&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="4"&gt;
&lt;li&gt;libndk.soをパッケージ化&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;find system -type l &lt;span class="p"&gt;|&lt;/span&gt; tar -cf /sdcard/so.tar -T -&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="5"&gt;
&lt;li&gt;ADBを終了し、上記ファイルをローカルへ転送します&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;exit&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;exit&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb pull /sdcard/nb.tar .
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb pull /sdcard/so.tar .&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="6"&gt;
&lt;li&gt;libndk.soをlibndkの圧縮ファイルへ追加します&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tar -xvf so.tar
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;find system -type l &lt;span class="p"&gt;|&lt;/span&gt; tar -rf libndk_translation.tar -T -&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="7"&gt;
&lt;li&gt;&lt;code&gt;DOCKERFILE&lt;/code&gt;を追加し、以下の内容を入力します：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;FROM redroid/redroid:13.0.0-latest
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ADD libndk_translation.tar /&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="8"&gt;
&lt;li&gt;libndk入りAndroid 13イメージのビルドを開始します。その後、このイメージ&lt;code&gt;redroid:13.0.0-libndk&lt;/code&gt;をコンテナ実行に使えるようになります。&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker build . -t redroid:13.0.0-libndk&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/details&gt;

&lt;h2 class="relative group"&gt;參考資料
 &lt;div id="參考資料" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%e5%8f%83%e8%80%83%e8%b3%87%e6%96%99" aria-label="アンカー"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/remote-android/redroid-doc" target="_blank" rel="noreferrer"&gt;redroid (Remote-Android) is a multi-arch, GPU enabled, Android in Cloud solution - Github&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://vocus.cc/article/645b3257fd8978000139c12f" target="_blank" rel="noreferrer"&gt;App 自動化測試（三）ReDroid 安裝與基本使用 - Scott Hsiao&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.bilibili.com/read/cv19273886/" target="_blank" rel="noreferrer"&gt;在使用 NVIDIA 显卡时为 redroid 开启3d加速&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/remote-android/redroid-doc/issues/282" target="_blank" rel="noreferrer"&gt;redroid nVidia GPU support #282&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://groups.google.com/g/android-rpi/c/xb2fwTQbUYw" target="_blank" rel="noreferrer"&gt;Install GApps Manually - Google Groups&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://ivonblog.com/ja-jp/posts/redroid-android-docker/featured.webp"/></item></channel></rss>