Android Studio를 사용하여 실행 가능한 jar 만들기

소개


Android Studio를 사용하여 실행 가능한 항아리를 만드는 방법을 설명합니다.

버전


OS 버전은 다음과 같습니다.
Microsoft Windows 10 Home
10.0.18363 N/A ビルド 18363
Android Studio 버전은 다음과 같습니다.
Android Studio 4.0
Build #AI-193.6911.18.40.6514223, built on May 21, 2020
Runtime version: 1.8.0_242-release-1644-b01 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
자바 버전은 다음과 같습니다.
java -version
java version "1.8.0_251"
Java(TM) SE Runtime Environment (build 1.8.0_251-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.251-b08, mixed mode)

프로젝트 만들기


다음 절차에 따라 프로젝트를 만듭니다.
Android Studio를 시작합니다.
Start a new Android Studio 프로젝트를 선택합니다.
No Activity 프로젝트를 만듭니다.
Name을 "My Application"(default)이라고 합니다. Language를 "Kotlin"이라고 합니다.

jar의 모듈 만들기


다음 절차에 따라 프로젝트에 jar 모듈을 추가합니다.
File - New - New Module ...을 선택합니다.
Java or Kotlin Library를 선택합니다.
Library name을 "lib"(default)라고 합니다. 클래스 이름을 "MyClass"라고합니다.

fun main


MyClass.kt를 엽니다. 내용을 다음 처리로 바꿉니다.

MyClass.kt
package com.example.lib

fun main(args: Array<String>) {}

여기까지 실행한 상태의 화면은 다음과 같습니다.

build.gradle


lib의 build.gradle에 다음을 추가합니다.

build.gradle
jar {
    manifest {
        attributes("Main-Class": "com.example.lib.MyClassKt")
    }
    from { configurations.compileClasspath.collect { it.isDirectory() ? it : zipTree(it) } }
}


jar task 추가


다음과 같이 jar task를 추가합니다.
View - Tool Windows - Gradle을 선택합니다. 창이 표시됩니다.
My Application - Tasks - build - jar를 두 번 클릭합니다. 빌드 시작합니다.
여기까지 실행한 상태의 화면은 다음과 같습니다.

다음 경로에 jar를 할 수 있습니다.
MyApplication\lib\build\libs\lib.jar

실행


command prompt를 엽니다. lib.jar이 있는 경로로 이동합니다.
다음 명령을 실행합니다.
오류없이 실행할 수 있으면 예상대로 실행 가능한 jar가 되어 있는 것을 알 수 있습니다.
java -jar .\lib.jar

Troubleshooting


"Entry META-INF/XXXX" 오류 발생


다음과 같은 에러가 발생하는 경우의 대책을 기재합니다.
Entry META-INF/versions/9/module-info.class is a duplicate but no duplicate handling strategy has been set. Please refer to https://docs.gradle.org/7.2/dsl/org.gradle.api.tasks.Copy.html#org.gradle.api.tasks.Copy:duplicatesStrategy for details.
오류가 발생한 환경
Android Studio 버전은 다음과 같습니다.
Android Studio Bumblebee | 2021.1.1 Patch 2
Build #AI-211.7628.21.2111.8193401, built on February 17, 2022
Runtime version: 11.0.11+9-b60-7590822 amd64
VM: OpenJDK 64-Bit Server VM by Oracle Corporation
Windows 10 10.0
대책
build.gradle에

duplicatesStrategy = DuplicatesStrategy.EXCLUDE

를 추가합니다.

build.gradle
jar {
    duplicatesStrategy = DuplicatesStrategy.EXCLUDE
    manifest {
        attributes("Main-Class": "com.example.lib.MyClassKt")
    }
    from { configurations.compileClasspath.collect { it.isDirectory() ? it : zipTree(it) } }
}

좋은 웹페이지 즐겨찾기