Заранее простите меня, так как это мое первое приложение для 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)
}
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
}
Не удалось найти поставщика 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")
РЕДАКТИРОВАНИЕ № 2:
После дальнейшей отладки я вижу Мне нужно разрешение на доступ в Интернет.
Подробнее здесь: https://stackoverflow.com/questions/792 ... otlin-java
Мобильная версия