【问题标题】:Android Studio 3.0.1 gradle build pkix pathbuilding failedAndroid Studio 3.0.1 gradle build pkix 路径构建失败
【发布时间】:2017-12-06 15:46:26
【问题描述】:

我在 android studio 3.0.1 中创建了一个新项目,设置了公司的代理设置,并添加了自签名证书 unser 服务器证书。当我尝试构建时,会列出以下错误并且构建失败。

错误:

Unable to resolve dependency for ':app@debug/compileClasspath': Could not resolve com.android.support:appcompat-v7:26.1.0.

Could not resolve com.android.support:appcompat-v7:26.1.0.
Required by:
    project :app
 > Could not resolve com.android.support:appcompat-v7:26.1.0.
    > Could not get resource 'https://dl.google.com/dl/android/maven2/com/android/support/appcompat-v7/26.1.0/appcompat-v7-26.1.0.pom'.
          > Could not GET 'https://dl.google.com/dl/android/maven2/com/android/support/appcompat-v7/26.1.0/appcompat-v7-26.1.0.pom'.
                   > sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
                               > PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
                                              > unable to find valid certification path to requested target

有人可以帮我吗?

【问题讨论】:

标签: java android


【解决方案1】:

通过将我公司的自签名证书添加到 Android Studio 的 cacerts 文件中解决了这个问题。 cacerts 文件位于此处:C:\Program Files\Android\Android Studio\jre\jre\lib\security\cacerts

我还将 http/https 的代理详细信息添加到 gradle.properties。

【讨论】:

  • 你是怎么做到的?以及如何获得我的代理证书?
  • 只需将您公司的自签名证书添加到上面的指定路径或您安装android studio的位置。
  • 谢谢,我认为cacerts 是文件而不是文件夹。我会试试的
  • cacerts 当然是一个文件,只需使用例如打开(以管理员身份)它。 kestore explorer 并添加您的证书
  • 为我工作,谢谢 - 记住打开 cacerts 文件的默认密码是“changeit”,密钥库资源管理器的下载链接是 - keystore-explorer.org/downloads.html
【解决方案2】:

是的,我已经通过更改 WiFi 网络连接解决了这个问题。执行以下任何步骤 1.连接到其他或移动网络(使用热点)并重新连接到WiFi网络 2.在笔记本电脑中重置您的wifi网络

【讨论】:

    【解决方案3】:

    大声笑,我已通过在 Google Chrome 中打开错误信息 https://dl.google.com/dl/android/maven2/com/android... 中的第二个链接来解决此问题。然后它就像往常一样工作¯\_(ツ)_/¯

    【讨论】:

      【解决方案4】:

      有时只升级到最新的 gradle 包装器 (gradle-wrapper.properties) 和 gradle 插件 (main build.gradle -> buildscript -> dependencies -> com.android.tools.build:gradle) 会有所帮助。如果您正在加载多个项目并且您已经更新了其中一个,则尤其如此。我这样做了,突然我的“其他”项目不会同步/构建。更新它们也解决了这个问题。

      值得注意的是,我们公司确实有一个非常封闭的网络,其中有大量的流量嗅探和证书重写,因此这可能是问题的最初原因。即使将自签名证书添加到 Android Studio 的“已批准”证书列表中,在执行上述操作之前我仍然遇到问题。以前,我什至看到了在终端中构建(./gradlew assembleDebug,工作频率更高)和在 Android Studio 中构建(工作频率更低)之间的区别。

      【讨论】:

        【解决方案5】:

        让我们解决这个问题所以 转到 stack trace 并查看 stack tracefirst url,其中的问题与本文一样

        https://dl.google.com/dl/android/maven2/com/android/support/appcompat-v7/26.1.0/appcompat-v7-26.1.0.pom
        

        在您的浏览器中:但在此之前从您的网址中删除最后一个 .pom/filename.extension

        • 在 chrome 中 - 单击左侧 url 图标的站点(一般为lock icon)以在地址栏中添加地址,

        • 选择"Certificate" -> "Certification Path"->选择根节点,如"Corp-Prj-Root-CA"-> "View Certificate" -> "Details" -> "Copy to File...",并以"Der-encoded binary X.509(.CER)"的格式保存单个证书文件,命名为rootCertFile.cer

        • 现在您有了带有密钥库的文件,您必须将它添加到您的 JVM。确定cacerts 文件的位置,例如。 C:\Program Files (x86)\Java\jre1.6.0_22\lib\security\cacerts.

        • 或者在Project settings中查看你的android studio Java Path

        接下来将rootCertFile.cer文件导入cacerts

        解决方案1

        在命令行中使用keytool(需要以管理员命令提示符运行):

        keytool -import -alias example -keystore  "C:\Program Files (x86)\Java\jre1.6.0_22\lib\security\cacerts" -file rootCertFile.cer
        

        你会被要求输入密码,默认是changeit

        解决方案2

        您可以使用keyExplorer software以管理员身份运行并在其中打开yourjavapath-> jre->lib->security-> cacerts文件按照android studio路径

        • 默认会要求输入密码changeit然后输入

        • 单击"Import Trusted certificate" 图标或Tools 选项并给出上面保存的证书名称的路径rootCertFile.cer

        • 那么它会为alias name提供一些独特的名字然后按ok

        • 点击save icon

        • 还要确保代理设置如果来自公司依赖于证书那么证书我们也需要以同样的方式添加

        • 我们完成了delete android studio caches directory,现在在您的项目中尝试gradle sync

        【讨论】:

          【解决方案6】:

          我通过在 buildscript 标签下的 root build.gradle 中添加以下脚本代码解决了这个问题

          repositories {
                  maven {
                      url "https://jitpack.io"
                  }
                  maven {
                      url "https://raw.github.com/Raizlabs/maven-releases/master/releases"
                  }
                  maven {
                      url "http://oss.sonatype.org/content/repositories/snapshots"
                      allowInsecureProtocol = true
                  }
                  maven {
                      url "https://jcenter.bintray.com"
                      allowInsecureProtocol = true
                  }
                  maven {
                      url "https://plugins.gradle.org/m2/"
                  }
                  maven {
                      url "https://maven.google.com"
                  }
                  google()
                  jcenter()
              }
          

          关键是添加

          allowInsecureProtocol = true

          【讨论】:

            猜你喜欢
            • 2019-05-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-09-16
            • 2018-10-04
            • 1970-01-01
            • 2016-12-15
            • 1970-01-01
            相关资源
            最近更新 更多