What is gradle sync in Android Studio?

What is it? And what does it do?

Gradle sync is a gradle task that looks through all of your dependencies listed in your build.gradle files and tries to download the specified version.

dependencies {
     compile '...your dependency...'
}

Why does it needs internet connection? What ports does it use?

It requires an internet connection because it is usually downloading these dependencies from a remote location. You can define what ports it uses by changing your gradle.properties. (see below)

I'm working on an enterprise that has a proxy, and it fails trying to connect to somewhere.

Your work proxy may be blocking this and you'll need to add your proxy configuration to solve your issues.

Go into:

File-->Settings--> Android Studio Preferences --> Appearance & Behavior / System Settings/ HTTP Proxy

and update your proxy configuration url to your work proxy. (automatic or manual depending on your setup).

NOTE: If you are using the command line to run your gradle build, you will probably need to update the proxy settings via your gradle.properties file.

Global Properties File Location : ~/.gradle/gradle.properties (or use your local project file if you have one)

Add proxy settings to this file:

HTTPS

systemProp.https.proxyHost=<proxy host>
systemProp.https.proxyPort=<your proxy port>
systemProp.https.nonProxyHosts=<your non-proxy host>
systemProp.https.proxyPassword=<your pw>

HTTP

systemProp.http.proxyHost=<proxy host>
systemProp.http.proxyPort=<your proxy port>
systemProp.http.nonProxyHosts=<your non-proxy host>
systemProp.http.proxyPassword=<your pw>

If you absolutely cannot get an internet connection via gradle you'll need to download the dependencies another way and reference them locally on your computer or local network.

(See this guide for using local jars)


It needs internet connection to download dependencies


What is it?

I believe it's an IntelliJ/Android Studio term for these Gradle tasks:

  1. dependencies
  2. build

Gradle itself doesn't have "sync" task.

I use the term "believe" since there's no explanation from Gradle/IntelliJ/Android Studio official documentation 😂

And what does it do? Sync is a phase where the IDE preparing everything, including downloading your dependencies.

When the sync is finished, the user can start coding.

When the sync fails, the IDE is not working properly. The user need to spend time to fix the configuration first.

After Gradle finished syncing, the IDE start another task, like indexing.

Gradle: Build...
Gradle: Configure projects...
Indexing...

I'm working on an enterprise that has a proxy, and it fails trying to connect to somewhere. Why does it needs internet connection? What ports does it use?

Answered above.

Bonus: How to speed up sync

Before opening the project using Android Studio/IntelliJ, open the project using terminal and run the gradle tasks.

cd myproject
./gradlew app:dependencies module:dependencies
./gradlew build

After that, open the project. The sync should be much faster now (since you've downloaded the dependencies in terminal).