대부분 오픈소스 라이브러리들이 저작권과 라이선스 내용을 제품에 표기하도록 요구한다.
많은 오픈소스 라이브러리를 사용하는 안드로이드 어플리케이션 특성상 라이선스 표기는 필수다.
하지만 수 많은 라이선스를 일일이 찾아 페이지를 따로 만드는건 너무 많은 시간이 걸린다.
구글에서 제공하는 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 |