メインコンテンツへスキップ

Documentation Index

Fetch the complete documentation index at: https://docs.devin.ai/llms.txt

Use this file to discover all available pages before exploring further.

Devin は Android アプリケーションを自身のマシン上で直接ビルドして実行できるため、Android 版の Computer Use とブラウザ操作に相当する機能を利用できます。Devin はアプリを開き、挙動を確認し、問題を再現し、アプリケーションが実際に動作する環境で変更内容を検証できます。録画 と組み合わせることで、その証拠として録画を送ることもできます。
Android エミュレータのサポートは現在、限定的に提供されています。Devin での利用にご興味がある場合は、詳細の確認とアクセス権の取得について、お問い合わせください。

できること

Android エミュレータのサポートを有効にすると、Devin はモバイル開発の一連の作業全体をカバーできます。

PR のビルドとスモークテスト

Devin はエミュレータ上でアプリをビルドして実行し、各 PR ごとに重要なフローをクリック操作で確認します。機能が正しく動作していることを示す動画録画を確認して、そのままマージできます。

エンドツーエンドのモバイルテスト

ログイン、画面遷移、フォーム送信、チェックアウトなどの一連のユーザーフローを、モックではなく実際の Android スタック上でテストします。Devin はフローをステップごとにたどり、不具合があれば検出します。

UI の検証

さまざまな画面サイズや API レベルで、レイアウト、テーマ、レスポンシブ対応を検証します。Devin は重要なポイントでスクリーンショットを取得し、要素の重なりやテキストの切れといった視覚的な問題を検出します。

クラッシュと ANR のデバッグ

エミュレータ上で問題を再現し、logcat の出力を取得し、挙動を調査して根本原因を特定し、修正を push するまで、すべてを 1 つのセッションで行えます。

クロスプラットフォーム検証

React Native、Flutter、または Kotlin Multiplatform で開発していますか?Devin なら、同じセッション内で Web やデスクトップのビルドと並行して Android 側もテストできます。

インストルメント化テストの実行

Espresso や UI Automator のテストスイートをエミュレータ上で実行し、結果を受け取れます。別途 CI 用のデバイスファームや物理デバイスを用意する必要はありません。

複数構成でのテスト

複数の AVD を設定することで、異なる API レベルやデバイスプロファイルでアプリを検証できます。ユーザーに届く前に互換性の問題を見つけるのに役立ちます。

仕組み

Android エミュレータのサポートは、Devin の環境の他の部分と同じ宣言的構成システムに基づいています。ブループリントに Android SDK とエミュレータを追加すると、必要なものがすべてプリインストールされた VM を Devin のスナップショットが構築します。すべてのセッションはそのスナップショットから起動するため、エミュレータはすぐに利用できます。 セッション中、Devin は 2 つの方法でエミュレータを操作します。
方法できること利用する場面
adb (command line)APK のインストール、テストの実行、ログの取得、スクリーンショットの撮影自動ビルド、インストルメント化テスト、logcat のデバッグ
Computer Use (desktop)エミュレータ画面を見ながら、タップ、スワイプ、入力、画面遷移を行うエンドツーエンドの UI テスト、視覚的な確認、動画録画
エミュレータのウィンドウは Devin のデスクトップ上で実行されるため、webapp の Desktop タブから、Devin が app をリアルタイムで操作する様子を確認できます。

エミュレータのセットアップ

最も簡単に始める方法です。Devin が Android プロジェクトを解析し、適切な SDK コンポーネントをインストールして、エミュレータを設定します。
1

Devin セッションを開始する

新しいセッションを開き、Devin に Android エミュレーションのセットアップを依頼します。例: 「このリポジトリ用に Android エミュレータをセットアップして。」
2

内容を確認して承認する

Devin は、Android SDK、ビルドツール、エミュレータ設定を含むブループリントを提案します。タイムラインの提案カードを確認し、Approve をクリックします。
3

確認する

ビルドが完了したら、新しいセッションを開始します。すべてが正しく動作することを確認するため、Devin にエミュレータ上でアプリをビルドして実行するよう依頼します。

インストールされるもの

一般的な Android エミュレータのサポートのブループリントでは、次のコンポーネントがインストールされます。
ComponentPurpose
Android SDK command-line toolsSDK の基本管理 (sdkmanager)
Platform toolsデバイス通信用の adbfastboot
Build toolsAPK のビルドに使用する aapt2d8zipalign
Android platform (e.g., API 34)アプリの対象 API レベル
エミュレータ + システムイメージ仮想デバイス本体
Devin の環境内で最適なパフォーマンスを得るには、x86_64 の システムイメージ を利用してください。ARM image でも動作しますが、エミュレーション時の速度は大幅に低下します。

エミュレータの使い方

オンデマンドテスト

セッション中であれば、どのタイミングでも Devin にアプリのビルドと実行を依頼できます。特別な構文は不要で、自然な言葉で指示するだけです。
  • 「Android エミュレータでアプリをビルドして実行して」
  • 「エミュレータでログインフローをテストして、録画を送って」
  • 「エミュレータで設定画面を開いて、新しいトグルが表示されることを確認して」
  • 「エミュレータで Espresso テストを実行して、結果を見せて」
Devin はエミュレータを起動し (まだ起動していない場合) 、アプリをビルドして実行したうえで操作します。プログラムによる操作には adb を、視覚的な操作には Computer Use を利用します。

Testing & Recordings との統合

Android エミュレータのサポートは、Devin の Testing & Recordings ワークフローに直接組み込まれています。PR を作成すると、次のように進みます。
  1. Devin が アプリをテスト するよう提案します — ボタンをクリックするか、直接依頼してください
  2. Devin がエミュレータ上でアプリをビルドして実行し、目的を絞ったテスト計画を実行します
  3. エミュレータ画面が、注釈付きの動画録画としてキャプチャされます
  4. その録画が送信されるため、テストの様子を確認したうえで、安心してマージできます
これは Web アプリのテストと同じように動作します。唯一の違いは、Devin が Chrome ではなくエミュレータのウィンドウを操作することです。
Devin に Android アプリのビルド、起動、テストの方法を正確に伝える Skill を作成してください。これにより、繰り返しのセッションでセットアップ時間を短縮でき、一貫したテストを行えます。たとえば、Gradle のビルドコマンド、起動する Activity、確認するフローを含めてください。

Skillの提案

Android アプリのテスト後、Devin は学習した内容――エミュレータの起動方法、実行する Gradle タスク、テスト対象の機能への移動方法――を書き留め、PR を通じて Skill の作成または更新を提案します。PR はそのままマージすることも、手順をより適切にするために調整することもできます。 これにより、Devin は時間とともにあなたの Android プロジェクトのテストをよりうまく行えるようになります。各セッションで得た学びは前回の内容に積み重なっていくため、Devin があなたのアプリを 2 回目にテストするときには、すでにビルド方法、起動すべきアクティビティ、そして特に重要なフローを把握しています。 また、いつでもプロンプトで Devin にこれを行うよう依頼できます (たとえば、「この Android アプリのビルド方法とテスト方法についての Skill を作成して」) 。詳しくは、Skills guide を参照してください。

デスクトップ経由での操作

Android エミュレータは、Devin の Linux デスクトップ上でウィンドウとして動作します。つまり、次のことが可能です。
  • Devin は Computer Use を使ってエミュレータを操作できます — ボタンのタップ、スワイプ、テキスト入力、画面間の移動
  • Devin webappDesktop タブから、リアルタイムで確認できます
  • 録画には、Devin のデスクトップ上に表示されている他の内容とあわせて、エミュレータの画面も含まれます
デスクトップ操作の仕組みについて詳しくは、Computer Use を参照してください。

adb の利用

Devin は adb を介してエミュレータをプログラムから操作することもでき、次のような用途で役立ちます。
  • APK のインストールadb install app-debug.apk
  • インストルメント化テストの実行adb shell am instrument -w com.example.test/androidx.test.runner.AndroidJUnitRunner
  • ログの取得adb logcat でクラッシュや予期しない動作をデバッグ
  • スクリーンショットの取得adb exec-out screencap -p > screenshot.png
  • ユーザー入力のシミュレーションadb shell input tap 500 800 でスクリプト化された操作を実行
Devin はタスクに応じて adb と Computer Use を使い分けます。速度と自動化には adb、視覚的な確認や複雑な UI フローには Computer Use を利用します。

ブループリントの使用例

一般的な Android セットアップ向けの、コピー&ペーストですぐ使えるブループリントです。各テンプレートは単体で完結しているので、ブループリントエディタに貼り付けて保存してください。
initialize:
  - name: "Install Android SDK"
    run: |
      export ANDROID_HOME="$HOME/android-sdk"
      mkdir -p "$ANDROID_HOME/cmdline-tools"
      cd "$ANDROID_HOME/cmdline-tools"
      curl -fsSL https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip -o tools.zip
      unzip -q tools.zip -d latest-tmp
      mv latest-tmp/cmdline-tools "$ANDROID_HOME/cmdline-tools/latest"
      rm -rf tools.zip latest-tmp
      echo "export ANDROID_HOME=$ANDROID_HOME" >> ~/.bashrc
      echo 'export PATH=$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$ANDROID_HOME/emulator:$PATH' >> ~/.bashrc
      export PATH="$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$ANDROID_HOME/emulator:$PATH"
      yes | sdkmanager --licenses > /dev/null 2>&1
      sdkmanager "platform-tools" "build-tools;34.0.0" "platforms;android-34" "emulator" "system-images;android-34;google_apis;x86_64"
      echo "no" | avdmanager create avd -n devin -k "system-images;android-34;google_apis;x86_64" --device "pixel_6"

maintenance: |
  ./gradlew assembleDebug

knowledge:
  - name: build
    contents: ./gradlew assembleDebug
  - name: test
    contents: ./gradlew test
  - name: lint
    contents: ./gradlew lint
  - name: emulator
    contents: |
      Start the emulator: emulator -avd devin -no-window -no-audio -gpu swiftshader_indirect &
      Wait for boot: adb wait-for-device && adb shell getprop sys.boot_completed
      Install APK: adb install app/build/outputs/apk/debug/app-debug.apk
initialize:
  - name: "Install Node.js"
    run: |
      nvm install 20
      nvm use 20

  - name: "Install Android SDK"
    run: |
      export ANDROID_HOME="$HOME/android-sdk"
      mkdir -p "$ANDROID_HOME/cmdline-tools"
      cd "$ANDROID_HOME/cmdline-tools"
      curl -fsSL https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip -o tools.zip
      unzip -q tools.zip -d latest-tmp
      mv latest-tmp/cmdline-tools "$ANDROID_HOME/cmdline-tools/latest"
      rm -rf tools.zip latest-tmp
      echo "export ANDROID_HOME=$ANDROID_HOME" >> ~/.bashrc
      echo 'export PATH=$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$ANDROID_HOME/emulator:$PATH' >> ~/.bashrc
      export PATH="$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$ANDROID_HOME/emulator:$PATH"
      yes | sdkmanager --licenses > /dev/null 2>&1
      sdkmanager "platform-tools" "build-tools;34.0.0" "platforms;android-34" "emulator" "system-images;android-34;google_apis;x86_64"
      echo "no" | avdmanager create avd -n devin -k "system-images;android-34;google_apis;x86_64" --device "pixel_6"

maintenance: |
  npm install
  cd android && ./gradlew assembleDebug

knowledge:
  - name: build
    contents: cd android && ./gradlew assembleDebug
  - name: test
    contents: npm test
  - name: lint
    contents: npm run lint
  - name: emulator
    contents: |
      Start the emulator: emulator -avd devin -no-window -no-audio -gpu swiftshader_indirect &
      Wait for boot: adb wait-for-device && adb shell getprop sys.boot_completed
      Run on device: npx react-native run-android
initialize:
  - name: "Install Flutter"
    run: |
      cd "$HOME"
      git clone https://github.com/flutter/flutter.git -b stable --depth 1
      echo 'export PATH=$HOME/flutter/bin:$PATH' >> ~/.bashrc
      export PATH="$HOME/flutter/bin:$PATH"
      flutter precache --android
      yes | flutter doctor --android-licenses > /dev/null 2>&1

  - name: "Install Android SDK"
    run: |
      export ANDROID_HOME="$HOME/android-sdk"
      mkdir -p "$ANDROID_HOME/cmdline-tools"
      cd "$ANDROID_HOME/cmdline-tools"
      curl -fsSL https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip -o tools.zip
      unzip -q tools.zip -d latest-tmp
      mv latest-tmp/cmdline-tools "$ANDROID_HOME/cmdline-tools/latest"
      rm -rf tools.zip latest-tmp
      echo "export ANDROID_HOME=$ANDROID_HOME" >> ~/.bashrc
      echo 'export PATH=$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$ANDROID_HOME/emulator:$PATH' >> ~/.bashrc
      export PATH="$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$ANDROID_HOME/emulator:$PATH"
      yes | sdkmanager --licenses > /dev/null 2>&1
      sdkmanager "platform-tools" "build-tools;34.0.0" "platforms;android-34" "emulator" "system-images;android-34;google_apis;x86_64"
      echo "no" | avdmanager create avd -n devin -k "system-images;android-34;google_apis;x86_64" --device "pixel_6"

maintenance: |
  flutter pub get

knowledge:
  - name: build
    contents: flutter build apk --debug
  - name: test
    contents: flutter test
  - name: lint
    contents: flutter analyze
  - name: emulator
    contents: |
      Start the emulator: emulator -avd devin -no-window -no-audio -gpu swiftshader_indirect &
      Wait for boot: adb wait-for-device && adb shell getprop sys.boot_completed
      Run on device: flutter run -d emulator-5554
initialize:
  - name: "Install Android SDK"
    run: |
      export ANDROID_HOME="$HOME/android-sdk"
      mkdir -p "$ANDROID_HOME/cmdline-tools"
      cd "$ANDROID_HOME/cmdline-tools"
      curl -fsSL https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip -o tools.zip
      unzip -q tools.zip -d latest-tmp
      mv latest-tmp/cmdline-tools "$ANDROID_HOME/cmdline-tools/latest"
      rm -rf tools.zip latest-tmp
      echo "export ANDROID_HOME=$ANDROID_HOME" >> ~/.bashrc
      echo 'export PATH=$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$ANDROID_HOME/emulator:$PATH' >> ~/.bashrc
      export PATH="$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$ANDROID_HOME/emulator:$PATH"
      yes | sdkmanager --licenses > /dev/null 2>&1
      sdkmanager "platform-tools" "build-tools;34.0.0" "platforms;android-34" "emulator" "system-images;android-34;google_apis;x86_64"
      echo "no" | avdmanager create avd -n devin -k "system-images;android-34;google_apis;x86_64" --device "pixel_6"

maintenance: |
  ./gradlew :androidApp:assembleDebug

knowledge:
  - name: build
    contents: ./gradlew :androidApp:assembleDebug
  - name: test
    contents: ./gradlew allTests
  - name: lint
    contents: ./gradlew detekt
  - name: emulator
    contents: |
      Start the emulator: emulator -avd devin -no-window -no-audio -gpu swiftshader_indirect &
      Wait for boot: adb wait-for-device && adb shell getprop sys.boot_completed
      Install APK: adb install androidApp/build/outputs/apk/debug/androidApp-debug.apk

トラブルシューティング

エミュレータが起動しない

主な原因: VM で KVM が利用できない、メモリが不足している、またはシステムイメージが不足している。 対処法: Devin は、エミュレータにハードウェアアクセラレーションが必要だと検出すると、KVM を自動的に設定しようとします。ほとんどの場合、これで手動対応なしに問題は解消します。Devin がこの設定を試みた後も KVM が利用できない場合は、エミュレータをソフトウェアレンダリングモードで起動できます。エミュレータの起動コマンドに -no-accel を追加してください。ただし、パフォーマンスは低下します。あわせて、ブループリントでエミュレータと互換性のある x86_64 システムイメージがインストールされることも確認してください。

SDKエラーでビルドに失敗する

よくある原因: SDKコンポーネントが不足している、ANDROID_HOME のパスが正しくない、または Gradle が適切なバージョンのビルドツールを見つけられないことが原因です。 対処法: ブループリントで ANDROID_HOME が正しく設定されていることを確認し、sdkmanager でプロジェクトに必要なプラットフォームのバージョンとビルドツールのバージョンをインストールしてください。プロジェクトの build.gradlecompileSdktargetSdkbuildToolsVersion を確認し、ブループリントの設定もそれに合わせてください。

エミュレータが遅い

Android エミュレータは Devin の VM 内で実行されるため、パフォーマンスはシステムイメージとレンダリングモードに左右されます。 ヒント:
  • ハードウェアアクセラレーションによるエミュレーションには、x86_64 のシステムイメージを使用します (ARM ではなく)
  • GPU パススルーを必要としないソフトウェアレンダリングには、-gpu swiftshader_indirect を使用します
  • Devin が画面表示を必要としない場合 (たとえば、adb 経由でインストルメント化テストを実行する場合) は、-no-window -no-audio を使用します
  • 画質の忠実さがそれほど重要でない場合は、より低解像度のデバイスプロファイルを検討してください

Devin がエミュレータ画面を操作できない

よくある原因: Desktop モードが有効になっていない、エミュレータのウィンドウが表示されていない、またはエミュレータがヘッドレスモードで実行されている可能性があります。 対処法: 組織の設定で Desktop モード が有効になっていることを確認してください。Devin にエミュレータを画面上で操作させる必要がある場合は、エミュレータの GUI が Devin のデスクトップに表示されるよう、-no-window フラグを付けずに起動してください。Devin に操作を依頼する前に、エミュレータが完全に起動していること (adb shell getprop sys.boot_completed1 を返すこと) を確認してください。