티스토리 뷰
Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.
Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.
아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.
What does transitive = true in Gradle exactly do (w.r.t. crashlytics)?
Gradle에서 transitive = true란 무엇을 의미하며 (crashlytics와 관련해서), 정확히 무엇을 하는 것인가요?
문제 내용
What does Gradle transitive = true
do exactly? It is not clear from the Gradle documentation. This is in the context of compile
within build.gradle
. In my case I'm depending Android's crashlytics.
Gradle에서 transitive = true가 정확히 무엇을 하는지는 Gradle 문서에서 명확하지 않습니다. 이것은 build.gradle 내의 compile과 관련이 있습니다. 저는 Android의 Crashlytics를 사용하고 있습니다.
compile('com.crashlytics.sdk.android:crashlytics:2.2.2@aar') {
transitive = true;
}
Several Gradle docs (here and here) imply that "transitive" defaults to true. Yet removing transitive = true
results in transitive dependencies not being brought in (in particular KitGroup
).
여러 Gradle 문서 (여기와 여기)는 "transitive"가 기본적으로 true임을 시사합니다. 그러나 transitive = true를 제거하면 transitive 종속성 (특히 KitGroup)이 가져오지 않게 됩니다.
class file for io.fabric.sdk.android.KitGroup not found
The docs say it defaults to true, yet the actual behavior seems to be the opposite.
문서에서는 transitive가 true로 기본 설정되어 있다고 하지만 실제 동작은 그 반대로 보입니다.
I am running Gradle 2.2.1. Perhaps the behavior changed between 2.2 and 2.4?
저는 Gradle 2.2.1 버전을 실행하고 있습니다. 2.2와 2.4 사이에 동작 방식이 변경된 것일까요?
Edit: Related Transitive dependencies not resolved for aar library using gradle
편집: Gradle을 사용하여 aar 라이브러리의 의존성을 전이(transitive)로 해결하지 못하는 문제와 관련된 내용입니다.
높은 점수를 받은 Solution
You are using the @aar
notation.
It means that you want to download only the aar
artifact, and no transitive dependencies.
여러분은 @aar 표기법을 사용하고 있습니다. 이는 aar 아티팩트만 다운로드하고, 전이적 종속성은 다운로드하지 않겠다는 것을 의미합니다.
You can check Dependency management in Gradle in the official documentation. In particular:
공식 문서에서 Gradle의 의존성 관리를 확인할 수 있습니다. 특히 다음을 확인하세요.
An artifact only notation creates a module dependency which downloads only the artifact file with the specified extension. Existing module descriptors are ignored.
아티팩트만을 나타내는 표기법은 지정된 확장자를 가진 아티팩트 파일만 다운로드하는 모듈 의존성을 만듭니다. 기존 모듈 설명자는 무시됩니다.
Using the @aar
notation if you want to download the dependencies, you should add transitive=true
.
@aar 표기법을 사용하면 의존성을 다운로드하지 않고 aar 파일만 다운로드하려는 것을 의미합니다. 의존성도 함께 다운로드하려면 transitive=true를 추가해야 합니다.
I'd expect that omitting @aar it should work without adding the transitive attribute.
@aar 표기를 생략한다면, transitive 속성을 추가하지 않고도 작동할 것으로 예상됩니다.
가장 최근 달린 Solution
On a more general note: Setting transitive = false
on the crashlytics
library causes gradle to ignore all libraries required by crashlytics
(="transient libraries") and not download and link them.
일반적인 측면에서, crashlytics 라이브러리에서 transitive = false로 설정하면 gradle이 crashlytics에서 필요한 모든 라이브러리(즉, "전이적 라이브러리")를 무시하고 다운로드하거나 연결하지 않습니다.
You would have to either manually add the required libraries to your project or rely on other transient libraries added by other dependencies.
요구하는 라이브러리를 수동으로 프로젝트에 추가하거나, 다른 종속성에서 추가된 transient 라이브러리에 의존해야 합니다.
Default for gradle is transitive = true
.
Gradle의 기본 설정은 transitive = true 입니다.
Examples and full explanation here: http://www.devsbedevin.net/android-understanding-gradle-dependencies-and-resolving-conflicts/
예시와 상세한 설명은 여기를 참고해주세요:
출처 : https://stackoverflow.com/questions/31731014/what-does-transitive-true-in-gradle-exactly-do-w-r-t-crashlytics
'개발 > 안드로이드' 카테고리의 다른 글
외부 디렉토리에 있는 이미지 파일 이미지 뷰로 불러오기 (0) | 2023.01.26 |
---|---|
Fragment에서 inflate 중 "Duplicate ID, tag null, or parent id with another fragment" 오류 수정하기 (0) | 2023.01.25 |
텍스트뷰 왼쪽 드로어블을 프로그래밍 방식으로 설정하기 (0) | 2023.01.23 |
RecyclerView에서 WRAP_CONTENT 동작 오류 수정하기 (0) | 2023.01.23 |
LinearLayout에서 차일드 뷰들 사이에 프로그래밍 방식으로 패딩 주기 (0) | 2023.01.22 |