Я не могу подключиться к моему Chromecast Audio с помощью опубликованной в Play Store версии моего приложения, но я могу использовать версию с отладкой по USB на том же телефоне. Обе версии могут выходить в сеть, т.е. обе успешно находят IP-адрес устройства Chromecast.
Тот же телефон, Chromecast, сеть и код. Это просто APK/Bundle, опубликованный в Play Store, который не может подключиться.
В 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)
Очевидно, что мое приложение может получить доступ к сети, поскольку оно находит IP-адрес AVR/Chromecast Audio (192.168.100.109). Я также дал ему разрешение INTERNET в манифесте. Я также использую minifyEnabled true
и shrinkResources true
в моем файле build.gradle.
Я использую Java-API ChromeCast v2 для удобства, а не официальный SDK трансляции, если это имеет значение.
Обновлено: Решено. Это была опция minifyEnabled true
в файле build.gradle (Module: app)
(т.е. ProGuard), не нравившаяся библиотеке Java-API ChromeCast v2.
Спасибо. Хотя ничего полезного я там не увидел. Отладочная и опубликованная версии представляют собой один и тот же код. Тем не менее, работает только отладочная версия, которая загружается на мой телефон через USB из Android Studio.
Вы проверили ключи API? Потому что есть разница между релизной и отладочной версией
Спасибо. Мне не нужен ключ API. Все, что мне нужно было, это зарегистрироваться в Google и создать приложение Chromecast Receiver на их веб-сайте, а затем передать идентификатор приложения в объект Chromecast Java API v2 chromecast
. Мне кажется, что функции в библиотеке не могут получить доступ к сети на Опубликованной версии.
Отлично, дайте мне знать, чтобы опубликовать это как ответ
Это определенно minifyEnabled true
вызвало это. ProGuard не любит Java-API Chromecast v2, поэтому добавил исключения в мой файл proguard-rules.pro: -keep class su.litvak.chromecast.**
и -keepclassmembers class su.litvak.chromecast.** {*;}
благодаря принятому ответу на этот вопрос.
Включение опции minifyEnabled true
в файле build.gradle (Module: app)
было проблемой. ProGuard и библиотека Java-API ChromeCast v2 плохо работают вместе, поэтому нужно добавить исключения в файл proguard-rules.pro
, если вы хотите использовать опцию minifyEnabled:
-keep class su.litvak.chromecast.**
-keepclassmembers class su.litvak.chromecast.** {*;}
Большое спасибо за принятый ответ на этот вопрос пользователем случайный.