此AVD已安装:

android studio版本3.6.3
我刚刚开始学习flutter over Android studio
fluter doctor -v输出正常:
[✓] Flutter (Channel stable, v1.17.0, on Mac OS X 10.15.3 19D76, locale en-IL)
• Flutter version 1.17.0 at /Users/haims/flutter
• Framework revision e6b34c2b5c (2 weeks ago), 2020-05-02 11:39:18 -0700
• Engine revision 540786dd51
• Dart version 2.8.1
[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
• Android SDK at /Users/haims/Library/Android/sdk
• Platform android-29, build-tools 29.0.3
• ANDROID_HOME = /Users/haims/Library/Android/sdk
• Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b4-5784211)
• All Android licenses accepted.
[✓] Xcode - develop for iOS and macOS (Xcode 11.4.1)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 11.4.1, Build version 11E503a
• CocoaPods version 1.9.1
[✓] Android Studio (version 3.6)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin version 45.1.1
• Dart plugin version 192.8052
• Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b4-5784211)
[✓] Connected device (1 available)
• Android SDK built for x86 • emulator-5554 • android-x86 • Android 10 (API 29) (emulator)
• No issues found!但是当我在Android Emulator上运行flutter_app示例时,抛出了这个异常,并为解决这个问题而苦苦挣扎了这么多时间,
异常输出:
Launching lib/main.dart on Android SDK built for x86 in debug mode...
Running Gradle task 'assembleDebug'...
Exception in thread "main" javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path
building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1946)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:316)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:310)
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1639)
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:223)
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:1037)
at sun.security.ssl.Handshaker.process_record(Handshaker.java:965)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1064)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1367)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1395)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1379)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
at sun.net.www.protocol.http.HttpURLConnection.followRedirect0(HttpURLConnection.java:2729)
at sun.net.www.protocol.http.HttpURLConnection.followRedirect(HttpURLConnection.java:2641)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1824)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:263)
at org.gradle.wrapper.Download.downloadInternal(Download.java:58)
at org.gradle.wrapper.Download.download(Download.java:44)
at org.gradle.wrapper.Install$1.call(Install.java:61)
at org.gradle.wrapper.Install$1.call(Install.java:48)
at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:65)
at org.gradle.wrapper.Install.createDist(Install.java:48)
at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:128)
at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:397)
at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:302)
at sun.security.validator.Validator.validate(Validator.java:262)
at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:324)
at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:229)
at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124)
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1621)
... 22 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141)
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126)
at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280)
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:392)
... 28 more
Exception: Gradle task assembleDebug failed with exit code 1我将非常感谢是谁解决了这个问题,并能够开始使用dart进行编码,因为现在已经有一个多星期的时间在为trubleshoow而苦苦挣扎,没有一个单独的代码编写
*在iOS模拟器上,flutter_app运行没有问题。
提前感谢!
发布于 2021-08-18 08:22:39
它对gradle-wrapper.properties很感兴趣。可能无法从分发url下载最新的gradle文件。请检查您的internet权限。
尝试将https更改为http distributionUrl=https://services.gradle.org/distributions/gradle-6.7-all.zip
发布于 2021-03-12 01:18:34
Flutter使用gradlew构建项目,并且您有自己签名的证书,这可能是由您的公司提供的导致问题的原因。
首先,尝试创建一个简单的android项目,并使用gradle从您的机器进行构建。这是为了测试在不使用gradlew的情况下,您是否可以很好地构建项目。
复制位于[JAVA_HOME]/jre/lib/security下的gradle JVM使用的cacerts
通过将以下内容添加到flutter项目中的gradle.properties,将其传递给gradlew:
systemProp.javax.net.ssl.trustStore=[PATH_TO_TRUST_STORE]
systemProp.javax.net.ssl.trustStorePassword=[PASSWORD] (by default changeit)要将证书添加到信任存储区,可以使用keytool命令,例如:
keytool -import -alias [ALIAS] -file [CERT_FILE] -keystore [TRUST_STORE]发布于 2020-05-18 03:22:01
查看您的错误“无法在sun.security.ssl.Alerts.getSSLException(Alerts.java:192)”上找到指向所请求目标的有效认证路径可能是几个问题之一,很可能通过将network_security_config.xml添加到您的项目并在manifest.xml中引用它来修复所有问题。
如果您要连接到使用自签名证书或需要中间证书的HTTPS服务器,您需要将CA证书添加到您的应用程序并在XML中指定它,或者您可以将您的应用程序配置为也信任用户安装的证书,并在您的设备上手动安装证书。
这些选项在https://developer.android.com/training/articles/security-config上进行了解释
如果您希望信任用户安装的证书,请将以下xml添加到您的应用程序:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
<certificates src="user" />
</trust-anchors>
</base-config>
</network-security-config>一般来说,iOS对此不那么挑剔。记住要将xml添加到Android子项目中,而不是Flutter项目中!
https://stackoverflow.com/questions/61854246
复制相似问题