What’s the difference between implementation, api and compile in Gradle?

After updating to Android Studio 3.0 and creating a new project, I noticed that in build.gradle there is a new way to add new dependencies instead of compile there is implementation and instead of testCompile there is testImplementation. Example: implementation ‘com.android.support:appcompat-v7:25.0.0’ testImplementation ‘junit:junit:4.12’ instead of compile ‘com.android.support:appcompat-v7:25.0.0’ testCompile ‘junit:junit:4.12′ What’s the difference between them and … Read more