Gradle compile
키워드는 api
및implementation
의존성을 구성하기 키워드를 .
사용 api
되지 않는 사용의 상응되는 compile
모든 교체 그렇다면, compile
함께api
모든 것이다 항상 작동합니다.
implementation
키워드 를 이해하려면 다음 예를 고려하십시오.
예
MyLibrary
내부적으로라는 다른 라이브러리를 사용 하는 라이브러리가 있다고 가정합니다 InternalLibrary
. 이 같은:
// 'InternalLibrary' module
public class InternalLibrary {
public static String giveMeAString(){
return "hello";
}
}
// 'MyLibrary' module
public class MyLibrary {
public String myString(){
return InternalLibrary.giveMeAString();
}
}
다음 과 같이 구성을 MyLibrary
build.gradle
사용 한다고 가정하십시오 .api
dependencies{}
dependencies {
api project(':InternalLibrary')
}
MyLibrary
코드에서 사용하려면 앱에서 build.gradle
다음과 같은 종속성을 추가하십시오.
dependencies {
implementation project(':MyLibrary')
}
은 Using api
구성 (또는 사용되지 않는 compile
당신은에 액세스 할 수 있습니다) InternalLibrary
응용 프로그램 코드에서 :
// Access 'MyLibrary' (granted)
MyLibrary myLib = new MyLibrary();
System.out.println(myLib.myString());
// Can ALSO access the internal library too (and you shouldn't)
System.out.println(InternalLibrary.giveMeAString());
이런 식으로 모듈 MyLibrary
은 잠재적으로 무언가의 내부 구현을 "누설"합니다. 직접 가져 오지 않기 때문에 사용할 수 없습니다.
implementation
구성이를 방지하기 위해 도입되었다. 그래서 지금 당신이 사용하는 경우 implementation
대신 api
에 MyLibrary
:
dependencies {
implementation project(':InternalLibrary')
}
InternalLibrary.giveMeAString()
더 이상 앱 코드 를 호출 할 수 없습니다.
권투 전략 이런 종류의 안드로이드 Gradle을가에서 당신이 편집 뭔가 경우 알고 플러그인 할 수 있습니다 InternalLibrary
, 그것은 단지의 재 컴파일 트리거해야 MyLibrary
하고 하지 액세스 권한이 없기 때문에, 전체 응용 프로그램의 재 컴파일 InternalLibrary
.
중첩 된 종속성이 많을 경우이 메커니즘으로 빌드 속도를 크게 높일 수 있습니다. (이것에 대한 완전한 이해를 위해 마지막에 링크 된 비디오를보십시오)
결론
당신이 3.XX 플러그인 새로운 안드로이드 Gradle을로 전환하면 모든 교체해야 compile
와 implementation
키워드 (* 1) . 그런 다음 앱을 컴파일하고 테스트하십시오. 모든 것이 괜찮다면 코드를 그대로 두십시오. 문제가 발생하면 종속성에 문제가 있거나 현재 비공개적이고 더 접근하기 어려운 것을 사용했습니다. 안드로이드 Gradle 플러그인 엔지니어 Jerome Dochez의 제안 (1 ) * )
라이브러리 관리자 인 경우 라이브러리 api
의 공용 API에 필요한 모든 종속성에 사용해야 implementation
하지만 최종 사용자가 사용해서는 안되는 테스트 종속성 또는 종속성에 사용해야합니다.
유용한 기사 구현 과 API 의 차이점을 보여주는
참조
(시간 절약을 위해 분할 된 동일한 비디오)
Google I / O 2017-Gradle 빌드 속도 향상 (전체 비디오)
Google I / O 2017-Gradle 빌드 속도 향상 (새로운 GRADELE PLUGIN 3.0.0 PART ONLY)
Google I / O 2017-Gradle 빌드 속도 향상 ( 1 * 참조 )
안드로이드 문서