라이선스에 대해 알아보고
앱에 사용된 OSS Licenses를 표시해본다.
※ OSS : 오픈 소스 소프트웨어 라이선스
(Open Source Software Licenses)
✅ 라이선스
라이선스는 소프트웨어나 콘텐츠의 사용·배포·수정 등에 대한 법적 권한과 조건을 명시한 문서다.
즉, 개인이나 기업이 만든 소프트웨어를 다른 사람들이 사용할 수 있도록 허용하는 대신,
특정 조건을 지키도록 요구하는 약속이라고 볼 수 있다.
'라이센스'라고 부르는 사람도 많은데, 한국어로는 '라이선스'가 표준이다.
라이선스의 주 목적은 저작자의 권리를 보호하면서,
타인들에게는 재사용·배포 허가로 인한 생산성 향상이다.
✅ 소프트웨어 라이선스 종류
라이선스도 여러 종류가 있는데, 그 중에서도 대표적인 몇 가지만 알아보자.
🎈 오픈소스 라이선스
소스 코드를 공개하고 다른 사람들이 사용할 수 있도록 허용하는 대표적인 라이선스다.
우리가 앱에 적용하는 대부분의 라이브러리들이 여기에 해당한다.
사용·배포·수정을 가능하게 하지만, 일부 조건이 존재하며 각 라이선스 종류마다 다르다.
라이선스 | 설명 | 조건 |
Apache 2.0 | 사용·수정·배포 제한 없음 | 저작권 명시 수정 시 변경 사항 명시 라이선스 사본 명시 |
MIT | 사용·수정·배포 제한 없음 | 저작권 명시 |
BSD | 사용·수정·배포 제한 없음 | 저작권 명시 |
GPL | 사용 제한 없음 | 저작권 명시 수정·배포 시 소스 코드 공개 |
LPGL | 사용 제한 없음 | 저작권 명시 수정 시 소스 코드 공개 |
개인적으로는 Apache 2.0 라이선스를 제일 많이 본 것 같다.
🎈 상업용 라이선스
소프트웨어를 유료로 판매하거나 배포하는 경우에 해당한다.
사용자는 라이선스를 구매해야 하며, 저작권자의 허락 없이 복제·수정·배포가 금지된다.
예시로는 소프트웨어 공급 외주업체에서 소프트웨어를 구매해오는 상황이 있겠다.
🎈 독점 라이선스
소스 코드 비공개 상태로 소프트웨어의 사용권만을 제공한다.
소스 코드가 비공개이기에 당연히 복제·수정·배포될 수 없다.
예시로는 Windows, MacOS 등이 있겠다.
🎈 라이선스 위반 시 문제점
● 법적 문제 : 저작권 침해로 소송이 발생할 수 있다.
● 재배포 중단 : 라이선스를 위배한 소프트웨어는 배포가 중단된다.
✅ 앱에 OSS 라이선스 표시하기
우리는 앱을 개발할 때 Android 내장 라이브러리(JetPack 등)와 외부 라이브러리(Github 참조 등)를
덕지덕지 붙여가며 오픈 소스 플랫폼의 수혜를 받고 있다.
하지만 이 오픈 소스들을 자유롭게 사용하는 대신, 라이선스에 명시된 조건을 지켜줘야 한다.
시중에서 널리 사용되고 있는 앱들 또한 오픈 소스 라이선스를 앱 내에 명시하고 있다.
🎈 유튜브
🎈 야놀자
등 웬만한 앱에는 모두 명시하고 있는 것을 확인할 수 있다.
이제 우리의 앱에도 오픈 소스 라이선스를 명시해보자.
일단 내 앱에서 어떤 라이브러리를 사용하는지 알아봐야 한다.
External Libraries만 펼쳐도 어질어질하다.
그만 알아보자..라고 할 뻔 했지만, 구글에서 이걸 직접 다 적으라고 할 리가 없다.
구글은 개발자 편의성을 고려하여 플러그인을 제공해준다.
일단 Gradle 파일에 다음 내용들을 추가해준다.
build.gradle.kts(Project 수준)
buildscript {
...
dependencies {
classpath("com.google.android.gms:oss-licenses-plugin:0.10.6")
}
}
build.gradle.kts(Module :app 수준)
plugins {
id("com.google.android.gms.oss-licenses-plugin")
}
...
dependencies {
implementation("com.google.android.gms:play-services-oss-licenses:17.1.0")
}
Sync 해주면, 플러그인에서 제공해주는 전용 Activity를 사용할 수 있다.
MainActivity.kt
button.setOnClickListener {
startActivity(Intent(this, OssLicensesMenuActivity::class.java))
}
OssLicensesMenuActivity로 화면 전환을 해주기만 하면 된다.
그리고 매니페스트 파일에서 위 Activity를 선언한 뒤, 내 앱의 테마를 적용해주자.
AndroidManifest.xml
<activity
android:name="com.google.android.gms.oss.licenses.OssLicensesMenuActivity"
android:theme="@style/Theme.AppCompat" />
<activity
android:name="com.google.android.gms.oss.licenses.OssLicensesActivity"
android:theme="@style/Theme.AppCompat" />
🎈 결과
앱에 적용된 오픈 소스 라이브러리가 자동으로 리스트업 되었다.
혹시나 상단의 제목이 마음에 들지 않는다면 변경해줄 수도 있다.
OssLicensesMenuActivity.setActivityTitle("제목")
위 리스트의 아무 라이브러리나 클릭해보면
위 처럼 라이선스가 명시된 웹페이지 링크가 표시된다.
링크로 표시되는 라이브러리도 있고,
이 화면에 바로 라이선스가 표시되는 라이브러리도 있다.
(대충 라바라 라는 뜻)
어쨌든, 해당 링크를 클릭하면
웹 페이지로 이동되며 라이선스가 표시되는 것을 확인할 수 있다.
🎈 참고
앱을 debug 모드로 실행하면 라이선스가 리스트업되지 않는다.
release 모드로 변경 후 실행해야 보인다!
라이선스에 대해 간단히 알아보고,
앱에 OSS Licenses를 표시해보았다.
개인적인 생각으로는, 라이선스가 존재하기에 오픈 소스가 지켜질 수 있다고 본다.
공부한 김에 기존에 만들었던 모든 앱에 적용해야겠다...
아는 만큼 보인다 → 아는 만큼 할 게 많아진다
'Android (안드로이드)' 카테고리의 다른 글
[Android] 앱에서 기기 볼륨 조절하기 / AudioManager (+TTS) (2) | 2024.12.22 |
---|---|
[Android] 앱에서 TTS 사용해보기 (1) | 2024.12.21 |
[Android] release 모드 빌드하기 / Build Variants / Signing Configs (1) | 2024.12.19 |
[Android] 앱 버전 · Target SDK · 빌드 날짜 표시하기 / BuildConfig import 오류 해결 (3) | 2024.12.12 |
[Android] Android Version 종류 및 점유율 확인 / API LEVEL / Target SDK (1) | 2024.12.11 |