Android 아카이브 라이브러리(aar)와 표준 jar
Android 앱의 표준 빌드 시스템으로서 Gradle의 새로운 도입에 관한 기사를 읽고 있습니다.음, 표준 자바 개발에서 온 저는 보통 프로젝트를 구축하기 위해 jar 파일에 의존합니다.그러나 Android에는 다음과 같이 Windows OS의 dll 파일과 동일한 aar 패키지도 있는 것으로 보입니다.
첫째, Android 플랫폼에서는 애플리케이션 수준의 "공유 라이브러리"가 허용되지 않는다는 것을 깨달아야 합니다."기존" 프로그래밍 언어 플랫폼인 C, C++, Java에서는 런타임 라이브러리를 공유하는 메커니즘이 있습니다(예: Windows에서는 DLL, Unix에서는 DSO, Jar on JVM 등).그러나 Android에서는 Google 또는 단말기 제조업체가 아니면 이 작업을 수행할 수 없습니다(아래 각주 1 참조).애플리케이션 개발자로서 이것은 근본적인 제한이 될 수 있습니다.빌드 시 및 실행 시 모두 코드 공유 또는 재사용은 소프트웨어 엔지니어링 업무에서 매우 중요한 부분입니다.이것은 Android에서는 다소 어려운(불가능한 것이 아니라 단지 어려운) 한계입니다.
하지만 나는 이 개념에 대해 몇 가지 의심이 든다.개발자는 언제 응용 프로그램에 의존성을 포함시켜야 합니까?이 의존관계가 일부 SDK 최소 버전으로 강화되어 있습니까?
예를 들어, 한 프로젝트에서 COM 포트에 액세스하여 NDK가 미리 컴파일된 .so 라이브러리를 사용합니다.이 유틸리티를 공유하려면 aar를 작성해야 합니까?
AAR
이라는 게 더 요.Jar
Dll
에는 다음과 가 있습니다.
Dll
는 어플리케이션 할 수 에서는, 「 」로서 「 」가 됩니다.AAR
및 항아리는 앱에 포함되어 있습니다.
AAR
와 s의 비교Jar
s:
의 주요
Jar
a. a. a.AAR
라는 것이다.AAR
s s 。layouts, drawables
이를 통해 자급자족한 시각 컴포넌트를 훨씬 쉽게 만들 수 있습니다.를 , 같은 화면을 개 , "" " " " " " " " " " " " "Jar
클래스를 공유할 수는 있지만 레이아웃, 스타일 등은 공유할 수 없습니다.그래도 복제해야 합니다.★★★★★★★★★★★★★★★★AAR
모든 것이 1개의 깔끔한 패키지로 번들 되어 있습니다.
ㅇㅇㅇㅇㅇㅇㅇ,AAR
는 올바른 방향으로 나아가는 큰 단계입니다.
가 있었다.apk-lib
, s, 재는 、 s s 、 재 s 、 s s s s s 。AAR
가 훨씬 낫습니다.
"Jar와 AAR의 주요 차이점은 AAR에 레이아웃, 그리기 가능 등의 리소스가 포함되어 있다는 것입니다."는 JAR 파일 사양에 부합하지 않으므로 사실이 아닙니다.JAR 파일 사양에 따라 다음 작업을 수행합니다.
JAR 파일은 일반적인 ZIP 파일 형식을 기반으로 하는 파일 형식이며 많은 파일을 하나로 집약하는 데 사용됩니다.JAR 파일은 기본적으로 옵션의 META-INF 디렉토리를 포함하는 zip 파일입니다.
보시는 바와 같이 레이아웃, 드로잉 테이블 등의 리소스를 JAR 파일에 포함시키는 것을 금지하는 콘텐츠 제한은 없습니다.자세한 내용은 Java® 가상 머신 사양의 문서 5.3 "작성 및 로드"를 참조하십시오.
Android Archive Library(aar)와 표준 jar에 대한 질문입니다.정답은 사용하는 빌드 도구에 따라 달라집니다.
Android Studio를 빌드 도구(각각 프로젝트 주최자)로 사용하는 경우 *.aar 파일을 사용하여 Android 프로젝트 간에 캡슐화된 리소스를 공유하는 것이 좋습니다.AAR 파일 형식은 Android Studio 빌드의 일부이며, 여기에 있는 다른 코멘트에 설명되어 있듯이 사용자 인터페이스는 Android 라이브러리를 위한 aar 형식을 지원합니다.
그러나 Android Studio를 제외한 나머지 세계는 그 파일(artifact)이 무엇인지 알지 못합니다.예를 들어 Android 빌드가 Maven을 기반으로 하는 경우 리소스 공유를 위해 선호하는 파일은 jar가 됩니다. 왜냐하면 그것은 네이티브 Maven Java 프로젝트 아티팩트이고 표준 jar 파일에 넣을 수 있는 것은 제한이 없기 때문입니다.또한 새로운 컴포넌트와 함께 라이프 사이클 확장을 사용하여 Maven의 파일 형식을 설명하고 aar를 포함하는 방법도 있습니다.간단한 예는 여기를 참조하십시오.Maven의 새로운 패키지 유형을 작성하려면 어떻게 해야 합니까?
JAR 대 AAR
JAR
– Java 아카이브포함하다.class
리소스, Java " "
AAR
– Android ★★★★★★★★★.되어 있다classes.jar
AndroidManifest.xml, R.txt, proguard Android 련tt관. folder 가능 txt, res folder(folder, 값,, 값 t 、 t t t t t t t)입니다.
는 두 Android로 합니다.jar
★★★★★★★★★★★★★★★★★」aar
도서관 개발자로서 보통aar
Android 리소스 공유에 사용됩니다.그렇지 않으면 -jar
좀 더 가볍고 일반적인 방법으로 유물을 유통하는 것처럼요.
부터aar
포함하다jar
사용할[대략] 수 있다
차이점:
질문의 인용문은 현재와 전혀 공통점이 없다.물론 안드로이드에서는 외부 라이브러리를 사용할 수 있고 이용할 수 있는 라이브러리가 많습니다.각 애플리케이션이 필요한 모든 라이브러리를 번들해야 하지만 빌드 시 라이브러리를 재사용하는 것(정적 링크)은 문제가 되지 않습니다.
.aar
다르다.jar
그 이상도 이하도 아니다.jar
다르다.zip
어떤 종류의 콘텐츠를 기대해야 하는지에 대한 특정 개념이 있지만, 둘 다.jar
그리고..aar
대부분의 경우 컴파일된 클래스와 리소스를 포함합니다. .aar
는, 라이브러리가 Android 전용이며, 그러한 라이브러리에 합당한, 예상되는 구조를 가지고 있는 것을 특정하고 있습니다(음,.jar
또, 몇개의 기대되는 구조를 가지고 있습니다.
.aar가 Android Studio에서만 지원된다는 견해도 권장되지 않습니다.이러한 라이브러리는 Maven Central에 전개할 수 있으며 gradle 등의 툴은 @aar 접미사를 사용하여 참조할 수 있습니다.예를 들어 다음과 같습니다.
dependencies {
compile ('io.github.andviane:uncover:2.0.1@aar')
..
}
이 Maven 중앙 배치를 참조합니다.
가장 큰 차이점은 aar는 안드로이드 내부에 분할되어 있다는 것입니다.
Android Studio의 사용자 앱에서만 사용하는 앱이라면 aar를 사용하는 것이 좋습니다.
앱이 c/c++ 컴파일된 파일과 통신할 예정이라면 lib.so 파일 jar를 사용하는 것이 좋습니다.
쉽게 작업할 수 있는 요건에 따라 항아리 및 항아리를 사용하면 유연성이 향상됩니다.
안드로이드5 롤리팝에 대한 저의 지식입니다.새로운 버전인지 알 수 없습니다.
언급URL : https://stackoverflow.com/questions/23915619/android-archive-library-aar-vs-standard-jar
'programing' 카테고리의 다른 글
if(a - b < 0)와 if(a < b)의 차이 (0) | 2022.09.03 |
---|---|
@BeforeClass 및 상속 - 실행 순서 (0) | 2022.09.03 |
가변 매크로(변수 인수 수)를 만드는 방법 (0) | 2022.09.03 |
메이븐은 왜 그렇게 평판이 나쁜가요? (0) | 2022.09.03 |
maven build가 실패한 지점부터 시작할 수 있습니까? (0) | 2022.09.03 |