권장사항

Android 스튜디오의 에이전트는 코딩 공동작업자 역할을 하며 코드를 생성하고, 복잡한 주제를 요약하고, 특정 리소스를 찾는 등의 작업을 통해 개발 워크플로를 가속화합니다. 효과적인 커뮤니케이션은 에이전트의 잠재력을 최대한 활용하는 데 핵심적인 역할을 합니다.

이 가이드에서는 개발 환경을 설정하고 유용하고 신뢰할 수 있는 대답을 생성하는 프롬프트를 작성하는 전략을 간략하게 설명합니다. 여러 전략의 경우 다양한 사용 사례에 대한 프롬프트 예시를 제공했습니다. 더 많은 프롬프트 예시는 프롬프트 갤러리를 참조하세요.

구체적으로 설명

에이전트는 명확하고 구체적인 요청 사항이 있을 때 가장 잘 작동합니다. 사용하려는 특정 라이브러리, API 또는 접근 방식이 있는 경우 질문에 포함하거나 프로젝트의 루트 AGENTS.md 파일에 포함하여 상호작용 전반에서 유지합니다. 버그 신고를 제출한다고 생각하면 됩니다. 더 많은 정보를 제공할수록 문제를 더 빠르고 효과적으로 해결할 수 있습니다.

새로운 기능 구현:

CameraX를 사용하여 앱에 카메라 지원을 추가하려면 어떻게 해야 하나요? 라이브러리를 사용하는 데 필요한 종속 항목과 권한을 포함해야 합니다.
앱에 카메라 지원을 추가하려면 어떻게 해야 하나요?

코드 생성:

Coil 라이브러리를 사용하여 지정된 URL 문자열에서 이미지를 다운로드하는 Kotlin 정지 함수를 작성합니다.

함수 이름은 fetchImageAsBitmap이어야 합니다. Context 및 String URL을 인수로 사용하고 null을 허용하는 Bitmap를 반환해야 합니다. 네트워크 또는 디코딩 오류가 있는 경우 예외를 포착하고 기록한 후 null를 반환해야 합니다.

이미지를 다운로드하는 함수를 작성합니다.

개념 설명:

음악 플레이어 앱을 빌드하고 있으며 앱이 백그라운드에 있을 때 재생을 계속해야 합니다.

사용자가 기기에서 다른 작업을 하는 동안 앱을 계속 실행하려면 어떻게 해야 하나요? 각 접근 방식의 API 수준 요구사항과 배터리 수명에 미치는 영향은 무엇인가요?

Android 서비스를 설명합니다.

답변의 구조 설명

기본적으로 에이전트는 대화형 단락 기반 형식으로 답변을 제공합니다. 이러한 방식은 설명에 유용한 경우가 많지만, 대답을 구성하는 방법을 알려주면 더 효과적이고 즉시 사용할 수 있는 결과를 얻을 수 있습니다. 출력 형식을 지정하면 모델이 명확하고 예측 가능한 방식으로 정보를 구성하므로 직접 형식을 다시 지정하는 시간을 절약할 수 있습니다.

에이전트가 생성한 코드를 앱에 삽입하고 싶고 즉시 사용할 수 있도록 특정 형식의 코드가 필요한 경우 에이전트에게 코드 생성 및 형식 지정에 관한 명확한 안내를 제공하세요.

대답 구성:

사용자 프로필의 Room 항목을 만듭니다. id, userName, email, memberSince 필드가 포함되어야 합니다. id 필드는 자동으로 생성되어야 합니다. memberSince 필드는 타임스탬프를 나타내야 합니다.

사용자 프로필의 Room 항목을 만듭니다.

개방형 질문을 하는 경우 x개의 옵션을 요청하세요.

대답 제한:

앱 성능 최적화에 사용할 수 있는 도구는 무엇인가요? 상위 3개 목록을 알려 줘.
앱 성능 최적화에 사용할 수 있는 도구는 무엇인가요?

복잡한 요청은 여러 단계로 나누어 요청하세요.

에이전트의 접근 방식이 예상과 다른 경우 한 번에 모든 것을 요청하는 대신 일련의 더 작은 순차적 프롬프트를 통해 에이전트를 안내하는 것이 도움이 될 수 있습니다. 이 방법을 사용하면 더 세부적으로 제어할 수 있으며 다음 단계로 진행하기 전에 각 단계를 확인할 수 있습니다.

순차적 프롬프트 적용:

프롬프트 1: 데이터 모델
먼저 User라는 Kotlin 데이터 클래스를 만듭니다. id(Int), name(String), email(String)의 세 가지 속성이 있어야 합니다.

프롬프트 2: 네트워크 계층
이제 ApiService라는 Retrofit API 인터페이스를 만듭니다. List<User>를 반환하는 getUsers()라는 단일 suspend fun가 필요합니다.

프롬프트 3: 상태 관리
다음으로, ApiService를 종속 항목으로 사용하는 UsersViewModel를 작성합니다. UsersViewModel는 Loading, Success(users: List) 및 Error(message: String) 상태를 나타낼 수 있는 봉인된 UiState 클래스의 StateFlow를 노출해야 합니다. ViewModel에서 사용자를 가져오고 상태를 업데이트하는 함수를 만듭니다. 새 기능에 대한 단위 테스트를 작성합니다.

프롬프트 4: UI 레이어
마지막으로 UiState를 매개변수로 허용하는 UserListScreen라는 Jetpack Compose 함수를 작성합니다. when 문을 사용하여 로드 상태의 CircularProgressIndicator, 성공 상태의 사용자 이름 LazyColumn, 오류 상태의 오류 메시지가 포함된 Text 요소를 표시합니다. 새 기능을 확인하는 테스트를 추가합니다.

JSON API에서 사용자 목록을 가져와 목록에 표시하는 Jetpack Compose 화면을 만듭니다. Retrofit과 코루틴을 사용하는 ViewModel, 데이터 로직을 처리하는 저장소, User 데이터 클래스가 있어야 하며 로드 및 오류 상태를 표시해야 합니다.

컨텍스트 관리

에이전트와 작업하는 데 있어 중요한 부분은 올바른 컨텍스트를 제공하는 것입니다. 가장 유용한 대답을 얻으려면 관련 코드 스니펫, 파일 콘텐츠, 프로젝트 구조 정보를 제공하세요. 적절한 균형을 맞추기 위해 반복해야 할 수 있습니다. 정보가 너무 많으면 에이전트가 잘못된 방향으로 갈 수 있고, 너무 적으면 에이전트가 도움을 줄 수 있는 충분한 컨텍스트를 제공하지 못합니다. 사용 가능한 기능을 사용하여 에이전트에게 필요한 컨텍스트에 대한 액세스 권한을 부여합니다.

  • 이미지를 첨부하여 구상 중인 UI 또는 이해하려는 앱 아키텍처를 시각적으로 보여줍니다.
  • 파일을 첨부하여 코드베이스의 관련 부분을 강조 표시합니다.
  • .aiexclude 파일을 사용하여 에이전트가 코드베이스의 특정 부분을 무시하도록 합니다.
  • AGENTS.md 파일을 사용하여 프로젝트별 지침을 제공하고 팀 전체에 공유합니다. AGENTS.md 파일을 사용할 때는 마크다운 헤더와 서식을 사용하여 요청 사항을 명확하게 작성하세요.
  • 에이전트 모드를 사용할 때는 MCP 서버를 구성하여 외부 환경에서 에이전트의 지식과 기능을 확장합니다.

설명 요청하기

에이전트의 대답을 이해하지 못하는 경우 설명을 요청합니다. 이는 제안된 솔루션이 사용 사례에 적합한지 알아보고 확인하는 좋은 방법입니다. 대답이 예상과 다른 경우 실제로 에이전트가 잘못되었을 수 있으며 설명을 요청하면 에이전트가 스스로 수정할 수 있는 기회가 제공됩니다.

요청 사항 반복하기

동료와 협업할 때와 마찬가지로 에이전트와 협업할 때도 작업과 예상 결과에 대한 명확한 이해를 위해 여러 차례 소통이 필요할 수 있습니다. 에이전트의 초기 대답이 충분하지 않으면 개선 방법에 대한 의견과 제안으로 대답합니다. 제안에 따라 대답이 개선되면 프롬프트 라이브러리의 항목을 업데이트하거나 AGENTS.md 파일을 업데이트하여 원래 프롬프트에 해당 제안을 통합합니다.