当前位置: 首页 > 知识库问答 >
问题:

android应用程序中Firebase BOM(firebae-pref)与protobuf一起使用时的类重复问题

司允晨
2023-03-14
dependencies {

    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    implementation 'androidx.core:core-ktx:1.3.2'
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'com.google.android.material:material:1.3.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'

    implementation platform('com.google.firebase:firebase-bom:26.6.0')
    implementation "com.google.firebase:firebase-appindexing"
    //implementation "com.google.firebase:firebase-database:19.2.0"
    implementation 'com.google.firebase:firebase-database-ktx'
    implementation "com.google.firebase:firebase-auth"
    implementation "com.google.firebase:firebase-analytics"
    implementation ("com.google.firebase:firebase-perf")
    implementation 'com.google.code.gson:gson:2.8.6'
    implementation "com.google.protobuf:protobuf-lite:3.0.1"
}

protobuf {
    protoc {
        // You still need protoc like in the non-Android case
        artifact = 'com.google.protobuf:protoc:3.7.0'
    }
    plugins {
        javalite {
            // The codegen for lite comes as a separate artifact
            artifact = 'com.google.protobuf:protoc-gen-javalite:3.0.0'
        }
    }
    generateProtoTasks {
        all().each { task ->
            task.builtins {
                // In most cases you don't need the full Java output
                // if you use the lite output.
                remove java
            }
            task.plugins {
                javalite { }
            }
        }
    }
}

sourceSets{
    main.java.srcDirs += "${protobuf.generatedFilesBaseDir}/main/javalite"
}

尝试注释
实现“com.google.protobuf:protobuf-lite:3.0.1”并使用实现“com.google.protobuf:protobuf-javalite:3.14.0”

也没起作用。可以建议任何工作周围,以便我可以使用更新的火药,以及保持原使用完整。

共有1个答案

田谦
2023-03-14

becase protobuf-lite:3.0.1和protobuf-javalite:3.14.0都有一个名为com.google.protobuf.AbstractMessagelite的类。但是类代码彼此不兼容。以下是一些区别:

在Javalite:3.14.0AbstractMessageLite中有一个接口

protected interface InternalOneOfEnum {
    int getNumber();
}

但是Protobuf-Lite:3.0.1中的AbstractMessageLite没有这个接口。

 类似资料:
  • 我有一个SpringBoot应用程序,它运行默认的嵌入式tomcat(带有TomcatJDBC连接池)。这是生产和运行良好。我使用mysql作为我的数据库。 我现在正在我的测试环境中做一些压力测试,并试图看看如果我从嵌入式Tomcat切换到嵌入式Undertow,我是否会得到任何明显的好处。人们声称通过这样做可以显著提高吞吐量,这是由于潜在请求处理的异步性质。 我知道如何排除tomcat并将und

  • 在我的脚本中使用xpath有问题。当我使用Appium检查器使用xpath“//android.widget.textView[@text='My Messages']”定位和元素时,检查器没有任何问题地定位它。但是当我试图在代码中使用xpath时 我收到一条错误消息,上面写着 noSuChelementException:无法使用给定的搜索参数在页面上找到元素。(警告:服务器未提供任何堆栈跟踪信

  • 与普通应用程序相比,Android adb shell具有额外的权限。例如,它可以访问所有或大多数/proc子目录。如何像普通应用程序一样使用权限运行shell?

  • 我正在android实现中使用grpc和protobuf lite。但是protobuf lite没有谷歌时间戳,而我的protos有导入“google/protobuf/timestamp.proto”。所以我将实现'com.google.protobuf:protobuf-java:3.7.1'添加到包含google时间戳的gradle中。但在此之后,代码编译会出现错误。例如:在模块proto

  • 在我开发一个小型android应用程序的过程中,我遇到了一个问题,即使应用程序被用户终止,也无法运行警报管理器。当应用程序在前台或后台运行时,一切都很好。 我已经完成了follwing步骤: AndroidManifest.xml MainActivity.java在一个按钮的OnClick方法中,我称之为 x是类范围的vsisible变量 `public void startAlert(long

  • 我正在尝试让一个简单的HTTP控制台应用程序作为Azure服务应用程序运行。它所做的只是在连接时返回OK。它在我的笔记本电脑上运行良好,我可以使用VS2019发布到Azure ok。问题是用于监听的前缀。 在我的笔记本电脑上,我可以使用超文本传输协议://: 80/; https://: 443/,但在Azure中,我得到一个错误:[例外]访问被拒绝。 本文https://github.com/p