我正进入(状态
“程序类型已经存在:com.google.protobuf.AbstractMessageLite$Builder$LimitedInputStream”运行时错误。我尝试使用 multidix 并且还引用了更多链接,但仍然没有得到任何解决方案。
这是因为在 protobuf lite 和 protobuf jar 文件中作为同一个类。我的依赖是,
protobuf {
protoc {
artifact = 'com.google.protobuf:protoc:3.6.1'
}
plugins {
grpc {
artifact = 'io.grpc:protoc-gen-grpc-java:1.0.0-pre2'
}
javalite {
artifact = 'com.google.protobuf:protoc-gen-javalite:3.0.0'
}
}
generateProtoTasks {
all()*.plugins {
javalite {}
}
ofNonTest()*.plugins {
grpc {
// Options added to --grpc_out
option 'lite'
}
}
}
}
dependencies {
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support:design:27.1.1'
implementation 'com.android.support:multidex:1.0.3'
// GRPC dependencies
implementation 'javax.annotation:javax.annotation-api:1.3.2'
implementation 'io.grpc:grpc-protobuf-lite:1.14.0'
implementation 'io.grpc:grpc-okhttp:1.14.0'
implementation 'io.grpc:grpc-stub:1.14.0'
implementation files('libs/protobuf-java-3.6.1.jar')
}
由于我的库文件和 protobuf 插件都在下面
artifact = 'com.google.protobuf:protoc-gen-javalite:3.0.0'
implementation files('libs/protobuf-java-3.6.1.jar')
由于这个原因,在 jar 文件中生成相同的 java 类我可能会收到此错误“程序类型已存在”
我已经尝试过multidex,排除代码但它都不起作用
android {
compileSdkVersion 27
defaultConfig {
applicationId "io.grpc.helloworldexample"
// API level 14+ is required for TLS since Google Play Services v10.2
minSdkVersion 14
targetSdkVersion 27
versionCode 1
versionName "1.0"
multiDexEnabled true
}
buildTypes {
debug { minifyEnabled false }
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
lintOptions {
disable 'GoogleAppIndexingWarning', 'HardcodedText', 'InvalidPackage'
textReport true
textOutput "stdout"
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
sourceSets {
main {
java {
exclude '**/AbstractMessageLite.java'
}
}
}
}
我已经尝试使用 multidix 并且还引用了更多链接,但仍然没有得到任何解决方案。