기본적으로 Android 스튜디오는 APK에서 Kotlin 코드 또는 Java 코드를 추출하고 SMALI 파일로 저장합니다. 중단점을 사용하여 Kotlin 코드 또는 Java 코드를 디버그하려면 디버그할 SMALI 파일에 해당하는 Kotlin 또는 Java 소스 파일로 IDE를 가리켜야 합니다.
Kotlin 또는 Java 소스를 연결하려면 다음 단계를 진행하세요.
Android 뷰의 Project 창에서 SMALI 파일을 더블클릭합니다.
파일을 열면 Kotlin 또는 Java 소스를 선택하라는 배너가 편집기에 표시됩니다.
편집기 창의 배너에서 Attach Kotlin/Java Sources...를 클릭합니다.
앱의 Kotlin 또는 Java 소스 파일이 있는 디렉터리로 이동한 다음 Open을 클릭합니다.
Project 창에서 Android 스튜디오가 SMALI 파일을 해당하는 Kotlin 또는 Java 소스 파일로 바꿉니다. Android 스튜디오에는 내부 클래스도 자동으로 포함됩니다. 이제 중단점을 추가하고 앱을 디버그할 수 있습니다.
네이티브 디버그 기호 연결하기
APK에 디버그 기호를 포함하지 않는 네이티브 라이브러리(SO 파일)가 포함된 경우 그림 1에 나온 것처럼 Android 스튜디오가 배너를 표시합니다. 디버그 가능한 네이티브 라이브러리를 연결해야만 APK의 네이티브 코드를 디버그하거나 중단점을 사용할 수 있습니다.
Android 뷰의 Project 창에 있는 cpp 디렉터리 아래에서 디버그 기호가 포함되지 않은 네이티브 라이브러리 파일을 더블클릭합니다.
APK가 지원하는 모든 ABI가 편집기에 테이블로 나타납니다.
편집기 창 오른쪽 상단에서 Add를 클릭합니다.
연결하려는 디버그 가능한 네이티브 라이브러리가 포함된 디렉터리로 이동하여 OK를 클릭합니다.
APK와 디버그 가능한 네이티브 라이브러리가 서로 다른 워크스테이션을 사용하여 빌드된 경우 다음 단계에 따라 디버그 기호의 로컬 경로도 지정해야 합니다.
누락된 디버그 기호의 로컬 경로를 추가하려면 편집기 창의 Path Mappings 섹션에 있는 Local Paths 열 아래의 필드를 수정합니다(그림 2 참고).
대부분의 경우 루트 폴더 경로를 제공하기만 하면 됩니다. 그러면 Android 스튜디오가 자동으로 하위 디렉터리를 검사하여 추가 소스를 매핑합니다. 또한 Android 스튜디오는 자동으로 원격 NDK 경로를 로컬 NDK 다운로드에 매핑합니다.
편집기 창의 Path Mappings 섹션에 있는 Apply Changes를 클릭합니다.
그림 2. 디버그 기호 로컬 경로
네이티브 소스 파일이 Project 창에 나타납니다. 네이티브 소스 파일을 열고 중단점을 추가하고 앱을 디버그합니다. 매핑을 삭제하려면 편집기 창의 Path Mappings 섹션에서 Clear를 클릭합니다.
알려진 문제: 디버그 기호를 APK에 연결할 때 APK와 디버그 가능한 SO 파일은 모두 동일한 워크스테이션이나 빌드 서버를 사용하여 빌드해야 합니다.
Android 스튜디오 3.6 이상에서는 APK를 IDE 외부에서 업데이트할 때 새 프로젝트를 만들 필요가 없습니다. Android 스튜디오에서는 APK의 변경사항을 감지하고 다시 가져올 수 있는 옵션을 제공합니다.
그림 3. 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,["# Debug pre-built APKs\n\nAndroid Studio 3.0 and higher lets you profile and debug APKs that have\n[debugging enabled](/studio/debug#enable-debug) without having\nto build them from an Android Studio project.\n\nTo start debugging an APK, follow these steps:\n\n1. From the Android Studio Welcome screen, click **Profile or debug APK**.\n\n If you already have a project open, click\n **File \\\u003e Profile or Debug APK** from the menu bar.\n2. In the dialog that opens,\n select the APK you want to import into Android Studio.\n\n3. Click **OK**.\n\nIf this option does not show up, make sure you have the \"Android APK Support\" plugin enabled.\n\nAndroid Studio then displays the unpacked APK files, similar to figure 1.\nThis is not a fully decompiled set of files, but it does provide SMALI\nfiles for a more readable version of the DEX files.\n\n**Figure 1.** Importing a pre-built APK into Android\nStudio.\n| **Note:** When you import an APK into Android Studio, the IDE creates a new project in your home directory under `ApkProjects/` and makes a local copy of the target APK there. The SMALI files are stored in the `smali/out/` folder within the new project folder.\n\nThe **Android** view in the Project pane lets you inspect the following\ncontents of your APK:\n\n- **APK file:** Double-click the APK to open the APK analyzer.\n- **manifests:** Contains the app manifests that are extracted from the APK.\n- **java:** Contains Kotlin or Java code that Android Studio disassembles (into SMALI files) from your APK's DEX files. Each SMALI file in this directory corresponds to a Kotlin or Java class.\n- **cpp:** If your app includes native code, this directory contains your APK's native libraries (SO files).\n- **External Libraries:** Contains the Android SDK.\n\nYou can\n[use the Android profiler](/studio/profile/android-profiler) to start\ntesting your app's performance.\n\nTo debug your app's Kotlin or Java code, you need to\n[attach the Kotlin or Java sources](#attach_java) and add breakpoints in the\nKotlin or Java source files. Similarly, to debug your native code, you must\n[attach the native debug symbols](#attach_native).\n\nAttach Kotlin or Java sources\n-----------------------------\n\nBy default, Android Studio extracts Kotlin or Java code from your APK and\nsaves it as SMALI files. To debug the Kotlin or Java code using\nbreakpoints, you need to point the IDE to the Kotlin or Java source files\nthat correspond to the SMALI files you want to debug.\n\nTo attach Kotlin or Java sources, proceed as follows:\n\n1. Double click on a SMALI file from the **Project** pane in the **Android** view. After opening the file, the editor displays a banner asking you to select the Kotlin or Java sources:\n2. Click **Attach Kotlin/Java Sources...** from the banner in the editor window.\n3. Navigate to the directory with the app's Kotlin or Java source files and click **Open**.\n\nIn the **Project** window, Android Studio replaces SMALI files with their\ncorresponding Kotlin or Java source files. Android Studio also includes inner\nclasses automatically. You can now add breakpoints and\n[debug your app](/studio/debug).\n\nAttach native debug symbols\n---------------------------\n\nIf your APK includes native libraries (SO files) that don't include debug\nsymbols, Android Studio shows you a banner, similar to\nthe one shown in figure 1. You can't debug the APK's native code or use\nbreakpoints without attaching debuggable native libraries.\n\nTo attach debuggable native libraries, proceed as follows:\n\n1. If you haven't already done so, [download the NDK and tools](/ndk/guides#download-ndk).\n2. In **Android** view, under the **cpp** directory in\n the **Project** window, double-click a native\n library file that doesn't include debug symbols.\n\n The editor shows a\n table of all the ABIs your APK supports.\n3. Click **Add** in the top-right corner of the editor window.\n\n4. Navigate to the directory that includes the debuggable native libraries\n you want to attach and click **OK**.\n\nIf the APK and debuggable native libraries were built using a different\nworkstation, you need to also specify paths to the local debug symbols by\nfollowing these steps:\n\n1. Add local paths to missing debug symbols by editing the field under the\n **Local Paths** column in the **Path Mappings** section of the editor\n window, shown in figure 2.\n\n In most cases, you need only provide the\n path to a root folder, and Android Studio automatically inspects\n subdirectories to map additional sources. Android Studio also\n automatically maps paths to a remote NDK to your local NDK download.\n2. Click **Apply Changes** in the **Path Mappings** section of the editor\n window.\n\n\n**Figure 2.** Local paths to debug\nsymbols.\n\n\u003cbr /\u003e\n\nThe native source files appear in the **Project** window. Open\nthose native source files to add breakpoints and\n[debug your app](/studio/debug). To\nremove the mappings, click **Clear** in the **Path Mappings** section of\nthe editor window.\n\n\n**Known issue:** When attaching debug symbols to an APK, both the APK and\ndebuggable SO files must be built using the same workstation\nor build server.\n\nIn Android Studio 3.6 and higher, you don't need to create a new project\nwhen the APK is updated outside the IDE. Android Studio detects changes in\nthe APK and gives you the option to re-import it.\n\n**Figure 3.** APKs updated\noutside Android Studio can be re-imported.\n\n\u003cbr /\u003e"]]