【发布时间】:2019-05-29 09:04:29
【问题描述】:
我无法使用 Play 商店发布的应用程序版本连接到我的 Chromecast Audio,但我可以在同一部手机上使用 USB 调试版本。两个版本都可以上网,即都成功找到了Chromecast设备的IP地址。
相同的手机、Chromecast、网络和代码。只是 Play 商店发布的 APK/Bundle 无法连接。
在我看到的 Logcat 中:
2019-05-27 11:05:12.753 9203-9370/? W/System.err: java.net.ConnectException: failed to connect to /192.168.100.109 (port 8009) from /:: (port 0): connect failed: ENETUNREACH (Network is unreachable)
2019-05-27 11:05:12.753 9203-9370/? W/System.err: at libcore.io.IoBridge.connect(IoBridge.java:138)
2019-05-27 11:05:12.753 9203-9370/? W/System.err: at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:129)
2019-05-27 11:05:12.753 9203-9370/? W/System.err: at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:357)
2019-05-27 11:05:12.753 9203-9370/? W/System.err: at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:201)
2019-05-27 11:05:12.753 9203-9370/? W/System.err: at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:183)
2019-05-27 11:05:12.753 9203-9370/? W/System.err: at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:356)
2019-05-27 11:05:12.753 9203-9370/? W/System.err: at java.net.Socket.connect(Socket.java:616)
2019-05-27 11:05:12.753 9203-9370/? W/System.err: at com.android.org.conscrypt.OpenSSLSocketImpl.connect(OpenSSLSocketImpl.java:263)
2019-05-27 11:05:12.754 9203-9370/? W/System.err: at com.android.org.conscrypt.OpenSSLSocketImpl.connect(OpenSSLSocketImpl.java:250)
2019-05-27 11:05:12.754 9203-9370/? W/System.err: at f.a.a.a.a.y.connect(Unknown Source:55)
2019-05-27 11:05:12.754 9203-9370/? W/System.err: at f.a.a.a.a.y.d(Unknown Source:4)
2019-05-27 11:05:12.754 9203-9370/? W/System.err: at f.a.a.a.a.z.a(Unknown Source:28)
2019-05-27 11:05:12.754 9203-9370/? W/System.err: at f.a.a.a.a.z.j(Unknown Source:5)
2019-05-27 11:05:12.754 9203-9370/? W/System.err: at f.a.a.a.a.z.e(Unknown Source:0)
2019-05-27 11:05:12.754 9203-9370/? W/System.err: at [my app's name].j.e(Unknown Source:29)
2019-05-27 11:05:12.754 9203-9370/? W/System.err: at [my app's name].j.b(Unknown Source:0)
2019-05-27 11:05:12.754 9203-9370/? W/System.err: at [my app's name].f.run(Unknown Source:3)
2019-05-27 11:05:12.754 9203-9370/? W/System.err: at java.lang.Thread.run(Thread.java:784)
2019-05-27 11:05:12.754 9203-9370/? W/System.err: Caused by: android.system.ErrnoException: connect failed: ENETUNREACH (Network is unreachable)
2019-05-27 11:05:12.754 9203-9370/? W/System.err: at libcore.io.Linux.connect(Native Method)
2019-05-27 11:05:12.754 9203-9370/? W/System.err: at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:126)
2019-05-27 11:05:12.754 9203-9370/? W/System.err: at libcore.io.IoBridge.connectErrno(IoBridge.java:152)
2019-05-27 11:05:12.754 9203-9370/? W/System.err: at libcore.io.IoBridge.connect(IoBridge.java:130)
显然,我的应用可以访问网络,因为它找到了 AVR/Chromecast Audio 的 IP 地址 (192.168.100.109)。我还在清单中给了它 INTERNET 权限。我还在 build.gradle 文件中使用了 minifyEnabled true 和 shrinkResources true。
为了方便,我使用ChromeCast Java API v2,而不是官方的Cast SDK,如果这有什么不同的话。
编辑:已解决。这是build.gradle (Module: app) 文件(即ProGuard)中的选项minifyEnabled true 不喜欢ChromeCast Java API v2 库。
【问题讨论】:
-
谢谢。我在那里看不到任何有用的东西。调试版和发布版都是完全相同的代码。然而,唯一有效的是调试版本,它通过 USB 从 Android Studio 加载到我的手机上。
-
检查你的 api 密钥了吗?因为release版本和debug版本是有区别的
-
谢谢。我不需要 API 密钥。我只需要在 Google 上注册并在他们的网站上创建一个 Chromecast Receiver 应用程序,然后将应用程序 ID 传递给 Chromecast Java API v2
chromecast对象。在我看来,库中的函数在发布版本上无法访问网络。 -
太好了,让我知道将其发布为答案
标签: java android google-play proguard