오픈소스 고지 포함

Google Play 서비스에는 오픈소스 라이브러리가 포함되거나 종속된 경우가 있습니다. 오픈소스 라이브러리의 라이선스 요구사항을 준수하기 위해 개발자는 앱에서 사용하는 오픈소스 라이브러리의 알림을 적절하게 표시할 책임이 있습니다.

Google Play 서비스에는 개발자가 앱에서 사용되는 라이브러리의 오픈소스 소프트웨어 알림을 더 쉽게 표현할 수 있도록 설계된 일련의 도구가 포함되어 있습니다. 이러한 도구 중 하나는 POM 파일에 선언된 대로 포함된 라이브러리에서 라이선스 약관을 수집하고 이러한 약관을 표시하는 데 사용할 수 있는 활동을 만드는 Gradle 플러그인입니다. 도구가 라이선스 정보를 찾고 패키징하는 방법에 대해 자세히 알아보세요.

Gradle 플러그인 추가

루트 수준 빌드 파일에서 다음을 수행합니다.

  1. Google Maven 저장소를 포함합니다.
  2. 종속 항목에 oss-licenses 플러그인을 추가합니다.

다음 코드 스니펫은 다음 단계를 보여줍니다.

Kotlin DSL

build.gradle.kts

buildscript {
  repositories {
    ...
    google()  // maven { url("https://maven.google.com") } for Gradle <= 3
  }
  dependencies {
    ...
    classpath("com.google.android.gms:oss-licenses-plugin:0.10.6")
  }
}

그루비 DSL

build.gradle

buildscript {
  repositories {
    ...
    google()  // maven { url "https://maven.google.com" } for Gradle <= 3
  }
  dependencies {
    ...
    classpath 'com.google.android.gms:oss-licenses-plugin:0.10.6'
  }
}

앱 수준 빌드 파일에서 파일 상단에 있는 com.android.application 플러그인의 기존 선언 아래에 다음 줄을 추가하여 플러그인을 적용합니다.

Kotlin DSL

app/build.gradle.kts

plugins {
    id("com.android.application")
    id("com.google.android.gms.oss-licenses-plugin")
}

그루비 DSL

app/build.gradle

plugins {
    id 'com.android.application'
    id 'com.google.android.gms.oss-licenses-plugin'
}

GitHub에서 이 플러그인의 코드를 확인할 수 있습니다.

앱에 라이브러리 추가

앱 수준 빌드 파일의 dependencies 섹션에서 oss-licenses 라이브러리의 종속 항목을 추가합니다.

Kotlin DSL

build.gradle.kts

implementation("com.google.android.gms:play-services-oss-licenses:17.0.1")

그루비 DSL

build.gradle

implementation 'com.google.android.gms:play-services-oss-licenses:17.0.1'

라이선스 정보 표시

앱이 빌드되면 Gradle 플러그인이 라이선스를 처리하여 앱의 리소스에 추가합니다. 라이선스를 쉽게 표시하려면 다음 코드 스니펫에서와 같이 play-services-oss-licenses 라이브러리에서 제공하는 활동을 앱의 적절한 지점에서 실행하면 됩니다.

Kotlin

import com.google.android.gms.oss.licenses.OssLicensesMenuActivity
...

// When the user selects an option to see the licenses:
startActivity(Intent(this, OssLicensesMenuActivity::class.java))

Java

import com.google.android.gms.oss.licenses.OssLicensesMenuActivity;
...

// When the user selects an option to see the licenses:
startActivity(new Intent(this, OssLicensesMenuActivity.class));

이 활동은 실행되면 그림 1과 같이 Google Play 서비스에 포함된 라이브러리를 비롯하여 앱에 컴파일되는 오픈소스 라이브러리의 목록이 표시됩니다. 사용자는 라이브러리의 이름을 탭하여 라이브러리의 추가 라이선스 정보를 볼 수 있습니다.

각 요소에 오픈소스 라이브러리의 이름이 포함된 목록 보기

그림 1. 라이선스 메뉴 활동은 앱에서 사용하는 오픈소스 라이브러리의 선택 가능한 목록을 보여줍니다.

활동 제목 설정

기본적으로 표시되는 활동의 제목은 '오픈소스 라이선스'입니다. 다음 코드 스니펫과 같이 setActivityTitle()를 호출하여 활동의 제목을 맞춤설정할 수 있습니다.

Kotlin

OssLicensesMenuActivity.setActivityTitle(getString(R.string.custom_license_title))

Java

OssLicensesMenuActivity.setActivityTitle(getString(R.string.custom_license_title));

활동에 테마 적용

앱의 다른 활동에 사용되는 테마와 일치하도록 활동에 테마를 적용할 수 있습니다. 이렇게 하려면 다음 코드 스니펫에서와 같이 앱의 매니페스트 파일 내 <activity> 요소에 오픈소스 라이선스 활동을 포함합니다.

<application android:theme="@style/AppTheme" ...>
    <activity
        android:name="com.google.android.gms.oss.licenses.OssLicensesMenuActivity"
        android:theme="@style/AppTheme" />
    <activity
        android:name="com.google.android.gms.oss.licenses.OssLicensesActivity"
        android:theme="@style/AppTheme" />
</application>

라이선스 목록이 결정되는 방식

컴파일 시간에 Gradle 플러그인은 앱 프로젝트의 POM 종속 항목을 스캔합니다. 앱의 직접 종속 항목에 Maven POM이 존재하는 경우 플러그인은 각 <licenses> 요소를 처리하고 앱에 포함된 Android 애셋에 각 라이선스의 링크와 제목을 삽입합니다.