AndroidStudio를 사용하고 있으며 다음과 같은 프로젝트가 있습니다.
파란색 원 안에있는 것은 myLib입니다. myLib는 또한 빨간색 원 안에있는 외부 라이브러리와 아파치 패키지 (녹색 원)를 사용해야합니다.
그래서 저는이 모든 것을 하나의 .jar로 만들고 싶습니다. 그래서 다른 프로젝트에서 사용할 수 있습니다.
단계별 가이드가 정말 감사하겠습니다. 저는 개발자 세계의 초보자입니다.
감사!
AndroidStudio를 사용하고 있으며 다음과 같은 프로젝트가 있습니다.
파란색 원 안에있는 것은 myLib입니다. myLib는 또한 빨간색 원 안에있는 외부 라이브러리와 아파치 패키지 (녹색 원)를 사용해야합니다.
그래서 저는이 모든 것을 하나의 .jar로 만들고 싶습니다. 그래서 다른 프로젝트에서 사용할 수 있습니다.
단계별 가이드가 정말 감사하겠습니다. 저는 개발자 세계의 초보자입니다.
감사!
답변:
위의 코드 :
task deleteJar(type: Delete) {
delete 'libs/jars/logmanagementlib.jar'
}
task createJar(type: Copy) {
from('build/intermediates/bundles/release/')
into('libs/jars/')
include('classes.jar')
rename('classes.jar', 'logmanagementlib.jar')
}
createJar.dependsOn(deleteJar, build)
release
. 나는 없어 한 debug
하고 default
있지만 release
폴더에 있습니다. 어떤 버전의 플러그인을 사용하고 있습니까? 이것이 문서화되어 있는지 아십니까?
release
폴더 가 없습니다 .
Gradle에서 코드를 일반 Java 모듈로 설정하면 Gradle에서 콘텐츠가 포함 된 jar 파일을 제공하는 것이 정말 쉽습니다. 해당 jar 파일에는 자신의 코드 만 있고 종속 된 다른 Apache 라이브러리는 없습니다. 이 방법으로 배포하는 것이 좋습니다. 라이브러리 내부에 종속성을 번들로 묶는 것이 약간 이상하고 해당 라이브러리의 사용자가 해당 종속성을 자체적으로 포함해야하는 것이 더 일반적입니다 (그렇지 않으면 해당 프로젝트의 충돌이 이미 라이브러리 복사본, 아마도 다른 버전을 연결하고 있기 때문). ). 또한 라이브러리를 게시하는 경우 다른 사람의 코드를 재배포하는 것과 관련된 잠재적 인 라이선스 문제를 방지 할 수 있습니다.
jar로 컴파일해야하는 코드를 가져 와서 Android 스튜디오의 별도의 일반 Java 모듈로 이동합니다.
이제 프로젝트가 정상적으로 빌드되기를 바랍니다. 빌드를 수행하면 Java 라이브러리의 jar 파일이 모듈 디렉토리 의 build / libs 디렉토리에 배치됩니다 . jar 파일을 직접 빌드하려면 Gradle 창에서 jar 빌드 파일 작업을 실행할 수 있습니다 .
Android 스튜디오 IDE에서 다음을 수행하여 " Run Anything bar "에 액세스합니다 .
CTRL+ CTRL+ gradle CreateFullJarRelease
+ENTER
그 후 프로젝트의이 폴더에서 아티팩트를 찾을 수 있습니다.
Build > Intermediates > Full_jar > Release > CreateFullJarRelease > full.jar
Gradle은 이미 폴더 Task
아래의 gradle 사이드 메뉴에 other
있습니다.
그런 다음 아래로 스크롤하여 createFullJarRelease
클릭하십시오.
그 후 프로젝트의이 폴더에서 아티팩트를 찾을 수 있습니다.
Build > Intermediates > Full_jar > Release > CreateFullJarRelease > full.jar
build\intermediates\intermediate-jars\release
classes.jar
, full.jar
및 res.jar
. 사용할 때마다 모든 jar 파일을 가져와야합니까?
이것을 자바 모듈의 build.gradle에 추가하기 만하면됩니다. 아카이브에 종속 라이브러리가 포함됩니다.
mainClassName = "com.company.application.Main"
jar {
manifest {
attributes "Main-Class": "$mainClassName"
}
from {
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
}
}
그러면 [module_name] / build / libs / [module_name] .jar 파일이 생성됩니다.
.jar 파일은 응용 프로그램을 컴파일 / 실행할 때 자동으로 생성됩니다.
root_folder / app / build / intermediates / bundles / debug에서 class.jar 파일을 찾을 수 있습니다.
Android Studio의 Gradle 탭으로 이동 한 다음 라이브러리 프로젝트를 선택합니다.
그런 다음 작업으로 이동
그런 다음 기타로 이동
bundleReleaseaar를 두 번 클릭하십시오.
.aar
아래에서 파일을 찾을 수 있습니다.your_module/build/outputs/aar/your-release.aar
.jar
하지.aar
task deleteJar(type: Delete) {
delete 'libs/mylibrary.jar'
}
task exportjar(type: Copy) {
from('build/intermediates/compile_library_classes/release/')
into('libs/')
include('classes.jar')
rename('classes.jar', 'mylibrary.jar')
}
exportjar.dependsOn(deleteJar, build)
AndroidStudio에서 gradle 작업을 실행하는 경우 [More]
assembleRelease
//or
bundleReleaseAar
또는 터미널을 통해
./gradlew <moduleName>:assembleRelease
//or
./gradlew <moduleName>:bundleReleaseAar
다음에서 찾을 수 .aar
있습니다
<project_path>/build/outputs/aar/<module_name>.aar
//if you do not see it try to remove this folder and repeat the command
.aar
(Android Library) 파일은 .jar
(Java Library) 파일과 추가 Android 리소스로 구성됩니다. .aar
파일은 대체 할 수있는 이유입니다 AAR 확장자를 가진 압축 파일 .aar
로 .zip
또는 실행
unzip "<path_to/module_name>.aar"