AI 솔루션이 포함된 Android

생성형 AI로 Android 앱 성능 강화

이 학습 과정에서는 Google 기술을 사용하여 더 적은 노력으로 더 매력적인 Android 애플리케이션을 빌드하는 방법을 알아봅니다. 다음 섹션에서는 Android 개발자로서 현재 작업하고 있을 수 있는 앱 유형을 대신하는 가상의 식사 준비 앱을 빌드하고 개선합니다.

Android 스튜디오에서 Gemini를 사용하여 더 빠르게 학습하고 개발하는 방법, Firebase를 사용하여 앱의 스토리지 레이어와 로그인을 빌드하는 방법, Gemini를 사용하여 최신 생성형 AI 기능을 애플리케이션에 빌드하는 방법, Firebase 원격 구성, Google 애널리틱스, Crashlytics와 같은 도구를 사용하여 프로덕션에서 앱을 지원하는 방법을 알아봅니다.

Android 스튜디오의 Gemini로 Android 개발 속도 높이기

AI 기반 코딩 어시스턴트인 Android 스튜디오의 Gemini를 사용하면 Android 애플리케이션을 그 어느 때보다 쉽게 빌드할 수 있습니다.

Android 스튜디오의 Gemini는 매일 사용하는 IDE에 AI를 직접 통합하여 전체 소프트웨어 개발 수명 주기 전반에서 개발자를 지원하여 고품질 Android 앱을 더 쉽고 빠르게 빌드할 수 있도록 설계되었습니다. 즉, 새로운 개념을 더 빠르게 학습하고, 프로토타입을 쉽게 제작하고, 애플리케이션에서 중요한 부분에 더 많은 시간을 할애할 수 있습니다.

Android 앱을 시작할 때 Android 스튜디오의 Gemini가 어떻게 개발 여정을 가속화할 수 있는지 알아보세요.
Android 또는 특정 Android 개발 영역을 처음 접하는 경우 Android 스튜디오의 Gemini가 유용한 학습 도구가 될 수 있습니다.

  • 질문에 대한 즉각적인 답변 받기: Android 스튜디오의 채팅 창에서 바로 Gemini에게 기본적인 Android 개념, 특정 API 또는 권장사항에 관해 질문할 수 있습니다. 예를 들어 "어두운 테마가 뭐야?" 또는 "Android에서 위치를 가져오는 가장 좋은 방법은 뭐야?"라고 물어볼 수 있습니다.
  • 코드 예시 및 안내 받기: Gemini는 코드 스니펫을 생성하고 카메라 지원 추가 또는 Room 데이터베이스 만들기와 같은 다양한 기능 구현에 관한 안내를 제공할 수 있습니다. Kotlin 또는 특히 Jetpack Compose용 코드를 요청할 수도 있습니다.
  • 오류 이해 및 해결 방법 찾기: 빌드 또는 동기화 오류가 발생하면 Gemini에 오류에 대한 설명과 해결 방법을 요청할 수 있습니다. Gemini는 App Quality Insights의 비정상 종료 보고서를 분석하여 요약을 제공하고 다음 단계를 추천하는 데도 도움이 됩니다.
예를 들어 가상의 식사 준비 앱의 경우 Gemini에게 레시피 카드를 표시하는 새로운 Compose 레이아웃의 프로토타입을 만드는 데 도움을 요청할 수 있습니다. Gemini의 멀티모달 기능을 사용하면 와이어프레임 모의 샘플을 제공하고 Gemini에게 UI의 코드를 스케치하도록 요청하기만 하면 됩니다.
Android 스튜디오의 Gemini 개별 버전은 미리보기 기간 동안 무료로 제공됩니다.

그러나 개인 정보 보호 및 관리 요구사항이 더 엄격한 대규모 팀 환경에서 개발하는 경우 비즈니스용 스튜디오의 Gemini를 사용하면 향상된 개인 정보 보호, 보안, 코드 맞춤설정 기능을 비롯한 추가적인 유용한 이점을 누릴 수 있으며, Google Cloud 크레딧과 함께 사용할 수 있습니다.

이러한 도구는 Gemini Code Assist와 함께 사용하면 팀이 AI의 힘을 확실하게 활용하여 중요한 개인 정보 보호, 보안, 관리 요구사항을 해결할 수 있습니다.

앱을 위한 Firebase 구성요소

클라우드 스토리지, 사용자 인증, 비정상 종료 보고와 같은 애플리케이션 개발의 일반적인 기능은 앱을 개발하고 운영할 때 필요한 구성요소입니다.

Firebase는 이러한 필수 구성요소를 제공하여 Android 앱 개발 프로세스를 간소화하므로 자체 백엔드를 구현할 필요가 없습니다.
예를 들어 레시피 준비 앱을 빌드하는 경우 사용자가 휴대전화를 전환하는 경우와 같이 기기 외부에 레시피, 식단, 재료 목록을 유지해야 합니다. 이 데이터는 Cloud Firestore에 유지할 수 있습니다.

Cloud Firestore는 Firebase 및 Google Cloud에서 제공하는 확장 가능한 NoSQL 클라우드 데이터베이스입니다. 실시간 리스너를 통해 클라이언트 앱 간에 실시간 데이터 동기화를 지원하고 모바일 및 웹에 대한 오프라인 지원을 제공하므로 네트워크 가용성과 관계없이 반응형 앱 성능을 보장할 수 있습니다. Cloud Functions를 비롯한 다른 Firebase 및 Google Cloud 제품과 원활하게 통합됩니다.

기기를 전환하는 사용자가 자신의 데이터에 액세스할 수 있도록 하고 다른 사용자가 데이터에 액세스할 수 없도록 하려면 사용자 인증이 필수적입니다.

Firebase 인증은 Android 앱에 사용자 인증을 추가하는 프로세스를 간소화하는 강력한 도구입니다. 이메일/비밀번호 로그인, 전화번호 인증, Google, Facebook, 트위터와 같은 인기 제휴 ID 공급업체와의 통합 등 다양한 인증 방법을 지원하는 기성 UI 라이브러리가 포함된 백엔드 서비스와 SDK를 제공합니다.
오류와 비정상 종료를 모니터링하는 것은 앱의 안정성과 성공을 보장하는 데 필수적입니다. 비정상 종료되는 앱은 사용자의 불만을 야기하고 제거되기 때문입니다.

Firebase Crashlytics는 앱 품질을 저하시키는 안정성 문제를 추적하고 우선순위를 지정하고 해결하는 데 도움이 되는 실시간 비정상 종료 보고 도구입니다. 비정상 종료를 지능적으로 그룹화하고 이러한 비정상 종료를 유발하는 상황을 강조하여 보여주므로 문제 해결 시간이 절약됩니다.

Cloud Firestore와 Firebase 인증 모두 넉넉한 무료 등급을 제공합니다. 하지만 앱에 이러한 서비스의 할당량 또는 고급 기능이 더 필요한 경우 유료 요금제를 사용해야 합니다. 하지만 걱정하지 마세요. Cloud 크레딧을 사용하여 이러한 비용을 충당할 수 있습니다. Crashlytics는 사용량과 관계없이 무료로 제공됩니다.

Firebase에서 제공하는 다른 솔루션에 대해 자세히 알아보려면 Firebase 웹사이트를 참고하세요.
scope.launch {
  val response = model.generateContent(
    "Create a shopping list with $cuisineStyle ingredients")
}
레시피 앱의 예를 들어 보면 Gemini 2.0 Flash는 특정 요리 스타일로 식사를 준비하기 위한 재료의 쇼핑 목록을 만들 수 있습니다. 앱에서 쉽게 파싱하여 UI로 렌더링할 수 있는 JSON 문자열을 생성하도록 모델에 요청할 수도 있습니다. 목록을 생성하려면 텍스트 프롬프트와 함께 `generateContent()` 함수를 호출하면 됩니다.

자세한 내용은 Android 개발자 가이드를 참고하세요.

Android의 생성형 AI

식사 준비 Android 애플리케이션 내에 생성형 AI를 통합하는 방법에는 여러 가지가 있습니다. 다음은 각 옵션에 대한 간략한 개요입니다.
Gemini Nano는 온디바이스 실행에 최적화된 Gemini 제품군의 모델입니다. AICore를 통해 Android OS에 직접 통합됩니다. 이를 사용하면 네트워크에 연결하거나 데이터를 클라우드로 전송하지 않고도 생성형 AI 환경을 제공할 수 있습니다.

온디바이스 AI는 낮은 지연 시간, 낮은 비용, 개인 정보 보호가 주요 관심사인 사용 사례에 적합한 옵션입니다. 예를 들어 식사 예약 앱에서 Gemini Nano를 사용하여 다양한 음식과 사용자의 식사 기록을 기반으로 식사 아이디어를 제안할 수 있습니다.

Android 문서에서 Gemini Nano의 기술 아키텍처에 대해 자세히 알아볼 수 있습니다.

자체 애플리케이션에서 Gemini Nano를 실험하려면 아래의 실험용 Google AI Edge SDK 단계를 사용하여 온디바이스 Gemini Nano를 검토하세요.
클라우드에서 실행되도록 최적화된 생성형 AI 모델은 일반적으로 기기 내 AI 모델보다 성능이 우수합니다.

Android 개발자는 Firebase의 Vertex AI를 사용하여 텍스트 생성 작업에는 Gemini Pro 및 Flash 모델을, 이미지 생성 작업에는 Imagen을 사용하여 Android 앱에 생성형 AI 기능을 빠르게 구현할 수 있습니다.

Gemini Pro 및 Flash AI 모델 제품군은 멀티모달이며 다양한 작업을 처리할 수 있습니다. 이미지, 오디오, 동영상 입력을 받아 JSON, XML, CSV 형식으로 지정할 수 있는 텍스트 출력을 생성합니다. 최신 Gemini 모델은 오디오와 이미지와 같은 멀티모달 출력을 생성할 수도 있습니다.

예를 들어 식사 준비 앱에서 Gemini 모델을 사용하여 특정 유형의 요리에 필요한 재료가 포함된 쇼핑 목록을 만들 수 있습니다.

Google Cloud 크레딧을 사용하여 Gemini 모델을 호출하는 데 드는 비용을 충당할 수 있습니다.

앱에서 클라우드 호스팅 Gemini 모델을 사용하는 방법을 알아보려면 아래의 Firebase에서 Vertex AI를 통한 Gemini를 검토하세요.
Imagen 3은 Google의 최신 이미지 생성 모델입니다. Vertex AI in Firebase를 통해 Imagen에 액세스할 수 있으므로 Android 앱에 이미지 생성 기능을 빠르고 원활하게 추가할 수 있습니다.

예를 들어 식사 준비 앱에서 Imagen 3 모델을 사용하여 레시피 삽화를 생성할 수 있습니다.

Google Cloud 크레딧으로 비용을 충당할 수 있습니다.

앱에서 Imagen 3을 사용하는 방법을 알아보려면 아래의 이미지 생성을 위한 Imagen 3 단계를 참고하세요.
백엔드 통합을 통해 생성형 AI 기능을 추가할 수도 있습니다.

  • Genkit는 AI 기반 애플리케이션의 개발, 배포, 모니터링을 간소화하는 오픈소스 프레임워크입니다.
  • 고급 MLOps 요구사항을 위해 Google Cloud의 Vertex AI는 완전 관리형 서비스와 Vertex AI Model Garden을 통한 다양한 모델을 제공했습니다. Google Cloud 크레딧을 사용하여 이러한 서비스의 비용도 충당할 수 있습니다.


Gemini Nano 외에도 기기 내에서 AI 추론을 실행하려면 LiteRT 및 MediaPipe를 실험해 볼 수도 있습니다.
  • LiteRT (이전 명칭: TFLite)는 기기에서 머신러닝 모델을 직접 효율적으로 실행하도록 설계된 기기 내 AI를 위한 Google의 고성능 런타임입니다.
  • MediaPipe는 개발자가 동영상 및 오디오와 같은 멀티미디어 데이터를 실시간으로 처리하기 위한 머신러닝 파이프라인을 빌드할 수 있는 오픈소스 프레임워크입니다.


Android GenAI 제품에 관해 자세히 알아보려면 Android 문서의 AI 섹션을 참고하세요.
Google AI Edge SDK를 사용하면 Android 앱 개발자가 Gemini Nano의 온디바이스 생성형 AI 기능을 통합하고 실험하여 애플리케이션을 개선할 수 있습니다. 시작하는 방법은 다음과 같습니다.
  • 이 단계에 따라 APK 및 바이너리가 기기에 제대로 다운로드되었는지 확인합니다.
  • 그런 다음 다음 종속 항목을 추가하여 앱의 Gradle 구성을 업데이트합니다. implementation("com.google.ai.edge.aicore:aicore:0.0.1-exp01")
    최소 SDK 타겟을 31로 설정해야 합니다.
implementation("com.google.ai.edge.aicore:aicore:0.0.1-exp01")
다음으로 모델의 응답을 제어하도록 구성할 수 있습니다. 이렇게 하려면 컨텍스트를 제공하고 원하는 경우 다음 매개변수를 설정해야 합니다.

  • 온도: 무작위 수준을 제어합니다. 값이 클수록 출력의 다양성이 높아집니다.
  • Top K: 출력 생성을 위해 고려할 가장 높은 순위의 토큰 수를 지정합니다.
  • 후보 수: 반환할 최대 응답 수를 설정합니다.
  • Max Output Tokens(최대 출력 토큰): 응답의 최대 길이를 설정합니다.
val generationConfig = generationConfig {
  context = ApplicationProvider.getApplicationContext()
  temperature = 0.2f
  topK = 16
  maxOutputTokens = 256
}
선택적 downloadCallback 함수를 만듭니다. 이 콜백 함수는 모델 다운로드에 사용됩니다. 또한 디버깅 목적으로 사용할 수 있는 메시지를 반환합니다. 이전에 만든 생성 및 선택적 다운로드 구성을 사용하여 `GenerativeModel` 객체를 생성합니다.
val downloadConfig = DownloadConfig(downloadCallback)
val generativeModel = GenerativeModel(
  generationConfig = generationConfig,
  downloadConfig = downloadConfig // optional
)
마지막으로 프롬프트를 모델에 전달하여 추론을 실행합니다. GenerativeModel.generateContent()는 정지 함수이므로 적절한 코루틴 범위 내에 있어야 합니다.

식단 준비 애플리케이션의 예시 맥락에서 Gemini Nano는 식단 기록과 다른 다양한 음식 유형과 음식을 제안하여 식단에 대한 아이디어를 제공할 수 있습니다.
scope.launch {
  val input = "Suggest different types of cuisines and easy to cook dishes that are not $recentMealList"
  val response = generativeModel.generateContent(input)
  print(response.text)
}
Gemini Nano 모델의 최대 입력 토큰 한도는 12,000개입니다. Gemini Nano 실험용 액세스에 대해 자세히 알아보려면 Android 문서의 Gemini Nano 섹션으로 이동하세요.

Firebase의 Vertex AI를 통한 Gemini

Firebase에서 Vertex AI를 활용하면 Firebase 생태계를 원활하게 배포하고 관리하면서 Gemini Cloud 모델을 사용하여 생성형 AI 기반 기능을 빌드할 수 있습니다.

dependencies {
...
// Import the BoM for the Firebase platform
implementation(platform("com.google.firebase:firebase-bom:"))

// Add the dependency for the Vertex AI in Firebase library
// When using the BoM, you don't specify versions in Firebase
// library dependencies
implementation("com.google.firebase:firebase-vertexai")
}
Vertex AI Studio에서 프롬프트를 실험하여 시작해 보세요. 프롬프트 설계 및 프로토타입 제작을 위한 대화형 인터페이스입니다. 파일을 업로드하여 텍스트와 이미지로 프롬프트를 테스트하고 프롬프트를 저장하여 나중에 다시 살펴볼 수 있습니다.

앱에서 Gemini API를 호출할 준비가 되면 Firebase의 Vertex AI 시작 가이드의 안내에 따라 Firebase와 SDK를 설정합니다.

그런 다음 프로젝트에 Gradle 종속 항목을 추가합니다.

val generativeModel = Firebase.vertexAI
  .generativeModel(
  "gemini-2.0-flash",
  generationConfig = generationConfig {
        responseMimeType = "application/json"
        responseSchema = jsonSchema
  }
    )
이제 Kotlin 코드에서 Gemini API를 호출할 수 있습니다. 먼저 Vertex AI 서비스를 초기화하고 `GenerativeModel` 인스턴스를 만듭니다.
scope.launch {
  val response = model.generateContent("
    Create a shopping list with $cuisineStyle ingredients")
}
레시피 앱의 예를 들어 보면 Gemini 2.0 Flash는 특정 요리 스타일로 식사를 준비하기 위한 재료의 쇼핑 목록을 만들 수 있습니다. 앱에서 쉽게 파싱하여 UI로 렌더링할 수 있는 JSON 문자열을 생성하도록 모델에 요청할 수도 있습니다. 목록을 생성하려면 텍스트 프롬프트와 함께 `generateContent()` 함수를 호출하면 됩니다.

자세한 내용은 Android 개발자 가이드를 참고하세요.

이미지 생성을 위한 Imagen 3

Imagen 3은 Firebase의 Vertex AI를 통해 액세스할 수 있으므로 이미지 생성을 Android 앱에 원활하게 통합할 수 있습니다. Google의 가장 진보된 이미지 생성 모델인 Imagen 3은 놀라운 디테일, 최소한의 아티팩트, 사실적인 조명 효과를 갖춘 고품질 이미지를 생성하여 이미지 생성의 새로운 기준을 제시합니다.

예를 들어 Imagen 3을 사용하면 사용자가 자신의 프로필 아바타를 생성하거나 기존 화면 흐름을 보여주는 애셋을 만들 수 있습니다. 식사 준비 앱의 예를 들어 Imagen 3을 사용하여 레시피 화면의 이미지를 생성할 수 있습니다.

Imagen 3에서 다음과 같은 프롬프트를 사용하여 생성한 이미지: 지중해식 요리를 위한 아름다운 재료가 놓인 주방 카운터 상단의 개요를 보여주는 만화 스타일의 일러스트레이션
dependencies {
    implementation(platform("com.google.firebase:firebase-bom:33.10.0"))

    implementation("com.google.firebase:firebase-vertexai")
}
Imagen 3을 통합하는 방법은 Firebase에서 Vertex AI를 통해 Gemini 모델에 액세스하는 것과 유사합니다.

먼저 Android 프로젝트에 Gradle 종속 항목을 추가합니다.
val imageModel = Firebase.vertexAI.imagenModel(
modelName = "imagen-3.0-generate-001",
generationConfig = ImagenGenerationConfig(
  imageFormat = ImagenImageFormat.jpeg(compresssionQuality = 75),
  addWatermark = true,
  numberOfImages = 1,
  aspectRatio = ImagenAspectRatio.SQUARE_1x1
)
그런 다음 Kotlin 코드에서 모델 이름과 선택적으로 모델 구성을 전달하여 `ImageModel` 인스턴스를 만듭니다.
val imageResponse = imageModel.generateImages(
prompt = "A cartoon style illustration of a top overview of a kitchen countertop
  with beautiful ingredients for a $cuisineStyle meal."
)
마지막으로 텍스트 프롬프트와 함께 `generateImages()` 를 호출하여 이미지를 생성합니다.
val image = imageResponse.images.first()
val uiImage = image.asBitmap()
`imageResponse` 에서 생성된 이미지를 가져와 비트맵으로 표시합니다.
Imagen 3 사용에 관한 자세한 내용은 Android 개발자 블로그Android 개발자 문서를 참고하세요.

Firebase로 프로덕션 준비하기

앱에 genAI 기능을 구현했다면 앱을 프로덕션에 배포하기 전에 다음과 같은 중요한 다음 단계를 진행하세요. 또한 사용자 개인 정보 보호 및 책임감 있는 AI 사용을 염두에 두고 잠재적인 예기치 않은 모델 동작에 관해 사용자에게 투명하게 설명해야 합니다. 다음 블로그 게시물에서 Firebase의 Vertex AI를 프로덕션에 적용하는 방법을 자세히 알아보세요.