라이선스 설정

애플리케이션에 라이선스 확인을 추가하기 전에 Google Play 게시 계정, 개발 환경, 구현 확인에 필요한 테스트 계정을 설정해야 합니다.

게시자 계정 설정

Google Play 게시자 계정이 아직 없는 경우 Google 계정을 사용하여 등록하고 Google Play 서비스 약관에 동의해야 합니다.

자세한 내용은 게시 시작하기를 참조하세요.

Google Play 게시자 계정이 이미 있다면 Play Console을 사용하여 라이선스를 설정하세요.

Google Play Console을 사용하면 다음을 실행할 수 있습니다.

  • 라이선스를 위한 앱별 공개 키 가져오기
  • 애플리케이션을 게시하기 전에 애플리케이션의 라이선스 구현 디버그 및 테스트
  • 라이선스 지원을 추가한 애플리케이션 게시

라이선스를 위한 관리 기능 설정

Play Console에서 Google Play 라이선스를 위한 여러 관리자 컨트롤을 관리할 수 있습니다. 이 컨트롤을 사용하면 다음을 실행할 수 있습니다.

  • 이메일 주소로 식별되는 여러 '테스트 계정' 설정. 라이선스 서버를 사용하면 기기 또는 에뮬레이터에서 테스트 계정에 로그인한 사용자가 라이선스 확인을 전송하고 정적 테스트 응답을 수신할 수 있습니다. Play Console의 계정 세부정보 페이지에서 계정을 설정할 수 있습니다.
  • 서버가 게시자 계정에 업로드된 애플리케이션의 라이선스 확인을 게시자 계정 또는 테스트 계정으로 로그인한 사용자로부터 수신할 때 서버에서 전송하는 정적 테스트 응답 구성. Play Console의 계정 세부정보 페이지에서 테스트 응답을 설정할 수 있습니다.
  • 라이선스를 위한 앱의 공개 키 가져오기. 애플리케이션에서 라이선스를 구현할 때는 공개 키 문자열을 애플리케이션에 복사해야 합니다. 서비스 및 API 페이지('모든 애플리케이션' 아래)에서 라이선스를 위한 앱의 공개 키를 가져올 수 있습니다.

그림 1. Play Console의 서비스 및 API 페이지에서 사용할 수 있는 앱의 라이선스 키

테스트 계정 및 정적 테스트 응답으로 작업하는 방법에 관한 자세한 내용은 아래의 테스트 환경 설정을 참고하세요.

개발 환경 설정

라이선스 환경 설정에는 다음 작업이 포함됩니다.

  1. 개발을 위한 런타임 환경 설정
  2. SDK에 LVL 다운로드
  3. 라이선스 확인 라이브러리 설정
  4. 애플리케이션에 LVL 라이브러리 프로젝트 포함

아래 섹션에서는 이러한 작업을 설명합니다. 설정이 완료되면 앱에 라이선스 추가를 시작할 수 있습니다.

시작하려면 애플리케이션의 라이선스 확인 및 시행 구현을 실행, 디버그 및 테스트할 수 있는 적절한 런타임 환경을 설정해야 합니다.

런타임 환경 설정

앞에서 설명한 것처럼 애플리케이션은 라이선스 서버에 직접 연결하는 것이 아니라 Google Play 애플리케이션에서 제공하는 서비스에 바인딩하고 라이선스 확인 요청을 시작하여 라이선스 상태를 확인합니다. 그러면 Google Play 서비스가 라이선스 서버와의 직접 통신을 처리하고 최종적으로 응답을 애플리케이션으로 다시 전송합니다. 애플리케이션에서 라이선스를 디버그하고 테스트하려면 애플리케이션이 라이선스 서버에 라이선스 확인 요청을 전송할 수 있도록 필요한 Google Play 서비스가 포함된 런타임 환경을 설정해야 합니다.

사용할 수 있는 런타임 환경에는 두 가지 유형이 있습니다.

  • Google Play 애플리케이션이 포함된 Android 지원 기기 또는
  • Google API 부가기능, API 수준 8(버전 2) 이상을 실행하는 Android Emulator

기기에서 실행

Android 지원 기기를 사용하여 라이선스를 디버그 및 테스트하려면 기기는 다음을 충족해야 합니다.

  • Android 1.5 이상 (API 수준 3 이상) 플랫폼의 호환되는 버전 실행
  • Google Play 클라이언트 애플리케이션이 사전 설치된 시스템 이미지를 실행합니다.

Google Play가 시스템 이미지에 사전 설치되어 있지 않으면 애플리케이션이 Google Play 라이선스 서버와 통신할 수 없습니다.

Android 애플리케이션 개발에 사용할 기기를 설정하는 방법에 관한 자세한 내용은 하드웨어 기기 사용을 참조하세요.

Android Emulator에서 실행

사용 가능한 기기가 없다면 Android 에뮬레이터를 사용하여 라이선스를 디버그 및 테스트할 수 있습니다.

Android SDK에서 제공하는 Android 플랫폼에는 Google Play가 포함되어 있지 않으므로 SDK 저장소에서 Google API 부가기능 플랫폼(API 수준 8 이상)을 다운로드해야 합니다. 부가기능을 다운로드한 후 시스템 이미지를 사용하는 AVD 구성을 만들어야 합니다.

Google API 부가기능에는 전체 Google Play 클라이언트가 포함되어 있지 않습니다. 그러나 다음 서비스가 제공됩니다.

  • ILicensingService 원격 인터페이스를 구현하는 Google Play 백그라운드 서비스. 애플리케이션이 네트워크를 통해 라이선스 확인을 라이선스 서버로 전송할 수 있습니다.
  • AVD에 Google 계정을 추가하고 게시자 계정 또는 테스트 계정 사용자 인증 정보를 사용하여 로그인할 수 있는 기본 계정 서비스 세트

    게시자 또는 테스트 계정을 사용하여 로그인하면 애플리케이션을 게시하지 않고 디버그 및 테스트할 수 있습니다. 자세한 내용은 아래 승인된 계정에 로그인을 참조하세요.

Google API 부가기능의 여러 버전이 SDK Manager를 통해 사용 가능하지만 Android 2.2 이상 버전만 필요한 Google Play 서비스를 포함합니다.

애플리케이션에 라이선스를 추가하기 위해 에뮬레이터를 설정하려면 다음 단계를 따르세요.

  1. Android 스튜디오 도구 메뉴(Tools > Android > SDK Manager)를 사용하거나 <sdk>/tools/android sdk를 실행하여 Android SDK Manager를 시작합니다.
  2. 타겟팅하려는 Android 버전의 Google API를 선택하고 다운로드합니다. Android 2.2 이상이어야 합니다.
  3. 다운로드가 완료되면 Android 스튜디오 도구 메뉴(Tools > Android > AVD Manager)를 사용하거나 <sdk>/tools/android avd를 실행하여 AVD Manager를 엽니다.
  4. Android Virtual Device Manager 창에서 + Create Virtual Device를 선택하여 새 AVD의 구성 세부정보를 설정합니다.
  5. Virtual Device Configuration 창에서 기기 하드웨어를 선택하고 Next를 선택합니다.
  6. 새로운 AVD에서 실행할 시스템 이미지로 Google API를 선택하고 Next를 선택합니다.
  7. 설명이 포함된 이름을 AVD에 할당하고 필요에 따라 다른 구성 세부정보를 설정합니다.
  8. Finish를 선택하여 새로운 AVD 구성을 만듭니다. 이 구성은 사용 가능한 Android Virtual Device 목록에 표시됩니다.

AVD나 AVD 사용 방법에 익숙하지 않다면 가상 기기 관리를 참조하세요.

프로젝트 구성 업데이트

위에서 설명한 요구사항을 충족하는 런타임 환경을 실제 기기에서 또는 에뮬레이터에서 설정한 후에는 라이선스를 사용하는 컴파일된 .apk 파일이 이 환경에 배포되도록 애플리케이션 프로젝트를 업데이트하거나 필요에 따라 스크립트를 빌드해야 합니다. 특히 Android 스튜디오에서 개발하고 있다면 적절한 기기 또는 AVD를 타겟팅하는 실행 및 디버그 구성을 설정해야 합니다.

프로젝트가 이미 표준 Android 1.5(API 수준 3) 이상의 라이브러리에 컴파일되도록 구성되어 있으면 애플리케이션의 빌드 구성을 변경할 필요가 없습니다. 애플리케이션에 라이선스를 추가해도 애플리케이션의 빌드 구성에는 영향을 미치지 않습니다.

LVL 다운로드

라이선스 확인 라이브러리(LVL)는 애플리케이션에 라이선스를 추가하는 데 실행해야 하는 작업을 크게 단순화하는 도우미 클래스 모음입니다. 모든 경우에 LVL을 다운로드하여 애플리케이션에서 라이선스를 구현하는 기반으로 사용하는 것이 좋습니다.

라이선스 확인 라이브러리(LVL)는 GitHub에서 개발하였습니다. LVL 저장소를 클론하여 라이브러리 프로젝트로 설정할 수 있습니다. 명령줄에 다음을 입력하여 저장소를 클론하세요.

git clone https://github.com/google/play-licensing

리포지토리는 다음 항목을 포함합니다.

  • Android 라이브러리 프로젝트 내에 저장된 LVL 소스
  • LVL 라이브러리 프로젝트에 의존하는 '샘플'이라는 애플리케이션 예. 이 예에서는 애플리케이션이 라이브러리 도우미 클래스를 사용하여 라이선스를 확인하고 시행하는 방법을 보여줍니다.

라이선스 확인 라이브러리 설정

컴퓨터에 LVL을 다운로드하고 나면 개발 환경에서 Android 라이브러리 프로젝트로 설정하거나, 라이브러리 소스를 기존 애플리케이션 패키지로 직접 복사하거나 가져와서 설정해야 합니다. 일반적으로 LVL을 라이브러리 프로젝트로 사용하는 것이 좋습니다. 라이선스 코드를 여러 애플리케이션에서 재사용하고 시간이 지남에 따라 더 쉽게 유지할 수 있기 때문입니다. LVL은 별도로 컴파일되어 정적 .jar 파일로 애플리케이션에 추가되도록 설계되지 않았습니다.

권장되는 LVL 사용 방법은 새로운 Android 라이브러리 프로젝트로 LVL을 설정하는 것입니다. 라이브러리 프로젝트는 공유 Android 소스 코드와 리소스를 보유하는 개발 프로젝트 유형입니다. 다른 Android 애플리케이션 프로젝트가 라이브러리 프로젝트를 참조하여 빌드 시간에 컴파일된 소스를 .apk 파일에 포함할 수 있습니다. 라이선스 컨텍스트에서 이것은 라이선스 개발의 대부분을 라이브러리 프로젝트에서 한 번 실행하여 다양한 애플리케이션 프로젝트에 라이브러리 소스를 포함할 수 있다는 의미입니다. 이런 식으로 모든 프로젝트에서 라이선스의 균일한 구현을 손쉽게 유지하고 중앙에서 관리할 수 있습니다. 라이브러리 프로젝트나 사용 방법에 익숙하지 않다면 프로젝트 관리를 참조하세요.

LVL은 구성된 라이브러리 프로젝트로 제공되며 일단 다운로드하면 바로 사용할 수 있습니다.

Android 스튜디오에서 작업하는 경우 LVL을 프로젝트에 새로운 모듈로 추가해야 합니다.

  1. File > New > Import Module을 선택하여 'Import Module from Source' 창에서 라이브러리 모듈을 가져옵니다.
  2. Import Module from Source 창에서 Source directory에 프로젝트 루트(<sdk>/extras/google/play_licensing/library/AndroidManifest.xml)로 LVL의 library 디렉터리(라이브러리의 AndroidManifest.xml 파일을 포함하는 디렉터리)를 입력한 다음 Next를 선택합니다.
  3. Finish를 선택하여 라이브러리 모듈을 가져옵니다.

Android 스튜디오에서 라이브러리 모듈로 작업하는 방법에 관한 자세한 내용은 Android 라이브러리 만들기를 참고하세요.

LVL 라이브러리 프로젝트 소스를 애플리케이션에 포함

LVL 소스를 라이브러리 프로젝트로 사용하려면 LVL 라이브러리 프로젝트 참조를 애플리케이션 프로젝트 속성에 추가해야 합니다. 이렇게 하면 컴파일 시간에 LVL 라이브러리 프로젝트 소스를 애플리케이션에 포함하라고 빌드 도구에 알립니다. 라이브러리 프로젝트에 참조를 추가하는 프로세스는 아래에 설명된 개발 환경에 따라 달라집니다.

Android 스튜디오에서 개발하고 있다면 이전 섹션에서 설명한 대로 이미 프로젝트에 라이브러리 모듈을 추가했어야 합니다. 아직 추가하지 않았다면 지금 추가한 후 계속 진행하세요.

SDK 명령줄 도구를 사용하여 개발하고 있다면 애플리케이션 프로젝트가 포함된 디렉터리로 이동하여 project.properties 파일을 엽니다. 파일에 android.library.reference.<n> 키와 라이브러리 경로를 지정하는 한 줄을 추가합니다. 예:

android.library.reference.1=path/to/library_project

또는 이 명령어를 사용하여 라이브러리 프로젝트 참조를 포함한 프로젝트 속성을 업데이트할 수 있습니다.

android update lib-project
--target <target_ID> \
--path path/to/my/app_project \
--library path/to/my/library_project

라이브러리 프로젝트 작업에 관한 자세한 내용은 라이브러리 프로젝트 설정을 참고하세요.

테스트 환경 설정

Google Play Console은 개발자가 애플리케이션을 게시하기 전에 애플리케이션에서 라이선스를 테스트할 수 있는 구성 도구를 제공합니다. 라이선스를 구현할 때 Play Console 도구를 사용하여 애플리케이션의 정책과 다양한 라이선스 응답 및 오류 상황의 처리를 테스트할 수 있습니다.

라이선스 테스트 환경의 기본 구성요소에는 다음이 포함됩니다.

  • 게시자 계정의 '테스트 응답' 구성. 이 구성을 사용하면 서버에서 게시자 계정에 업로드된 애플리케이션의 라이선스 확인을 처리할 때 게시자 계정 또는 테스트 계정에 로그인한 사용자로부터 반환된 정적 라이선스 응답을 설정할 수 있습니다.
  • 게시 여부에 상관없이 업로드한 애플리케이션의 라이선스를 확인할 때 정적 테스트 응답을 수신하는 선택적 테스트 계정 세트
  • 사용자가 게시자 계정 또는 테스트 계정 중 하나로 로그인한 Google Play 애플리케이션 또는 Google API 부가기능이 포함된 애플리케이션의 런타임 환경

테스트 환경을 올바르게 설정하는 작업에는 다음이 포함됩니다.

  1. 라이선스 서버에서 반환하는 정적 테스트 응답 설정
  2. 필요에 따라 테스트 계정 설정
  3. 라이선스 확인 테스트를 시작하기 전에 에뮬레이터나 기기에 올바르게 로그인

자세한 내용은 아래 섹션을 참조하세요.

라이선스 확인을 위한 테스트 응답 설정

Google Play는 게시자 계정의 구성 설정을 제공하여 라이선스 확인의 일반적인 처리를 재정의하고 지정된 정적 응답 코드를 반환할 수 있습니다. 설정은 테스트 전용이며, 개발자가 업로드한 애플리케이션을 대상으로 게시자 계정 또는 등록된 테스트 계정의 사용자 인증 정보를 사용하여 에뮬레이터나 기기에 로그인한 사용자가 실행한 라이선스 확인에 적용됩니다. 다른 사용자의 경우 서버는 항상 일반 규칙에 따라 라이선스 확인을 처리합니다.

계정의 테스트 응답을 설정하려면 게시자 계정에 로그인하고 '프로필 수정'을 클릭합니다. 프로필 수정 페이지의 라이선스 패널에서 아래와 같이 테스트 응답 메뉴를 찾습니다. 전체 유효한 서버 응답 코드 세트에서 선택하여 애플리케이션에서 테스트하려는 응답 또는 조건을 제어할 수 있습니다.

일반적으로 테스트 응답 메뉴에서 사용 가능한 모든 응답 코드로 애플리케이션의 라이선스 구현을 테스트해야 합니다. 코드 설명은 라이선스 참조서버 응답 코드를 참조하세요.

그림 2. 테스트 계정을 설정하고 테스트 응답을 관리할 수 있는 계정 세부정보 페이지의 라이선스 테스트 패널

구성한 테스트 응답은 계정 전체에 적용됩니다. 즉, 단일 애플리케이션이 아니라 게시자 계정과 연결된 모든 애플리케이션에 적용됩니다. 한 번에 여러 애플리케이션을 테스트하는 경우 테스트 응답을 변경하면 다음 라이선스 확인(사용자가 게시자 계정이나 테스트 계정을 사용하여 에뮬레이터나 기기에 로그인한 경우) 시 이러한 모든 애플리케이션에 영향을 미칩니다.

라이선스 확인의 테스트 응답을 성공적으로 수신할 수 있으려면 애플리케이션이 설치되고 서버에 쿼리하는 기기 또는 에뮬레이터에 로그인해야 합니다. 특히 게시자 계정 또는 설정한 테스트 계정 중 하나를 사용하여 로그인해야 합니다. 테스트 계정에 관한 자세한 내용은 다음 섹션을 참조하세요.

사용 가능한 테스트 응답 목록과 그 의미는 서버 응답 코드를 참고하세요.

테스트 계정 설정

경우에 따라 여러 개발자 팀이 최종적으로 게시자 계정을 통해 게시될 애플리케이션에서 라이선스를 테스트할 수 있도록 하되 게시자 계정의 로그인 사용자 인증 정보의 액세스 권한은 부여하지 않는 것이 좋습니다. 이러한 요구를 충족하려면 Google Play Console을 사용하여 하나 이상의 선택적 테스트 계정(라이선스 서버에 쿼리하고 게시자 계정으로부터 정적 테스트 응답을 수신하는 권한이 부여된 계정)을 설정하면 됩니다.

테스트 계정은 게시자 계정에 등록하는 표준 Google 계정이므로 업로드한 애플리케이션의 테스트 응답을 수신합니다. 그러면 개발자는 테스트 계정 사용자 인증 정보를 사용하여 기기 또는 에뮬레이터에 로그인하고 설치된 애플리케이션에서 라이선스 확인을 시작할 수 있습니다. 라이선스 서버가 테스트 계정의 사용자로부터 라이선스 확인을 수신하면 게시자 계정에 구성된 정적 테스트 응답을 반환합니다.

물론 테스트 계정을 통해 로그인한 사용자에게 부여된 액세스 및 권한에는 다음과 같은 제한사항이 있습니다.

  • 테스트 계정 사용자는 게시자 계정에 이미 업로드된 애플리케이션만 라이선스 서버에 쿼리할 수 있습니다.
  • 테스트 계정 사용자에게는 게시자 계정에 애플리케이션을 업로드할 권한이 없습니다.
  • 테스트 계정 사용자는 게시자 계정의 정적 테스트 응답을 설정할 권한이 없습니다.

아래 표에는 게시자 계정, 테스트 계정 및 기타 계정 간의 기능 차이가 요약되어 있습니다.

표 1. 라이선스 테스트를 위한 계정 유형의 차이

계정 유형 업로드 전에 라이선스를 확인할 수 있나요? 테스트 응답을 수신할 수 있나요? 테스트 응답을 설정할 수 있나요?
게시자 계정
테스트 계정 아니요 아니요
기타 아니요 아니요 아니요

게시자 계정에 테스트 계정 등록

시작하려면 각 테스트 계정을 게시자 계정에 등록해야 합니다. 그림 2와 같이 게시자 계정의 프로필 수정 페이지에 있는 라이선스 패널에서 테스트 계정을 등록합니다. 계정을 쉼표로 구분된 목록으로 간단히 입력하고 저장을 클릭하여 프로필 변경사항을 저장합니다.

어떤 Google 계정이든 테스트 계정으로 사용할 수 있습니다. 테스트 계정을 소유하고 제어하려면 직접 계정을 만들어 개발자나 테스터에게 사용자 인증 정보를 배포하면 됩니다.

테스트 계정 사용자를 위한 애플리케이션 업로드 및 배포 처리

위에서 언급했듯이 테스트 계정 사용자는 게시자 계정에 업로드된 애플리케이션의 정적 테스트 응답만 수신할 수 있습니다. 이러한 사용자에게는 애플리케이션 업로드 권한이 없으므로 게시자는 이러한 사용자와 협력하여 업로드할 앱을 수집하고 테스트를 위해 업로드된 앱을 배포해야 합니다. 편리한 어떤 방법으로든 수집 및 배포를 처리할 수 있습니다.

애플리케이션이 업로드되고 라이선스 서버에 알려지게 되면 개발자와 테스터는 새로운 버전을 업로드할 필요 없이 로컬 개발 환경에서 애플리케이션을 계속 수정할 수 있습니다. 로컬 애플리케이션이 manifest 파일에서 versionCode 속성을 늘리는 경우에만 새로운 버전을 업로드해야 합니다.

테스트 계정 사용자에게 공개 키 배포

라이선스 서버는 라이선스 응답 데이터에 서명, extras 매개변수 추가 등 일반적인 방법으로 정적 테스트 응답을 처리합니다. 게시자 계정이 아닌 테스트 계정을 사용하여 라이선스를 구현하는 개발자를 지원하려면 라이선스를 위한 앱의 공개 키를 배포해야 합니다. Play Console에 액세스할 수 없는 개발자는 앱의 공개 키에도 액세스할 수 없고, 키가 없으면 라이선스 응답을 확인할 수 없습니다.

어떤 이유든 앱에 새로운 라이선스 키 쌍을 생성하기로 한 경우 모든 테스트 계정 사용자에게 알려야 합니다. 테스터의 경우 애플리케이션 패키지에 새로운 키를 삽입하여 사용자에게 배포할 수 있습니다. 개발자의 경우 직접 새로운 키를 배포해야 합니다.

런타임 환경에서 승인된 계정에 로그인

라이선스 서비스는 지정된 사용자가 주어진 애플리케이션을 사용하기 위한 라이선스를 부여받았는지 판단하도록 설계되었습니다. 라이선스 확인 중에 Google Play 애플리케이션은 시스템의 기본 계정에서 사용자 ID를 수집하여 애플리케이션의 패키지 이름 및 기타 정보와 함께 서버에 전송합니다. 그러나 사용 가능한 사용자 정보가 없으면 라이선스 확인은 성공할 수 없으므로 Google Play 애플리케이션이 요청을 종료하고 애플리케이션에 오류를 반환합니다.

테스트하는 동안 애플리케이션에서 라이선스 서버에 성공적으로 쿼리할 수 있으려면 다음을 사용하여 기기 또는 에뮬레이터의 계정에 로그인해야 합니다.

  • 게시자 계정의 사용자 인증 정보 또는
  • 게시자 계정에 등록된 테스트 계정의 사용자 인증 정보

게시자 계정을 사용하여 로그인하면 애플리케이션이 Play Console에 업로드되기 전에도 정적 테스트 응답을 수신할 수 있다는 이점이 있습니다.

대규모 조직에 속해 있거나 사이트를 통해 게시될 애플리케이션에서 외부 그룹과 작업하는 경우 테스트 계정을 대신 배포한 다음 테스트 중에 로그인하는 데 사용하는 것이 좋습니다.

기기 또는 에뮬레이터에 로그인하려면 다음 단계를 따르세요. 선호되는 방법은 기본 계정으로 로그인하는 것입니다. 그러나 기기나 에뮬레이터에서 이미 사용 중인 다른 계정이 있다면 추가 계정을 만들고 게시자 또는 테스트 계정 사용자 인증 정보를 사용하여 로그인할 수 있습니다.

  1. 설정 > 계정 및 동기화를 엽니다.
  2. 계정 추가를 선택하고 Google 계정 추가를 선택합니다.
  3. 다음을 선택하고 로그인합니다.
  4. 게시자 계정 또는 게시자 계정에 등록된 테스트 계정의 사용자 이름과 비밀번호를 입력합니다.
  5. 로그인을 선택합니다. 시스템에서 새로운 계정으로 로그인합니다.

로그인하면 애플리케이션에서 라이선스 테스트를 시작할 수 있습니다(위 LVL 통합 단계를 완료한 경우). 애플리케이션에서 라이선스 확인을 시작하면 게시자 계정에 구성된 정적 테스트 응답이 포함된 응답을 수신합니다.

에뮬레이터를 사용하는 경우 에뮬레이터를 다시 시작하여 데이터를 완전히 삭제할 때마다 게시자 계정 또는 테스트 계정에 로그인해야 합니다.

설정 절차를 완료하고 나면 앱에 라이선스 추가로 계속 진행하세요.