我编写的myLib
库使用Firebase
中的RemoteMessage
,应用程序本身也使用Firebase
。
使用Gradle4.7。在第4.4.1节中也面对这一点。
怎么修?
项目格拉德尔
buildscript {
repositories {
google()
jcenter()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.2'
classpath 'com.google.gms:google-services:3.3.0'
}
}
allprojects {
repositories {
google()
jcenter()
mavenCentral()
mavenLocal()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
app.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 27
defaultConfig {
applicationId "com.test.app"
minSdkVersion 19
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
dexOptions {
preDexLibraries = false
jumboMode = false
javaMaxHeapSize "2048M"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
productFlavors {
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.google.android.gms:play-services-gcm:12.0.1'
implementation 'com.google.android.gms:play-services:12.0.1'
implementation 'com.google.firebase:firebase-core:12.0.1'
implementation 'com.google.firebase:firebase-messaging:12.0.1'
implementation 'com.google.firebase:firebase-crash:12.0.1'
implementation project(":myLib")
}
apply plugin: 'com.google.gms.google-services'
迈里布。格拉德尔
apply plugin: 'com.android.library'
android {
compileSdkVersion 27
defaultConfig {
minSdkVersion 19
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation group: 'com.google.code.gson', name: 'gson', version: '2.8.2'
implementation 'com.j256.ormlite:ormlite-core:5.0'
implementation 'com.j256.ormlite:ormlite-android:5.0'
implementation 'com.google.firebase:firebase-messaging:12.0.1'
}
从testApp\myLib输出错误
project:myLib的多个变体与消费者属性相匹配:
配置“:myLib:debugapiements”变体android aidl:
- 找到工件类型“android aidl”,但不是必需的
- 必需的com.Android建筑应用程序编程接口。属性。BuildTypeAttr“debug”并找到兼容值“debug”
- 找到了com.Android建筑应用程序编程接口。属性。VariantTR“调试”,但不是必需的
- 必需的com.Android建筑格拉德尔。内部的附属国。AndroidTypeAttr'Aar'并找到兼容值'Aar'
- 所需组织。格拉德尔。使用“java api”并找到兼容值“java api”
- 找到artifactType'android类',但不是必需的。
- 需要com.android.build.api.attributes.BuildTypeattr调试并找到兼容值debug。
- 找到了com.android.build.api.attributes.Variantattr'debug',但不是必需的。
- 需要com.android.build.gradle.internal.dependency.AndroidTypeattr'Aar',并找到兼容值'Aar'。
- 需要org.gradle.usage'java-api'并找到兼容值'java-api'.
- 找到artifactType“android清单”,但不是必需的
- 必需的com.Android建筑应用程序编程接口。属性。BuildTypeAttr“debug”并找到兼容值“debug”
- 找到了com.Android建筑应用程序编程接口。属性。VariantTR“调试”,但不是必需的
- 必需的com.Android建筑格拉德尔。内部的附属国。AndroidTypeAttr'Aar'并找到兼容值'Aar'
- 所需组织。格拉德尔。使用“java api”并找到兼容值“java api”
- 找到artifactType'android-rendercript',但不是必需的。
- 需要com.android.build.api.attributes.BuildTypeattr调试并找到兼容值debug。
- 找到了com.android.build.api.attributes.Variantattr'debug',但不是必需的。
- 需要com.android.build.gradle.internal.dependency.AndroidTypeattr'Aar',并找到兼容值'Aar'。
- 需要org.gradle.usage'java-api'并找到兼容值'java-api'.
- 找到工件类型“jar”,但不是必需的
- 必需的com.Android建筑应用程序编程接口。属性。BuildTypeAttr“debug”并找到兼容值“debug”
- 找到了com.Android建筑应用程序编程接口。属性。VariantTR“调试”,但不是必需的
- 必需的com.Android建筑格拉德尔。内部的附属国。AndroidTypeAttr'Aar'并找到兼容值'Aar'
- 所需组织。格拉德尔。使用“java api”并找到兼容值“java api”
我在使用谷歌服务时遇到了这个错误:3.3.0。
降级到classpath'com.google.gms: google-service: 3.2.1'
在你的项目中。
它应该解决这个问题。
更新:它可能不会出现在当前版本中。
google服务
gradle插件是为与google Play服务和Firebase15
配合使用而设计的,但您使用的是版本12.0.1
。
解决办法是:
15
(请注意,它们现在有不同的版本)google服务
升级到3.3.0
,直到您升级到15
,也就是说,将gradle插件降级到版本3.2.1
编辑1:在多模块应用程序中使用google-service
3.3
存在已知问题。这意味着降级到google-service
到3.2.1
可能是您唯一的选择,直到发布修复错误的新版本。
编辑2:上面提到的错误已经在googleservices
gradle插件的4.0.1
版本中修复!(版本4.0.2
也修复了某些情况下出现的NPE)
顺便说一句,你应该转到FCM。GCM将在不久的将来停止工作。
问题内容: 我有一个JMS客户端,它正在生成消息并通过JMS队列发送到其唯一的使用者。 我想要的是不止一个消费者收到这些消息。我想到的第一件事是将队列转换为主题,以便现有用户和新用户都可以订阅并将相同的消息传递给他们。 显然,这将涉及在生产者和消费者方面修改当前的客户代码。 我还要查看其他选项,例如创建第二个队列,这样就不必修改现有的使用者。我相信这种方法有很多优点,例如(如果我错了,请纠正我)在
我正在创建一个系统,其中前端服务将消息推送到Kafka请求主题,并为一些下游后端消费者(实际上是一个最终推送回Kafka的复杂系统)监听另一个响应主题,以处理请求消息并最终推进到“回应”话题。 我试图找出最优雅的方法来确保消费者监听适当的分区并收到响应,并且后端推送到前端消费者正在监听的分区。我们总是需要确保响应到达产生初始消息的同一个消费者。 到目前为止,我有两种解决方案,但都不是特别令人满意的
TL;DR;我试图理解一个被分配了多个分区的单个使用者是如何处理reach分区的消费记录的。 例如: 在移动到下一个分区之前,会完全处理一个分区。 每次处理每个分区中的可用记录块。 从第一个可用分区处理一批N条记录 以循环旋转方式处理来自分区的N条记录 我找到了或分配程序的配置,但这只决定了使用者如何分配分区,而不是它如何从分配给它的分区中使用。 我开始深入研究KafkaConsumer源代码,#
由于消息需求的排序,我们有一个主题和一个分区。我们有两个消费者运行在不同的服务器上,具有相同的配置集,即groupId、consumerId和consumerGroup。即 1主题- 当我们部署消费者时,相同的代码会部署在两台服务器上。当消息到来时,我们会注意到两个消费者都在消费消息,而不是只有一个处理。让消费者在两台独立的服务器上运行的原因是,如果一台服务器崩溃,至少其他服务器可以继续处理消息。
我使用Change Feed处理器库(或者Azure Functions Cosmos DB trigger)来订阅集合更新。如何为同一个集合的提要设置多个独立的(非竞争的)消费者? 一种方法是使用多个租赁集合,例如,,等,但这有点浪费。 有没有办法只用一个租约集合就做到这一点?(例如,通过在某处指定消费者组名称,类似于事件中心处理器)
我有一个使用ActiveMQ的消息队列。web请求用persistency=true将消息放入队列。现在,我有两个消费者,它们都作为单独的会话连接到这个队列。使用者1总是确认消息,但使用者2从不这样做。 JMS队列实现负载平衡器语义。一条消息将被一个使用者接收。如果在发送消息时没有可用的使用者,它将被保留,直到有可以处理消息的使用者可用为止。如果使用者接收到一条消息,但在关闭之前没有确认它,那么该