Android studio 带有android studio的新颤振应用程序无法在android emulator上运行-获取异常:线程中的异常;“主要”;javax.net.ssl.SSLHandshakeException:

Android studio 带有android studio的新颤振应用程序无法在android emulator上运行-获取异常:线程中的异常;“主要”;javax.net.ssl.SSLHandshakeException:,android-studio,flutter,Android Studio,Flutter,此AVD已安装: android studio版本3.6.3 我刚刚开始在Android studio上学习颤振 长笛医生-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-

此AVD已安装:

android studio版本3.6.3

我刚刚开始在Android studio上学习颤振

长笛医生-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上运行Flatter_应用程序示例时,抛出了这个异常,并且在没有修复该问题的情况下挣扎了这么长时间

异常输出:

 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编码, 因为现在有一个多星期的时间在与Trubleshow搏斗,没有编写任何代码

*在iOS模拟器上,Flatter_应用程序可以毫无问题地运行

提前谢谢

查看错误“无法找到请求目标的有效认证路径” 在sun.security.ssl.Alerts.getSSLException(Alerts.java:192)“可能有几个问题中的一个,所有这些问题都可以通过向项目中添加一个network\u security\u config.xml并在manifest.xml中引用来解决

如果要连接到使用自签名证书或需要中间证书的HTTPS服务器,则需要将CA证书添加到应用程序并在XML中指定,或者可以将应用程序配置为也信任用户安装的证书,并在设备上手动安装证书

有关选项的说明,请参见

如果要信任用户安装的证书,请将以下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项目中

查看错误“无法找到请求目标的有效认证路径” 在sun.security.ssl.Alerts.getSSLException(Alerts.java:192)“可能有几个问题中的一个,所有这些问题都可以通过向项目中添加一个network\u security\u config.xml并在manifest.xml中引用来解决

如果要连接到使用自签名证书或需要中间证书的HTTPS服务器,则需要将CA证书添加到应用程序并在XML中指定,或者可以将应用程序配置为也信任用户安装的证书,并在设备上手动安装证书

有关选项的说明,请参见

如果要信任用户安装的证书,请将以下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项目中

Flatter使用gradlew构建项目,并且您拥有自签名证书,可能是由您的公司提供的问题

首先,尝试创建一个简单的android项目,并使用gradle从您的机器上构建。这是为了测试在不使用gradlew的情况下,是否可以很好地构建项目

复制位于
[JAVA\u HOME]/jre/lib/security

通过将以下内容添加到颤振项目中的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]

Flatter使用gradlew构建项目,并且您拥有自签名证书,可能是由您的公司提供的

首先,尝试创建一个简单的android项目,并使用gradle从您的机器上构建。这是为了测试在不使用gradlew的情况下,是否可以很好地构建项目

复制位于
[JAVA\u HOME]/jre/lib/security

通过将以下内容添加到颤振项目中的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]