Я получаю
"Тип программы уже присутствует:
com.google.protobuf.AbstractMessageLite $ Builder $ LimitedInputStream»
ошибка во время выполнения. Я пытался использовать мультидикс, а также ссылался больше ссылок
но все еще не получил никаких решений.
Это потому, что в файлах 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')
генерирует тот же класс Java в там JAR-файле из-за этого я могу получить эту ошибку "Тип программы уже присутствует"
Я пробовал мультидекс, исключить код, но все не работает
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'
}
}
}
}
Я пытался использовать мультидикс, а также ссылался на дополнительные ссылки, но все еще не получил никаких решений.