Android Studio - 无法找到所请求目标的有效证书路径

时间:2014-11-02 07:44:17

标签: android gradle android-studio certificate

我收到此错误

Gradle 'project_name' project refresh failed: Unable to find valid certification path to requested target

在Android Studio 0.8.14 Mac OSX上创建新项目时

Build.gradle文件似乎变空了

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.13.2'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    } }

allprojects {
    repositories {
        jcenter()
    } }

我无法运行该项目,似乎我必须手动配置所有内容。

这是idea.log http://pastebin.com/kyhfrBp9

26 个答案:

答案 0 :(得分:53)

它发生在我身上,原来是因为 Charles Proxy

  

Charles Proxy 是一个HTTP调试代理服务器应用程序

解决方案(仅当您安装了Charles Proxy时):

  1. 关闭Charles Proxy;
  2. 重启Android Studio。

答案 1 :(得分:21)

对我来说问题是android studio无法与之建立联系 'https://jcenter.bintray.com/'

将此更改为'http'为我解决了问题(虽然不建议这样做。)

在build.gradle文件中,更改

repositories {
   jcenter()
}

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

答案 2 :(得分:17)

好的,可能我迟到了但是从3.0升级到3.0.1后我遇到了这个问题。 而这个问题是因为我在受限制的网络中工作。

对我有用的解决方案如下:

<强>解决方案

第1步:获取证书

jcenter()等于https://bintray.com/bintray/jcenter

您需要将导入jcenter的cerficate导入到您的java密钥库中。

使用浏览器访问jcenter并将证书导出为.cer文件。 (Firefox地址栏左侧的锁定图标或Chrome开发人员工具安全选项卡。但Internet Explorer和Edge不支持保存网站证书。)

第2步:导入证书 在Android Studio中,转到File -> Settings -> Tools -> Server Certificates

接受证书下,点击+。选择导出的证书。

第3步:刷新密钥库在Android Studio中,转到File -> Invalidate Caches/Restart...。从显示的消息框中选择Invalidate and Restart

答案 3 :(得分:17)

如果您在受限制的工作场所工作,您可能会遇到此问题

一些事情的组合对我有用 基本上将https更改为http

来自https:

ERR_TOO_MANY_REDIRECTS

致:

Uploading artifacts...
storage/logs/lumen.log: found 1 matching files     
Uploading artifacts to coordinator... ok            id=1444 responseStatus=201 Created token=MHYPxxWu

并在repositories { jcenter() } ..

来自:

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

致:

gradle-wrapper.properties

然后

    distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip

验证:检查您的Gradle控制台。它应该开始通过HTTP从jcenter下载libs。

答案 4 :(得分:13)

即使这个问题很老,但很多人必须面对同样的问题,所以我想说明我是如何解决这个问题的。

问题是classpath 'com.android.tools.build:gradle:0.13.2' 通过build.gradle中的上一行,您要求它找到特定版本的gradle,但此版本不在您的计算机中。将上述行更改为

的最佳方法
classpath 'com.android.tools.build:gradle:+'

答案 5 :(得分:10)

jcenter()等于https://bintray.com/bintray/jcenter

您需要将导入jcenter的cerficate导入到您的java密钥库中。

步骤:

  1. 使用浏览器访问jcenter 并将证书导出为.crt文件。 (Firefox左侧的锁定图标 地址栏或Chrome开发者工具安全标签)
  2. 下载 this工具并运行它。
  3. 选择&#34;打开现有的KeyStore&#34;按键 要打开JDKPATH / jre / lib / security / cacerts,密码是&#34; changeit&#34;
  4. 使用&#34;导入可信证书&#34;按钮导入.crt文件,然后保存并存在
  5. 如果您落后于代理,请在 gradle.properties 中,除了设置

    systemProp.http.proxyHost systemProp.http.proxyPort

    也设置

    systemProp.https.proxyHost systemProp.https.proxyPort

    到现在为止应该没事。

答案 6 :(得分:5)

我在具有代理/防火墙/病毒扫描程序组合的企业环境中,将公司自己的SSL根证书(自签名)添加到每个SSL连接的信任路径,以调查SSL连接。这正是问题所在。如果你处于相同的情况,这个解决方案可以提供帮助:

  1. 在浏览器中打开https://jcenter.bintray.com(我更喜欢Firefox)
  2. 单击挂锁symbold以检查已认证的信任路径。如果树中的顶级/根证书是由公司签名的证书,则将其导出到您的硬盘。
  3. 要安全地导出中间的每个证书
  4. 使用密钥&#34; changeit&#34; Keystore Exlorer在路径 JDKPATH / jre / lib / security / cacerts 中打开Android Studio的信任库>
  5. 将导出的证书从您公司的根证书开始导入trusstore,然后执行步骤6.在大多数情况下,这将完成。如果没有,请逐步导入其他证书。
  6. 保存信任库
  7. 使用&#34;文件 - &gt;退出Android Studio使高速缓存/重新启动失效&#34;

答案 7 :(得分:4)

对我而言,这是我的互联网,我正在开发限制网络

答案 8 :(得分:3)

尝试更新您的Android Studio,现在是版本1.0.2

答案 9 :(得分:3)

对我来说似乎是一个错误。 我遇到了同样的问题,并通过在我的项目目录中手动启动gradlew.bat来解决它。

答案 10 :(得分:2)

“无法找到到所请求目标的有效认证路径”

如果收到此消息,则可能是在您公司的Proxy后面,该代理可能正在使用公司根CA证书对所有请求证书进行签名,因此该证书仅在公司内部受信任,因此Android Studio无法验证任何证书签名并带有有效的公司证书,因此,您需要告诉Android Studio信任您的公司证书,您可以通过将公司证书添加到Android Studio信任库中来做到这一点。

(我在macOS上执行此操作,但在Linux或Windows上应该与此类似)

  • 首先,您需要将公司的根CA证书另存为文件:您可以向您的IT部门索取该证书,或者自己下载它,方法如下。打开浏览器并打开此URL,例如https://jcenter.bintray.com/https://search.maven.org/,单击 锁定 图标,然后单击 < strong>显示证书

enter image description here

在弹出窗口中,要将根证书另存为文件,请确保选择证书链的顶层(根证书)并将证书映像拖到磁盘驱动器上的文件夹/目录中。它应另存为文件,例如: my-root-ca-cert.cer my-root-ca-cert.pem

enter image description here

  • 第二,让我们将此证书添加到Android Studio接受的服务器证书中:

在Android Studio上,打开Preferences -> Tools -> Server Certificates, 在框Accepted certificates上单击加号图标(+),搜索您之前保存的证书,然后单击ApplyOK

enter image description here

  • 第三,您需要将证书添加到Android Studio JDK信任库(Gradle使用此JDK来构建项目,因此很重要):

在Android Studio中打开File -> Project Structure -> SDK Location -> JDK Location

enter image description here

复制“ JDK位置”的路径,然后打开“终端”,然后将目录更改为该路径,例如,执行:

cd /Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home/

(请不要忘记将空白换成“ \”)

现在,要将证书导入到信任库,请执行:

./bin/keytool -importcert -file /path/to/your/certificate/my-root-ca-cert.cer -keystore ./jre/lib/security/cacerts -storepass changeit -noprompt
  • 最后,重新启动Android Studio,或者最好单击File -> Invalidate Caches / Restart

完成,您现在应该可以构建您的项目。

答案 11 :(得分:2)

今天,在升级到Android Studio 3.2 Beta 2之后,我遇到了这个问题。我为OpenJDK 10.0.1配置了我的JDK,并且在升级后抛出了此错误。我将JDK重新设置为使用嵌入式JDK,错误消失了。enter image description here

我不知道为什么在升级到Beta 2之前它能正常工作,但是现在一切都很好。老实说,我想不需要Android的OpenJDK 10。

答案 12 :(得分:1)

转到右下方的Gradle控制台并打开它。在这里,您将看到一些https / https调用点击链接并在Web浏览器中打开它们然后尝试干净的构建它对我有用。

我认为这种情况正在发生,因为工作室无法从点击中获得响应。

答案 13 :(得分:1)

我的公司让我们使用了FortiClient VPN,这导致了此错误的发生。

尝试断开与VPN的连接(如果适用),然后重试。

答案 14 :(得分:1)

使用NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); // The id of the channel. String id = "xxx"; // The user-visible name of the channel. CharSequence name = "xxx"; // The user-visible description of the channel. String description = "xxx"; int importance = NotificationManager.IMPORTANCE_DEFAULT; NotificationChannel mChannel = new NotificationChannel(id, name, importance); // Configure the notification channel. mChannel.setDescription(description); mChannel.enableLights(true); // Sets the notification light color for notifications posted to this // channel, if the device supports this feature. mChannel.setLightColor(Color.RED); mChannel.enableVibration(true); mChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400}); mNotificationManager.createNotificationChannel(mChannel); mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); // The id of the channel. String CHANNEL_ID = "xxx"; // Create a notification and set the notification channel. Notification notification = new Notification.Builder(this,"xxx") .setSmallIcon(R.drawable.volusha_notifications) .setContentText(text) .setChannelId(CHANNEL_ID) .setContentIntent(pendingIntent) .setContentTitle(title) .setAutoCancel(true) .build(); // Issue the notification. mNotificationManager.notify(new Random().nextInt(), notification); &amp;升级到Android Studio 3.1.2后,我遇到了类似的错误gradle 4.4,然后尝试了几乎所有上述解决方案,并再次生成相同的错误。试。

plugin 3.1.2终于帮了我一个忙:Invalidate Caches / Restart&gt; File&gt; Invalidate Caches / Restart...

答案 15 :(得分:1)

在build.gradle文件中正确添加最新的gradle版本,在gradle-wrapper.properties文件中添加最新的distributeUrl。 [请参考https://developer.android.com/studio/releases/gradle-plugin.html获取android studio的最新gradle版本]

确保网络连接正常[网络连接不应阻止在android studio中升级gradle]。 在gradle升级后,android studio会提示接受/拒绝证书,我们应该接受证书。

答案 16 :(得分:1)

我得到了它,因为我在代理人后面。我在gradle.properties中设置了http而不是https代理。在这种情况下需要Https:

systemProp.http.proxyHost=<host>
systemProp.http.proxyPort=<port>
systemProp.https.proxyHost=<host>
systemProp.https.proxyPort=<port>

另外,请查看Android Studio日志,了解错误的位置。

答案 17 :(得分:0)

如果问题仍然存在,请尝试删除“ C:\ Users \ UserName \ .AndroidStudio1.2 ”下的名为“ .AndroidStudio1.2 ”的目录。 / p>

当然,根据您的版本

,名称会有所不同

这对我有用

答案 18 :(得分:0)

有时会因网络问题而发生,请尝试

  1. 更改您的连接,然后重试......
  2. 更改为无限制网络后,请尝试[卸载android studio]并再试一次..

    [卸载android studio]:How to completely uninstall Android Studio from windows(v10)?

答案 19 :(得分:0)

通常会在您包含依赖项并且没有像mavenCentral()或jcenter()等存储库引用来下载它时发生

我通常会确定这样的依赖关系被设置为脱机工作,Android工作室将自动显示本地不可用的依赖关系,然后在其提供者github页面中查找依赖关系详细信息,例如从哪个存储库中选择和更新你的存储库并沉没它。希望它能起作用

答案 20 :(得分:0)

我遇到了同样的问题,这是由于Cyber​​oam阻止了我的后续网址

原因:org.gradle.api.resources.ResourceException:无法从https://maven.fabric.io/public/io/fabric/tools/gradle/maven-metadata.xml加载Maven元数据。

答案 21 :(得分:0)

我更改(更新)了我的gradle版本,并且可以正常工作 表格

classpath 'com.android.tools.build:gradle:3.1.4'

收件人

classpath 'com.android.tools.build:gradle:3.3.0'

答案 22 :(得分:0)

检查系统中的诸如fiddler之类的代理应用程序,如果该应用程序正在运行,请关闭该应用程序并重新启动android studio

答案 23 :(得分:0)

由于这是由网络配置错误引起的,因此您只需将智能手机设置为使用 USB 网络共享共享其互联网连接并使用它下载丢失的软件包。

答案 24 :(得分:-1)

这是我的消息关键短语解决方案:“无法找到有效的认证路径”和“ PKIX路径构建失败”。

当找不到SSL认证文件时,将显示这些短语。

在浏览器中打开https://jcenter.bintray.com/并以cer格式导出证书。

将证书放入Android Studio的cert文件夹

{your-home-directory}/.AndroidStudio3.0/system/tasks/cacerts

然后一切顺利。

答案 25 :(得分:-2)

这太奇怪了。我们挣扎了很多。重新启动工作机后问题消失了。魔术...