Mindaugas
Mindaugas

Reputation: 1183

Force Gradle to use HTTP instead of HTTPS

I am trying to build react-native android app, as a dependecy I see I have gradle, but it fails to load on build. Error message:

* What went wrong:
A problem occurred configuring root project 'MobileApp'.
> Could not resolve all dependencies for configuration ':classpath'.
   > Could not resolve com.android.tools.build:gradle:1.3.1.
     Required by:
         :MobileApp:unspecified
      > Could not resolve com.android.tools.build:gradle:1.3.1.
         > Could not get resource 'https://jcenter.bintray.com/com/android/tools/build/gradle/1.3.1/gradle-1.3.1.pom'.
            > Could not GET 'https://jcenter.bintray.com/com/android/tools/build/gradle/1.3.1/gradle-1.3.1.pom'.
               > Connection to https://jcenter.bintray.com refused

The issue is clear, I am sitting behind corporate proxy that blocks any HTTPSconnections like these in error. So my questions are: how to force gradle to use HTTP in loading these files? Where these properties should be put(which of gradle files, i.e. gradle.properties)?

P.S. I already have set these in gradle properties file:

systemProp.http.proxyHost= myHost
systemProp.http.proxyPort= myPort
systemProp.http.proxyUser= myUser
systemProp.http.proxyPassword= myPassword

Any links, suggestions or etc. will help a lot.

Upvotes: 21

Views: 43506

Answers (4)

phyatt
phyatt

Reputation: 19112

Go into the gradle/wrapper folder nearby and edit the gradle-wrapper.properties

Then add in a the https to the distribution URL and it should work.

distributionUrl=https\://services.gradle.org/distributions/gradle-1.10-bin.zip
                    ^

Verify the file you are trying to grab is actually on the repo:

https://services.gradle.org/distributions/

Rerun your command to get the gradle wrapper version.

gradle wrapper
gradlew.bat wrapper -gradle-version="1.10"

Hope that helps.

Upvotes: -1

Sam
Sam

Reputation: 6395

replace jcenter() with jcenter { url "http://jcenter.bintray.com/"} in build.gradle

Upvotes: 11

Ahmad Aghazadeh
Ahmad Aghazadeh

Reputation: 17131

Try this

  • run a proxy like freegate

  • the root path project in cmd type

    gradlew -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=8580

File -> Settings -> Project Settings -> Gradle -> Global Gradle Settings -> Gradle VM Options

-Dhttp.proxyHost=myProxyAddr
-Dhttp.proxyPort=myProxyPort
-Dhttp.proxyUser=myUsername
-Dhttp.proxyPassword=myPasswd 
-Dhttp.auth.ntlm.domain=myDomainName

Upvotes: 0

mohamad mohsen Taheri
mohamad mohsen Taheri

Reputation: 504

I had same problem and fixed it.

gradle is forced to get dependencies from jcenter through https proxy.

if you add

maven { url "http://jcenter.bintray.com" }

in your repositories instead of jcenter(), gradle sees this repository as a simple maven repository with http proxy.

your project build.gradle should be like below:

buildscript {
    repositories {
        maven { url "http://jcenter.bintray.com" }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.3.1'
    }
}

allprojects {
    repositories {
        maven { url "http://jcenter.bintray.com" }
    }
}

Upvotes: 28

Related Questions