<?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>Self-Hosting on Ivon&#39;s Blog</title>
    <link>https://ivonblog.com/ja-jp/categories/self-hosting/</link>
    <description>Recent content in Self-Hosting on Ivon&#39;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&#39;s Blog（ivonblog.com）の記事はご自由に共有いただけます。引用の際は、記事のURLを明記してください。特に明記されていない限り、すべての記事CC BY-SA 4.0 表示-継承 4.0 国際 ライセンスの下で提供されています。商用利用をご希望の場合は、お問い合わせください。</copyright>
    <lastBuildDate>Thu, 15 Aug 2024 21:00:00 +0800</lastBuildDate><atom:link href="https://ivonblog.com/ja-jp/categories/self-hosting/index.xml" rel="self" type="application/rss+xml" />
    <follow_challenge>
      <feedId>56005902658351104</feedId>
      <userId>1132431067563556864</userId>
    </follow_challenge>
    
    
    <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;&#xA;&lt;p&gt;ReDroid (Remote anDroid) は自前で「クラウドスマホ」を構築する方案で、DockerでAndroidシステムコンテナを動かし、さらにScrcpyの画面ミラーリング機能でAndroidデスクトップへ接続します。&#xA;&lt;figure&gt;&#xA;  &lt;img&#xA;    class=&#34;my-0 rounded-md&#34;&#xA;    loading=&#34;lazy&#34;&#xA;    decoding=&#34;async&#34;&#xA;    fetchpriority=&#34;low&#34;&#xA;    alt=&#34;&#34;&#xA;    src=&#34;https://static.ivonblog.com/posts/redroid-android-docker/images/FQXt3GC.webp&#34;&#xA;    onerror=&#34;this.onerror=null;this.src=&#39;https://ivonblog.com/images/unable-to-load-the-image-pepe.webp&#39;&#34;&#xA;    &gt;&lt;figcaption&gt;LinuxでReDroidを使ってFGOをプレイ&lt;/figcaption&gt;&lt;/figure&gt;&#xA;&lt;/p&gt;</description>
      <content:encoded>&lt;!-- Co-translated by ChatGPT --&gt;&#xA;&lt;p&gt;ReDroid (Remote anDroid) は自前で「クラウドスマホ」を構築する方案で、DockerでAndroidシステムコンテナを動かし、さらにScrcpyの画面ミラーリング機能でAndroidデスクトップへ接続します。&#xA;&lt;figure&gt;&#xA;  &lt;img&#xA;    class=&#34;my-0 rounded-md&#34;&#xA;    loading=&#34;lazy&#34;&#xA;    decoding=&#34;async&#34;&#xA;    fetchpriority=&#34;low&#34;&#xA;    alt=&#34;&#34;&#xA;    src=&#34;https://static.ivonblog.com/posts/redroid-android-docker/images/FQXt3GC.webp&#34;&#xA;    onerror=&#34;this.onerror=null;this.src=&#39;https://ivonblog.com/images/unable-to-load-the-image-pepe.webp&#39;&#34;&#xA;    &gt;&lt;figcaption&gt;LinuxでReDroidを使ってFGOをプレイ&lt;/figcaption&gt;&lt;/figure&gt;&#xA;&lt;/p&gt;&#xA;&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;&#xA;&lt;p&gt;Linuxユーザーにとって、これは&lt;a href=&#34;https://ivonblog.com/ja-jp/posts/android-emulators-for-linux/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;WaydroidとAndroid-x86仮想マシン&lt;/a&gt;以外に、Linux PCでAndroidアプリを高効率に動かす方法でもあります。さらにWaydroidよりクラウドスマホ用途に向いています。&lt;a href=&#34;https://ivonblog.com/posts/scrcpy-app-remote-control-android-in-cloud/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Self-hosting Cloud Phone&lt;/a&gt;を参照してください&lt;/p&gt;&#xA;&lt;p&gt;この記事では、x86アーキテクチャのLinux PCでReDroidを使い、ARMアーキテクチャのスマホゲームを遊ぶ方法を扱います。最良の使用体験を得るため、ReDroidイメージにARMトランスレーター＋Googleサービスフレームワークを追加します。&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;1. ReDroidシステム要件&#xA;    &lt;div id=&#34;1-redroidシステム要件&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#1-redroid%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e8%a6%81%e4%bb%b6&#34; aria-label=&#34;アンカー&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;任意のLinuxディストリビューションで使えるはずです。&lt;/p&gt;&#xA;&lt;p&gt;この記事ではx86アーキテクチャのPCでReDroidを動かす例を示します。ARMアーキテクチャのPCについては、Oracle ARMアーキテクチャサーバーでのデプロイ成功例を報告したネットユーザーがおり、私も&lt;a href=&#34;https://ivonblog.com/posts/redroid-on-raspberry-pi&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Raspberry Pi 5でReDroidを動かせる&lt;/a&gt;ことをテスト済みです。&lt;/p&gt;&#xA;&lt;p&gt;PCがx86アーキテクチャの場合、実行できるのはx86アーキテクチャのAndroidアプリだけです。しかし多くのスマホゲームはARMアーキテクチャ版しかないため、ReDroidにはlibndkまたはlibhoudiniのARMトランスレーターを入れる必要があります。&lt;/p&gt;&#xA;&lt;p&gt;スマホゲームを遊ぶなら、PCには少なくとも8GB以上のRAMをおすすめします。ARMをx86命令へ変換するとき、大量のRAMを消費することがあるためです。&lt;/p&gt;&#xA;&lt;p&gt;GPUアクセラレーションについては、IntelやAMDのGPUなど、Linux Mesaがサポートするドライバーの使用をおすすめします。3Dアクセラレーションがそのまま使えます。Nvidiaはおすすめしません。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&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;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;2. ReDroid前提依存項目をインストール&#xA;    &lt;div id=&#34;2-redroid前提依存項目をインストール&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#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&#34; aria-label=&#34;アンカー&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;ReDroidの&lt;a href=&#34;https://github.com/remote-android/redroid-doc/blob/master/deploy/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Github&lt;/a&gt;には主要Linuxディストリビューション向けのインストール説明があります。私はUbuntuシステムを例にします。&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;まずbinderカーネルモジュールを用意します。Ubuntu 24.04では以下のコマンドを実行し、必要なbinderカーネルモジュールをインストールします：&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install linux-modules-extra-&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;uname -r&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo modprobe binder_linux &lt;span class=&#34;nv&#34;&gt;devices&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&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;&#xA;&lt;ol start=&#34;2&#34;&gt;&#xA;&lt;li&gt;上記カーネルモジュールを起動時自動読み込みに追加します&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;binder_linux options binder_linux devices=&amp;#34;binder,hwbinder,vndbinder&amp;#34;&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&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;&#xA;&lt;ol start=&#34;3&#34;&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;コンテナ実行用に&lt;a href=&#34;https://ivonblog.com/posts/install-docker-engine-on-linux/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Docker&lt;/a&gt;をインストールします&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://developer.android.com/tools/releases/platform-tools?hl=zh-tw&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;ADB&lt;/a&gt;ツールをインストールします&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;最後に&lt;a href=&#34;https://ivonblog.com/posts/scrcpy-usage&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Scrcpy&lt;/a&gt;をインストールします。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;キーマッピングを統合したグラフィカルなScrcpy UIが欲しい場合は、&lt;a href=&#34;https://ivonblog.com/posts/android-qtscrcpy-usage/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;QtScrcpy&lt;/a&gt;を入れてもよいです。Web版の&lt;a href=&#34;https://ivonblog.com/posts/ws-scrcpy/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;ws-scrcpy&lt;/a&gt;も試せます。&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;3. ReDroidイメージに事前にGAppsをインストール&#xA;    &lt;div id=&#34;3-redroidイメージに事前にgappsをインストール&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#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&#34; aria-label=&#34;アンカー&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;ReDroid作者が公開しているイメージは素のAndroidで、GAppsはプリインストールされていません。&lt;a href=&#34;https://hub.docker.com/search?q=redroid&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Docker Hub&lt;/a&gt;で他人が事前にビルドしたReDroidイメージを探すこともできます。GApps内蔵のものなら自分でbuildする必要はありません。もちろん、リスクは自己責任です。&lt;/p&gt;&#xA;&lt;p&gt;ここでは&lt;a href=&#34;https://github.com/ayasa520/redroid-script&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;ayasa520のRemote-Android Script&lt;/a&gt;を使い、ReDroidイメージを自動取得してGAppsを入れます。Android 11のイメージのみ対応です。&lt;/p&gt;&#xA;&lt;p&gt;このスクリプトはlibndk、libhoudini、Magisk、Widevine DRMなどのコンポーネントのインストールにも使えます。&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Remote-Android Scriptリポジトリをクローンし、Python仮想環境を作成します&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install lzip python3 python3-venv python3-pip&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/ayasa520/redroid-script.git&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; redroid-script&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python3 -m venv venv&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&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;&#xA;&lt;ol start=&#34;2&#34;&gt;&#xA;&lt;li&gt;Android 11のイメージを取得し、GAppsをインストールします&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&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;&#xA;&lt;ol start=&#34;3&#34;&gt;&#xA;&lt;li&gt;これでGApps入りイメージ&lt;code&gt;redroid/redroid:11.0.0_gapps&lt;/code&gt;が得られます。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;4. docker-composeでReDroidコンテナを起動&#xA;    &lt;div id=&#34;4-docker-composeでredroidコンテナを起動&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#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&#34; aria-label=&#34;アンカー&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;この手順はNvidiaグラフィックカードの場合のみ必要です。IntelとAMDグラフィックカードのユーザーは次の手順へ直接進んでください。ReDroidのNvidiaグラフィックカード対応は良くありません。可能なら内蔵GPUで動かすことをおすすめします。どうしてもNvidiaを使うなら、ReDroid用の仮想マシンを作成します。NvidiaクローズドソースドライバーではReDroidにGPUアクセラレーションを使わせられないため、QEMU仮想マシンを動かし、その中にReDroidを入れてvirtio-gpuでハードウェアアクセラレーションを実現する必要があります。ただしこれは準仮想化技術なので性能損失は大きいです。仮想マシンを作らず、PCに内蔵GPUもない場合、ReDroidはソフトウェアレンダリングになります。ソフトウェアレンダリングの性能を受け入れられるなら、仮想マシンをインストールする必要はありません。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;details&gt;&#xA;&lt;summary&gt; ReDroid用仮想マシンを作成&lt;/summary&gt;&#xA;&lt;p&gt;QEMU ＋ Virt Managerをインストールし、&lt;a href=&#34;https://releases.ubuntu.com/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Ubuntu 24.04をダウンロード&lt;/a&gt;して、64GBのUbuntu仮想マシンを作成します&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;qemu-img create -f qcow2 ubuntu.qcow2 64GB&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;qemu-system-x86_64 -boot d -cdrom &lt;span class=&#34;s2&#34;&gt;&amp;#34;ubuntu-22.04.1-desktop-amd64.iso&amp;#34;&lt;/span&gt; -enable-kvm -smp &lt;span class=&#34;m&#34;&gt;4&lt;/span&gt; -device intel-hda -device hda-duplex  -device virtio-vga-gl  -net nic -net user,hostfwd&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;tcp::5555-:5555 -cpu host  -m &lt;span class=&#34;m&#34;&gt;4096&lt;/span&gt;  -display sdl,gl&lt;span class=&#34;o&#34;&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;&#xA;&lt;p&gt;仮想マシンへ起動し、その後&lt;a href=&#34;https://ivonblog.com/posts/install-docker-engine-on-linux/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Dockerをインストール&lt;/a&gt;します。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;qemu-system-x86_64 -enable-kvm -smp &lt;span class=&#34;m&#34;&gt;4&lt;/span&gt; -device intel-hda -device hda-duplex  -device virtio-vga-gl  -net nic -net user,hostfwd&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;tcp::5555-:5555 -cpu host  -m &lt;span class=&#34;m&#34;&gt;4096&lt;/span&gt;  -display sdl,gl&lt;span class=&#34;o&#34;&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;&#xA;&lt;/details&gt;&#xA;&lt;ol start=&#34;2&#34;&gt;&#xA;&lt;li&gt;Androidデータ保存用ディレクトリを作成し、docker-composeを追加します&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir ~/redroid&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; redroid&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;vim docker-compose.yml&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;ol start=&#34;3&#34;&gt;&#xA;&lt;li&gt;以下の内容を入力します：&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;services&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;redroid&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;redroid/redroid:11.0.0_gapps&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 先ほど作成したGApps入りReDroidイメージを使用&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;stdin_open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;tty&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;privileged&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ports&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;m&#34;&gt;127.0.0.1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;5555&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;5555&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# ADBポート。セキュリティ強化のためローカルlocalhostポートのみリッスン&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;./redroid-11-data:/data&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# データは現在ディレクトリに保存&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;command&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;androidboot.redroid_width=720&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# スマホ解像度&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;androidboot.redroid_height=1280&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;androidboot.redroid_dpi=320&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;androidboot.redroid_fps=60&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;androidboot.redroid_gpu_mode=host&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# ホストGPUハードウェアアクセラレーションを有効化。hostはGPUアクセラレーション、guestはソフトウェアレンダリング&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;ro.product.cpu.abilist0=x86_64,arm64-v8a,x86,armeabi-v7a,armeabi&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# libndk関連設定&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;ro.product.cpu.abilist64=x86_64,arm64-v8a&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;ro.product.cpu.abilist32=x86,armeabi-v7a,armeabi&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;ro.dalvik.vm.isa.arm=x86&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;ro.dalvik.vm.isa.arm64=x86_64&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;ro.enable.native.bridge.exec=1&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;ro.dalvik.vm.native.bridge=libndk_translation.so&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&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;&#xA;&lt;ol start=&#34;4&#34;&gt;&#xA;&lt;li&gt;サービスを起動&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo docker compose up -d&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;ol start=&#34;5&#34;&gt;&#xA;&lt;li&gt;ADBでローカルのReDroidへ接続します。ローカルなのでIPはlocalhostです。ReDroidをリモートにデプロイしている場合は、リモートホストのIPに変更します。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;adb connect localhost:5555&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 接続できない場合、以下のコマンドでコンテナ内部で何が起きているか確認します&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo docker ps&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo docker &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &amp;lt;容器ID&amp;gt; logcat&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&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;&#xA;&lt;ol start=&#34;6&#34;&gt;&#xA;&lt;li&gt;Scrcpyを実行し、Androidへ接続します：&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;scrcpy -s localhost:5555 --audio-codec&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;aac&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;ol start=&#34;7&#34;&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;これでAndroidデスクトップが見えます。&#xA;&lt;figure&gt;&#xA;  &lt;img&#xA;    class=&#34;my-0 rounded-md&#34;&#xA;    loading=&#34;lazy&#34;&#xA;    decoding=&#34;async&#34;&#xA;    fetchpriority=&#34;low&#34;&#xA;    alt=&#34;&#34;&#xA;    src=&#34;https://static.ivonblog.com/posts/redroid-android-docker/images/rPc7feZ.webp&#34;&#xA;    onerror=&#34;this.onerror=null;this.src=&#39;https://ivonblog.com/images/unable-to-load-the-image-pepe.webp&#39;&#34;&#xA;    &gt;&lt;/figure&gt;&#xA;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Google Playサービスが「デバイスは認証されていません」というエラーメッセージを出すことがあります。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;以下のコマンドでAndroidデバイスIDを取得し、&lt;a href=&#34;https://www.google.com/android/uncertified&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Googleサイトでデバイスを登録&lt;/a&gt;します。30分ほど待ってからRedroidコンテナを再起動すると、Google Playにログインできます。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;adb -s localhost:5555 root&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;adb -s localhost:5555 shell &lt;span class=&#34;s1&#34;&gt;&amp;#39;sqlite3 /data/data/com.google.android.gsf/databases/gservices.db \&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&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;&#xA;&lt;ol start=&#34;10&#34;&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;ReDroidの3Dアクセラレーションが正常に動いているか確認するには、&lt;a href=&#34;https://www.aida64.com/downloads&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;AIDA64&lt;/a&gt;をインストールし、PCのGPU型番を認識できるか見ます。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&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;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;5. ReDroidにAPKをインストールする方法&#xA;    &lt;div id=&#34;5-redroidにapkをインストールする方法&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#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&#34; aria-label=&#34;アンカー&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;現在、libndkをインストールしていても、Android 11のPlayストアはARMアーキテクチャのアプリをダウンロードさせてくれません。APKPureのようなアプリストアと組み合わせてアプリをインストールしてください。&lt;/p&gt;&#xA;&lt;p&gt;コンテナ内部のブラウザでAPKをダウンロードする以外に、ADBでAPKをReDroidコンテナへインストールすることもできます。たとえば&lt;a href=&#34;https://www.apkmirror.com/apk/line-corporation/line/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;ApkMirror&lt;/a&gt;からLineのAPKをダウンロードし、ADBでインストールします：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;adb -s localhost:5555 install &lt;span class=&#34;s2&#34;&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;&#xA;&lt;p&gt;ScrcpyはAPKをウィンドウへドラッグしてインストールできます。&lt;/p&gt;&#xA;&lt;p&gt;ADBの&lt;code&gt;pull&lt;/code&gt;と&lt;code&gt;push&lt;/code&gt;コマンドでファイルを転送することもできます。&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;6. ReDroidを「起動・停止」する方法&#xA;    &lt;div id=&#34;6-redroidを起動停止する方法&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#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&#34; aria-label=&#34;アンカー&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;ReDroidを停止したい場合、Scrcpyウィンドウを閉じた後、コンテナを停止します：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ~/redroid&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo docker compose down&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&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;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ~/redroid&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo docker compose up -d&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;adb connect localhost:5555&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;scrcpy -s localhost:5555 --audio-codec&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;aac&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;7. ReDroid多重起動の例&#xA;    &lt;div id=&#34;7-redroid多重起動の例&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#7-redroid%e5%a4%9a%e9%87%8d%e8%b5%b7%e5%8b%95%e3%81%ae%e4%be%8b&#34; aria-label=&#34;アンカー&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://ivonblog.com/posts/redroid-multiple-instances&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;ReDroid Multiple Instances&lt;/a&gt;を参照してください&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;付録&#xA;    &lt;div id=&#34;付録&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#%e4%bb%98%e9%8c%b2&#34; aria-label=&#34;アンカー&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;details&gt; &lt;summary&gt; ReDroidイメージへGAppsを手動インストール &lt;/summary&gt;&#xA;&lt;p&gt;ReDroid作者によると、Googleサービスフレームワークはプロプライエタリソフトウェアなので内蔵できません。したがって自分でインストールする必要があります。1つ目の方法はReDroidイメージの再コンパイル、2つ目はOpenGAppsの手動インストールです。&lt;/p&gt;&#xA;&lt;p&gt;1つ目の方法はおすすめしません。時間がかかるうえ、作者が提供するGAppsビルド手順には他のアプリが検出できない問題もあります。&lt;/p&gt;&#xA;&lt;p&gt;ここでは2つ目の方法、手動インストールを使います。&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://opengapps.org/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;OpenGapps&lt;/a&gt;からx86_64アーキテクチャのAndroid 11 GAppsをダウンロードし、最小構成のpico版を選びます。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;展開すると、以下のディレクトリが見えます&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;open_gapps-x86_64-11.0-pico-20220503&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── Core&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── GApps&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── META-INF&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── Optional&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;ol start=&#34;3&#34;&gt;&#xA;&lt;li&gt;&#xA;&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;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&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;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;配置後、&lt;code&gt;system&lt;/code&gt;下のディレクトリ構造はこのようになるはずです：&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;system&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── app&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── GoogleCalendarSyncAdapter&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   │   └── GoogleCalendarSyncAdapter.apk&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── GoogleContactsSyncAdapter&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   │   └── GoogleContactsSyncAdapter.apk&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── GoogleExtShared&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   │   └── GoogleExtShared.apk&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   └── GoogleTTS&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│       └── GoogleTTS.apk&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── etc&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── default-permissions&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   │   ├── default-permissions.xml&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   │   └── opengapps-permissions-q.xml&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── permissions&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   │   ├── com.google.android.dialer.support.xml&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   │   ├── com.google.android.maps.xml&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   │   ├── com.google.android.media.effects.xml&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   │   ├── privapp-permissions-google.xml&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   │   └── split-permissions-google.xml&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── preferred-apps&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   │   └── google.xml&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   └── sysconfig&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│       ├── dialer_experience.xml&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│       ├── google_build.xml&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│       ├── google_exclusives_enable.xml&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│       ├── google-hiddenapi-package-whitelist.xml&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│       └── google.xml&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── framework&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── com.google.android.dialer.support.jar&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── com.google.android.maps.jar&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   └── com.google.android.media.effects.jar&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── priv-app&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── AndroidAutoPrebuiltStub&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   │   └── AndroidAutoPrebuiltStub.apk&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── AndroidMigratePrebuilt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   │   └── AndroidMigratePrebuilt.apk&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── CarrierSetup&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   │   └── CarrierSetup.apk&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── ConfigUpdater&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   │   └── ConfigUpdater.apk&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── GoogleBackupTransport&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   │   └── GoogleBackupTransport.apk&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── GoogleExtServices&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   │   └── GoogleExtServices.apk&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── GoogleFeedback&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   │   └── GoogleFeedback.apk&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── GoogleOneTimeInitializer&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   │   └── GoogleOneTimeInitializer.apk&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── GooglePackageInstaller&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   │   └── GooglePackageInstaller.apk&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── GooglePartnerSetup&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   │   └── GooglePartnerSetup.apk&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── GoogleRestore&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   │   └── GoogleRestore.apk&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── GoogleServicesFramework&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   │   └── GoogleServicesFramework.apk&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── Phonesky&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   │   └── Phonesky.apk&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── PrebuiltGmsCore&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   │   └── PrebuiltGmsCore.apk&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   └── SetupWizard&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│       └── SetupWizard.apk&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── product&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    └── overlay&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        └── PlayStoreOverlay.apk&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;ol start=&#34;6&#34;&gt;&#xA;&lt;li&gt;以下のコマンドでroot権限を取得します：&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;adb connect localhost:5555&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;adb -s localhost:5555 root&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;adb -s localhost:5555 remount&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;adb -s localhost:5555 shell &lt;span class=&#34;s2&#34;&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;&#xA;&lt;ol start=&#34;7&#34;&gt;&#xA;&lt;li&gt;次に&lt;code&gt;system&lt;/code&gt;ディレクトリをReDroidシステムへpushし、権限を付与します：&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;adb -s localhost:5555 push system /&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;adb -s localhost:5555 shell &lt;span class=&#34;s2&#34;&gt;&amp;#34;pm grant com.google.android.gms android.permission.ACCESS_COARSE_LOCATION&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;adb -s localhost:5555 shell &lt;span class=&#34;s2&#34;&gt;&amp;#34;pm grant com.google.android.gms android.permission.ACCESS_FINE_LOCATION&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;adb -s localhost:5555 shell &lt;span class=&#34;s2&#34;&gt;&amp;#34;pm grant com.google.android.setupwizard android.permission.READ_PHONE_STATE&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;adb -s localhost:5555 shell &lt;span class=&#34;s2&#34;&gt;&amp;#34;pm grant com.google.android.setupwizard android.permission.READ_CONTACTS&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;adb reboot&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;ol start=&#34;8&#34;&gt;&#xA;&lt;li&gt;ReDroidコンテナを再起動します：&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ~/redroid&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo docker compose down&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo docker compose up -d&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;ol start=&#34;9&#34;&gt;&#xA;&lt;li&gt;Scrcpyを起動&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;scrcpy -s localhost:5555 --audio-codec&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;raw&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;ol start=&#34;10&#34;&gt;&#xA;&lt;li&gt;システム設定 → アプリを開き、右上からシステムアプリ表示を選択し、Google PlayサービスとPlayストアの権限をすべて有効にします。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/details&gt;&#xA;&lt;details&gt;&#xA;&lt;summary&gt; libndkを手動抽出してAndroidイメージをビルド &lt;/summary&gt;&#xA;&lt;p&gt;libndkはGoogleが開発したプロプライエタリソフトウェアで、Android Studioのエミュレーターに含まれています。&lt;a href=&#34;https://github.com/zhouziyang/libndk_translation&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;ReDroid作者の指示&lt;/a&gt;によると、新しいAndroidエミュレーターからlibndkを手動で抽出し、ReDroidの素のシステムへ入れることができます。&lt;/p&gt;&#xA;&lt;p&gt;ここではAndroid 13を例にします。作者は必ず使えるとは保証していない点に注意してください。&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Android Studioをインストールし、Android 13の仮想マシンを追加します&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;ADBで接続&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;adb devices&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;adb shell&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;su&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;ol start=&#34;3&#34;&gt;&#xA;&lt;li&gt;libndkをパッケージ化&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;{&lt;/span&gt; find /system -name arm* -type d&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; find /system -name *ndk_translation*&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; find /system/etc -name *arm*&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;p&#34;&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;&#xA;&lt;ol start=&#34;4&#34;&gt;&#xA;&lt;li&gt;libndk.soをパッケージ化&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;find system -type l &lt;span class=&#34;p&#34;&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;&#xA;&lt;ol start=&#34;5&#34;&gt;&#xA;&lt;li&gt;ADBを終了し、上記ファイルをローカルへ転送します&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;exit&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;exit&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;adb pull /sdcard/nb.tar .&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;adb pull /sdcard/so.tar .&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;ol start=&#34;6&#34;&gt;&#xA;&lt;li&gt;libndk.soをlibndkの圧縮ファイルへ追加します&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tar -xvf so.tar&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;find system -type l &lt;span class=&#34;p&#34;&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;&#xA;&lt;ol start=&#34;7&#34;&gt;&#xA;&lt;li&gt;&lt;code&gt;DOCKERFILE&lt;/code&gt;を追加し、以下の内容を入力します：&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;FROM redroid/redroid:13.0.0-latest&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ADD libndk_translation.tar /&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;ol start=&#34;8&#34;&gt;&#xA;&lt;li&gt;libndk入りAndroid 13イメージのビルドを開始します。その後、このイメージ&lt;code&gt;redroid:13.0.0-libndk&lt;/code&gt;をコンテナ実行に使えるようになります。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&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;&#xA;&lt;/details&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;參考資料&#xA;    &lt;div id=&#34;參考資料&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#%e5%8f%83%e8%80%83%e8%b3%87%e6%96%99&#34; aria-label=&#34;アンカー&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/remote-android/redroid-doc&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;redroid (Remote-Android) is a multi-arch, GPU enabled, Android in Cloud solution - Github&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://vocus.cc/article/645b3257fd8978000139c12f&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;App 自動化測試（三）ReDroid 安裝與基本使用 - Scott Hsiao&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.bilibili.com/read/cv19273886/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;在使用 NVIDIA 显卡时为 redroid 开启3d加速&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/remote-android/redroid-doc/issues/282&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;redroid nVidia GPU support #282&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://groups.google.com/g/android-rpi/c/xb2fwTQbUYw&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Install GApps Manually - Google Groups&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</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>
