앱 크롤러
컬렉션을 사용해 정리하기
내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

Jetpack의 일부인 앱 크롤러 도구를 사용하면 코드를 작성하거나 유지할 필요 없이 자동으로 앱을 테스트할 수 있습니다.
크롤러는 앱과 함께 실행되어 앱의 상태 공간을 탐색하는 작업(탭, 스와이프 등)을 자동으로 개시합니다. 더 이상 실행할 고유 작업이 없거나 앱이 다운되거나 지정된 제한 시간에 도달하면 크롤링이 자동으로 종료됩니다.
크롤러를 사용하면 코드를 작성하거나 유지하지 않아도 되므로 간편하게 테스트할 수 있습니다.
또한 다양한 기기에서 테스트를 실행하여 비정상 종료, 시각적 문제, 성능 문제를 찾을 수도 있습니다. 일반적으로 Firebase Test Lab과 같은 클라우드 기반 서비스를 사용하여 다양한 조합의 화면 크기 및 하드웨어 구성을 더 빠르고 간편하게 테스트하는 것이 좋습니다.
타겟층
앱 크롤러는 최소 구성으로 앱의 기본 기능을 확인하려는 개발자를 타겟팅합니다. 완전 불투명 박스 테스트 외에도 로그인 사용자 인증 정보 또는 딥 링크와 같은 특정 입력을 제공하도록 크롤러를 구성할 수도 있습니다.
시작하기
시작하기 전에 최신 버전의 Android SDK가 설치되어 있는지 확인하세요.
Android SDK는 Android 스튜디오와 함께 제공됩니다.
독립형 Android SDK를 설치했다면 최신 빌드 도구 및 플랫폼 도구가 포함되어 있는지 확인하세요.
그런 다음 크롤러 바이너리 보관 파일을 다운로드합니다.
다운로드가 끝나면 에뮬레이터를 시작하거나 USB 케이블을 사용하여 실제 기기를 연결하세요.
다음 명령어를 실행하여 기기가 연결되어 있는지 확인할 수 있습니다.
adb devices
크롤러를 호출하려면 먼저 보관 파일을 선택한 디렉터리에 추출하세요. 그리고 다음 명령어를 사용하여 디렉터리에서 크롤러를 호출하세요.
java -jar crawl_launcher.jar --apk-file path/to/my/app.apk --android-sdk path/to/my/android/sdk
크롤러 옵션
다음 옵션을 사용하여 크롤러를 호출할 수 있습니다.
옵션 | 설명 |
--android-sdk path
|
Android SDK의 경로를 지정합니다.
필수 플래그입니다.
|
--apk-file file
|
앱 크롤러가 설치하고 크롤링하는 앱 APK의 경로를 지정합니다.
--app-package-name 이 지정되지 않았다면 필수 플래그입니다.
|
--app-package-name name
|
앱의 패키지 이름을 지정합니다. 앱이 기기에 이미 설치되어 있고 다시 설치할 필요가 없다면 이 옵션을 사용합니다.
--apk-file 이 지정되지 않았다면 필수 플래그입니다.
|
--key-store path
|
앱 및 크롤러 APK에 서명하는 키 저장소의 경로를 지정합니다. 앱이 제대로 작동하는 데 특정 서명이 필요하다면 이 옵션을 사용합니다.
|
--key-store-password password
|
--key-store 옵션에 제공하는 키 저장소의 비밀번호를 지정합니다.
--key-store 가 지정되었다면 필수 플래그입니다.
|
--timeout-sec timeout
|
크롤링 제한 시간(초)을 지정합니다. 지정하지 않으면 크롤링이 60초 후에 중지됩니다.
|
알려진 문제
원본 서명 파일을 삭제하지 못했습니다.
크롤링 시작 전에 JDK 9 사용자에게 다음 오류 메시지가 표시될 수 있습니다.
androidx.test.tools.crawler.launcher.exceptions.ApkSigningException: Failed to delete original signature files
이 동작이 발생하면 JDK 8 또는 10 이상을 사용하는 것이 좋습니다. 문제에 관한 자세한 내용은 JDK 9 버그를 참고하세요.
일부 사용자는 업데이트된 버전의 Android 스튜디오를 통해 APK를 다시 빌드하여 문제를 수정했습니다.
추가 리소스
앱 크롤러 사용에 관한 자세한 내용은 다음 리소스를 참고하세요.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2025-07-27(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-07-27(UTC)"],[],[],null,["# App Crawler\n\nUse the App Crawler tool, part of [Jetpack](/jetpack), to automatically test\nyour app without the need to write or maintain any code.\n\nThe crawler runs alongside your app, automatically issuing actions\n(tap, swipe, etc.) to explore the state-space of your app.\nThe crawl terminates automatically when there are no more unique actions to\nperform, the app crashes, or a timeout you designate is reached.\n\nTesting with the crawler is easy because there's no code to write or maintain.\nMoreover, you can run it on a variety of devices to look for crashes, visual\nissues, or performance problems. Typically, it's a good idea to use a\ncloud-based service like [Firebase Test\nLab](https://firebase.google.com/docs/test-lab/) to test multiple combinations\nof screen sizes and hardware configurations more easily and quickly.\n\nTarget audience\n---------------\n\nApp Crawler is targeted at developers who want to ensure their app's basic\nfunctionality with minimal configuration. In addition to purely opaque-box\ntesting, the crawler can also be configured to provide specific inputs,\nsuch as login credentials or deep links.\n\nGetting started\n---------------\n\nBefore starting, make sure you have a recent version of the Android SDK.\nThis comes with [Android Studio](/studio).\nIf you install a standalone Android SDK, make sure it includes the latest\nlatest build tools and platform tools.\n\nThen, [download the crawler binary\narchive](https://dl.google.com/appcrawler/beta1/app-crawler.zip).\n\nNext, either start an emulator or connect a physical device using a USB cable.\nConfirm the device is connected by running the following command: \n\n```\nadb devices\n```\n\nTo invoke the crawler, first extract the archive to the directory of your\nchoice. From that directory, invoke the crawler using the following command: \n\n```\njava -jar crawl_launcher.jar --apk-file path/to/my/app.apk --android-sdk path/to/my/android/sdk\n```\n\nCrawler options\n---------------\n\nYou can use the following options to invoke the crawler:\n\n| Option | Description |\n|-----------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `--android-sdk `\u003cvar translate=\"no\"\u003epath\u003c/var\u003e | Specifies the path to your Android SDK. This is a **required** flag. |\n| `--apk-file `\u003cvar translate=\"no\"\u003efile\u003c/var\u003e | Specifies the path to your app APK, which App Crawler then installs and crawls. This is a **required** flag if `--app-package-name` isn't specified. |\n| `--app-package-name `\u003cvar translate=\"no\"\u003ename\u003c/var\u003e | Specifies the package name of your app. Use this option when your app is already installed on the device and no re-installation is required. This is a **required** flag if `--apk-file` isn't specified. |\n| `--key-store `\u003cvar translate=\"no\"\u003epath\u003c/var\u003e | Specifies the path to the keystore that signs your app and crawler APKs. Use this option when your app requires a specific signature to function properly. |\n| `--key-store-password `\u003cvar translate=\"no\"\u003epassword\u003c/var\u003e | Specifies the password for the keystore you provided for `--key-store` option. This is a **required** flag if `--key-store` is specified. |\n| `--timeout-sec `\u003cvar translate=\"no\"\u003etimeout\u003c/var\u003e | Specifies the timeout for your crawl in seconds. If not specified, the crawl stops after 60 seconds. |\n\nKnown issues\n------------\n\n**Failed to delete original signature files**\n\nPrior to the start of the crawl, JDK 9 users may see this error message: \n\n```\nandroidx.test.tools.crawler.launcher.exceptions.ApkSigningException: Failed to delete original signature files\n```\n\nIf you experience this behavior, we recommend using JDK 8 or 10+. For more\ninformation on this issue, see this\n[JDK 9 bug](https://bugs.openjdk.java.net/browse/JDK-8184940).\nSome users have fixed the issue by rebuilding their APK using an updated version\nof Android Studio.\n\nAdditional resources\n--------------------\n\nFor more information about using App Crawler, consult the\nfollowing resources.\n\n- [Firebase Test Lab Robo Test](https://firebase.google.com/docs/test-lab/android/robo-ux-test) contains detailed documentation as well as instructions for how to run crawler tests in the cloud."]]