Неожиданное исключение TLS с клиентом Google Pub/Sub в Kotlin/JavaAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Неожиданное исключение TLS с клиентом Google Pub/Sub в Kotlin/Java

Сообщение Anonymous »

Я пишу приложение для Android, которое использует Google pubsub, и соответствующий клиент уже написан на ходу.
Заранее простите меня, так как это мое первое приложение для Android и впервые. используя котлин. Я программировал на Java и вперед, поэтому, если что-то покажется вам явно неправильным, заранее извиняюсь.
Я просмотрел документацию, но застрял.
Проблема, с которой я столкнулся, связана с инициализацией клиента pubsub. Я считаю, что мои учетные данные в формате json подбираются вместе с моим проектом, темой и т. д. Проблема, с которой я сталкиваюсь, заключается в том, что я не считаю, что мне следует добавлять дополнительные зависимости к проекту, поскольку пример google pubsub не включает эти зависимости. Я не знаю, как далеко заходит эта кроличья нора, но я думаю, что пример Google должен работать «из коробки»:
Я имею в виду:
https:// cloud.google.com/pubsub/docs/publish-receive-messages-client-library#pubsub-client-libraries-java
Я не использую команду gcloud, но создал Credentials.json, и он отлично работает в моем приложении golang.
Относительные биты:
build.gradle.kts

Код: Выделить всё

android {
packagingOptions {
resources.excludes.add("META-INF/*")
}
}

dependencies {
implementation(libs.googlePubSub)
implementation(libs.grpc)
implementation(libs.tls)
}
app/src/main/res/raw/credentials.json
gradle/libs.versions.toml

Код: Выделить всё

[versions]
googlePubSub = "1.134.2"
grpc = "1.68.1"
tls = "2.0.69.Final"`

[libraries]
googlePubSub = { group = "com.google.cloud", name = "google-cloud-pubsub",    version.ref="googlePubSub"}
grpc = { group = "io.grpc", name = "grpc-netty", version.ref="grpc"}
tls = { group = "io.netty", name = "netty-tcnative-boringssl-static",   version.ref="tls"}
Проблема возникает здесь:

Код: Выделить всё

fun getPublisher(): Publisher {

return Publisher.newBuilder(getTopic()).setCredentialsProvider { credentials}.build()
}

fun getTopic(): TopicName {
val topic = TopicName.of(configuration.project, configuration.requestTopic)

val topicAdminSettings = TopicAdminSettings.newBuilder().setCredentialsProvider{ credentials }.build()

TopicAdminClient.create(topicAdminSettings).use { topicAdminClient -> topicAdminClient.createTopic(topic)}

return topic
}
Сначала я добавил библиотеку grpc, а затем библиотеку Borsssl, но это показалось мне неправильным. Самая последняя ошибка, которую я получаю (даже после добавления этой библиотеки скучного SSL):

Не удалось найти поставщика TLS ALPN; нет работающих netty-tcnative, Conscrypt или Jetty NPN/ALPN

Я должен отметить, что объекты конфигурации и учетных данных на данный момент заполнены правильно.
Я попробовал воспользоваться онлайн-документацией для Java-клиента Google pubsub и ожидал публикации сообщения. Я также сослался на пример проекта, но эти библиотеки устарели:
https://github.com/androidthings/weatherstation
РЕДАКТИРОВАТЬ #1:
Я обновил зависимости:

Код: Выделить всё

grpc-netty -> grpc-okhttp
и изменил упаковку:

Код: Выделить всё

resources.excludes.add("META-INF/*") -> resources.excludes.add("META-INF/INDEX.LIST") and resources.excludes.add("META-INF/DEPENDENCIES")
Ошибка, с которой я сейчас столкнулся, заключается в том, что приложение не подключено к Интернету. Он жалуется, что pubsub.googleapis.com еще не может быть разрешен на этом же компьютере, пинг разрешается по IP-адресу.
РЕДАКТИРОВАНИЕ № 2:
После дальнейшей отладки я вижу Мне нужно разрешение на доступ в Интернет.

Подробнее здесь: https://stackoverflow.com/questions/792 ... otlin-java
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»