unable to find valid certification path to requested target拉不了包处理

2020年7月18日 关于拉不了依赖包的情况。终于是找到一个相对合适的解决方案了。

首先,我们下载的依赖包,都会放在

C:\Users\你的用户名\.gradle\caches\modules-2\files-2.1 文件夹下.

比如我的:

在这下面有很多依赖包。

举个栗子。假设as报错,提示无法下载aria-core-3.6.6.aar。但是有提供的连接,点开可以从浏览器正常下载。好的。那我们就从浏览器上下载下来放到桌面。这时候打开上面的目录。到files-2.1目录下。这时候需要一点小聪明了。在该目录下搜索aria

看搜索结果,比如aria-annotations这个文件夹,用脚指头想都知道肯定和aria-core有关联。找到aria-annotations的目录,并返回到他的上一级

如上图所示。注意这里你的文件夹可能没有aria-core这个文件夹哈。找到上图这个目录会后,如果没有aria-core文件夹。就自己手动创建一个。你缺的什么jar包,就用你下载下来的jar包名字命名这个文件夹。应该懂吧?模仿其他文件夹命名。

同理进去之后创建一个3.6.6的文件夹。为什么创建这个文件夹呢?首先要明白。as没法下载aria-core-3.6.6.aar。这个3.6.6就是下载下来jar包的版本。参考aria-annotations文件夹,他的下一级就是版本号。所以这里我们也创建一个版本号的文件夹。之后打开我们创建的3.6.6文件夹。

我们还需要创建一个文件夹

 这个文件夹的命名怎么做呢?

还记得我们在桌面下载下来的jar包吧。打开cmd。

输入:

certutil -hashfile jar包路径 SHA1

可以得到一个sha1值 

复制这个值。

回到我们刚刚的文件夹目录,就是3.6.6文件夹下,我们在创建一个文件夹,就拿复制的值命名。

然后把下载下来的jar包丢进去 。就完事了。

as点击sync now 或者重启as一下。就能运行起来了!!

 

 

下面的内容属于心路历程。仅供参考.上面的方法是一定可以的。之前弄kotlin也是用的这个方法。as无法下载kotlin相关依赖包。我也是手动放到目录里面去的。最大的问题就是需要一个一个的下载包。耗时。

2020年3月8日,我感觉这个问题我都可以连载了。。。。哈哈哈。在出现问题后,用旧方法各种尝试无果,介绍一下新方法,这算是这次最简单的处理方法了。之前我卸载重装,都是去的官网,这次我们换成中文社区那边下载:http://www.android-studio.org/ 我当前下载版本:(换成中文社区那边是因为官网3.6版本不是很喜欢。。。)

从中文社区那边下载的是可以跑起来的,原先是新建项目业报无法找到证书有效路径,xxxx包没下载问题。 

3月9日。就是第二天,又不行了、。、。

经过一番折腾可以了。我也不知道哪一步是关键的·。记录下处理的内容:

1、在C:\Users\Administrator\.gradle路径下,创建init.gradle

allprojects{
    repositories {
        def REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public/'
        all { ArtifactRepository repo ->
            def url = repo.url.toString()
            if ((repo instanceof MavenArtifactRepository) && (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com'))) {
                project.logger.lifecycle 'Repository ${repo.url} replaced by $REPOSITORY_URL .'
                remove repo
            }
        }
        maven {
            url REPOSITORY_URL
        }
    }
}

2、 在C:\Users\你的用户名\.gradle下

 图中最后那个文件打开,底部有加了:

systemProp.http.proxyHost=mirrors.neusoft.edu.cn
systemProp.http.proxyPort=80

3、去jcenter官网,下了个证书,然后加到as中,当然阿里云的那个也加了证书

4、修改gradle版本

 

 希望对你有帮助哈O(∩_∩)O哈哈~

 -------------------------------------------下面都是历史记录

2019-12-15,android studio版本3.5.3 。先说明一下,本篇文章最早是在10月份记录的,当时遇到的问题按照原来的方式确实解决了,但是后面又出现了这个问题,且一直无法解决,现在是最新的解决方案!!!!!而且!!!!我百度,google,stack overflow各种途径都看了,目前还没看到有又相同的方案。下面直接进入主题:

很多人说证书不被信任,手动导入证书就可以,确实是这样!!!但是,只看到了他们说导入证书jcenter那个网站的证书,我还增加了一份证书:https://services.gradle.org/就是这个网站的证书了!导入证书的方式可以看下本篇17号记录的内容。

新建项目后发现还是不行,请把版本等信息试试和我一样:

 注意:添加完新的证书后,我出现了单元测试包无法下载问题,更新下junit的版本就可以了.

【下面是从最早10月份开始的记录,重点看17号的记录,如何导入证书】

记录一次巨坑,花了一下午。坑死了啊!!!

Android studio打包的时候出现如下问题:

当时关注的重点是这里:

作为一名喜欢懒得搬砖工,自然喜欢直接百度了,然而很明显没有解决问题。 

 

看这句问题翻译是说没找到有效证书路径啊。顺着这个思路,找到了下面这两篇文章:

http://magicmonster.com/kb/prg/java/ssl/pkix_path_building_failed.html

https://www.java-samples.com/showtutorial.php?tutorialid=210

这两篇就是说怎么添加一个证书的,添加到哪里?

于是就跟着上面大佬的指示开始做了,最后发现证书格式一直提示不对,提示说所输入的不是 X.509 证书!!我去,当时在网页获取证书的时候,我都清清楚楚看了格式的,支持X.509格式!!!没办法,在百度找找看吧,

keytool 错误: java.lang.Exception: 所输入的不是 X.509 证书   

在上面这篇文章中,跟着把格式做了转换,最终折腾成功了!!也成功导入了证书,然而还是一样的报错。

 

看来不是证书问题了,回头继续看看错误的代码提示,

看着意思是那个xxx-26.4.1.jar包没拿到吗,点击链接直接就让我下载。那就乖乖下载了,我想既然could not get这个包,那我手动重新引入没问题吧?复制到lib包,引入到app的build.gradle中,再试一次,还是不行!!! 

再次百度瞅瞅问题,这次百度的方向就是xxx-26.4.1.jar包找不到。

跟着百度的做法,依然没解决。

其中什么google()必须在jceter()上面之类的,但是我原本就是在上面的,无效,

还有意思是说把下面删除了重新build?

还好我新创建了项目,这样依然无效。。

这期间无助的我尝试过重启,全局代理爬墙,设置无代理,卸载AS安装低版本3.2(这里是个坑!),降低gradle版本,重新设置一个签名,设置阿里镜像版本等等都无效果。

后面总结发现,自己新建的项目也会出现这个问题,并且项目都是可以连接真机跑起来的,打包成debug版本也是可以,唯独打包成release版本有问题,于是就朝着这方面百度。

最后看到了这里:

升级完Android Studio3.2后,打包release出现的错误 升级完Android Studio2.3后,打包release出现的错误

文章里面提到:

试着添加之后成功了!!!!O(∩_∩)O哈哈~不容易!

原来3.2以后都来这茬了! 

关于在build.gradle中配置lintOptions选项:

android {
    lintOptions {
        // true--关闭lint报告的分析进度
        quiet true
        // true--错误发生后停止gradle构建
        abortOnError false
        // true--只报告error
        ignoreWarnings true
        // true--忽略有错误的文件的全/绝对路径(默认是true)
        //absolutePaths true
        // true--检查所有问题点,包含其他默认关闭项
        checkAllWarnings true
        // true--所有warning当做error
        warningsAsErrors true
        // 关闭指定问题检查
        disable 'TypographyFractions','TypographyQuotes'
        // 打开指定问题检查
        enable 'RtlHardcoded','RtlCompat', 'RtlEnabled'
        // 仅检查指定问题
        check 'NewApi', 'InlinedApi'
        // true--error输出文件不包含源码行号
        noLines true
        // true--显示错误的所有发生位置,不截取
        showAll true
        // 回退lint设置(默认规则)
        lintConfig file("default-lint.xml")
        // true--生成txt格式报告(默认false)
        textReport true
        // 重定向输出;可以是文件或'stdout'
        textOutput 'stdout'
        // true--生成XML格式报告
        xmlReport false
        // 指定xml报告文档(默认lint-results.xml)
        xmlOutput file("lint-report.xml")
        // true--生成HTML报告(带问题解释,源码位置,等)
        htmlReport true
        // html报告可选路径(构建器默认是lint-results.html )
        htmlOutput file("lint-report.html")
        //  true--所有正式版构建执行规则生成崩溃的lint检查,如果有崩溃问题将停止构建
        checkReleaseBuilds true
        // 在发布版本编译时检查(即使不包含lint目标),指定问题的规则生成崩溃
        fatal 'NewApi', 'InlineApi'
        // 指定问题的规则生成错误
        error 'Wakelock', 'TextViewEdits'
        // 指定问题的规则生成警告
        warning 'ResourceAsColor'
        // 忽略指定问题的规则(同关闭检查)
        ignore 'TypographyQuotes'
    }
}

上面是来自https://blog.csdn.net/berber78/article/details/60766091 扒拉来的~

 

今天17号。停了几天代码,很快就不熟悉了,今天新建项目,又特么相同的错误!

 这次试用证书方式解决了。

第一步打开网站:https://bintray.com/bintray/jcenter

我是google浏览器,

第二步。点击下图中的证书。

第三步,跟着下图点就对了。

 

继续~别停。

 

选择Base63编码的 X.509(.cer)格式的,别选错了。

选个地方保存下,我就先放桌面了。

点击下一步完成。

 然后我把它放在了d盘,方便一会写目录而已。

下面管理员权限打开cmd

进入android\android\jre\jre\lib\security 文件夹下,这是你安安装android studio的文件夹里面

然后执行

keytool -import -alias abc -keystore cacerts -file D://abc.cer

库密钥口令输入:changeit

是否信任:Y

证书导入成功

查看证书,密钥仍然是changeit  下面是查看证书

keytool -list -keystore cacerts -alias abc

完成!重启as,完美了~   开心的飞起!

 

 

没错我又回来了!。10月28日,带着公司的源码回家,发现又出现了这个问题。唉,为什么我总是命运坎坷

啥也不说了,直接上我的解决方案吧。希望对你有帮助吧

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值