본문 바로가기

Android

[Android] 오픈 라이선스 목록 고지 쉽게 적용하기 feat.Compose

대부분 오픈소스 라이브러리들이 저작권과 라이선스 내용을 제품에 표기하도록 요구한다.

많은 오픈소스 라이브러리를 사용하는 안드로이드 어플리케이션 특성상 라이선스 표기는 필수다.

하지만 수 많은 라이선스를 일일이 찾아 페이지를 따로 만드는건 너무 많은 시간이 걸린다.

 

구글에서 제공하는 oss-licenses를 사용하면 간편하게 오픈 라이선스를  표기할  수 있다.

https://developers.google.com/android/guides/opensource

 

 

build.gradle (Project)

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

 

 

build.gradle (App)

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


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

 

 

Activity

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

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

 

 

Compose에서 사용한다면 이렇게 실행하면 된다

@Composable
fun MenuScreen() {
    val context = LocalContext.current as Activity
    
    TextButton(onClick = {
        val activity = context as Activity
        activity.startActivity(Intent(context, OssLicensesMenuActivity::class.java))
    }) {
        Text(text = "오픈소스 라이선스")
    }
}

 

 

실행 결과

 

 

AppBar가 보이지 않는다.

앱에서 사용중인 기본 테마 스타일이 NoActionBar이기 때문에 발생한 문제다.

 

테마를 새로 적용 해보자.

 

res > values > themes.xml을 열어준다.

OSSTheme이라는 새로운 스타일을 만든다.

<resources xmlns:tools="http://schemas.android.com/tools">
    ...

    <style name="OSSTheme" parent="Theme.Material3.Light">
        <item name="android:statusBarColor">@color/white</item> <!-- 상단바 색상이 맘에 안들어서 바꿨다. -->
        <item name="android:windowLightStatusBar">true</item>
    </style>
</resources>

 

 

AndroidManifest.xml을 열어 activity를 추가 해준다.

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

 

 

 

실행 결과

 

 

AppBar 타이틀이 맘에 안든다.

타이틀을 바꿔 보자

 

Activity

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

OssLicensesMenuActivity.setActivityTitle("오픈소스 라이브러리")
startActivity(Intent(this, OssLicensesMenuActivity::class.java))

 

Compose

@Composable
fun MenuScreen() {
    val context = LocalContext.current as Activity
    
    TextButton(onClick = {
        val activity = context as Activity
        OssLicensesMenuActivity.setActivityTitle("오픈소스 라이브러리")
        activity.startActivity(Intent(context, OssLicensesMenuActivity::class.java))
    }) {
        Text(text = "오픈소스 라이선스")
    }
}

 

 

 

실행 결과

 

 

 

 

 

만약 아래 처럼 라이브러리 목록이 나오지 않는다면

빌드 변수가 debug로 되어 있어서 그러니 release로 변경해주자.

 

 

Build Variants에서

Active Build Variant를 debug에서 release로 변경해준다.

'Android' 카테고리의 다른 글

[Android] StateFlow emit 한번 만 하는 문제  (0) 2024.01.05
[Android] Compose Linear Step Indicator  (0) 2024.01.03