Android Gradle Protobufs: как скомпилировать полный protobuf, а не «облегченную» версию? - PullRequest
0 голосов
/ 13 февраля 2019

Каждый пример, который я могу найти для настройки build.gradle для компиляции protobufs, использует "облегченную" версию и выглядит примерно так:

protobuf {
    protoc {
        artifact = 'com.google.protobuf:protoc:3.6.0'
    }
    plugins {
        javalite {
            artifact = 'com.google.protobuf:protoc-gen-javalite:3.0.0'
        }
    }
    generateProtoTasks {
        all().each { task ->
            task.builtins {
                remove java
            }
            task.plugins {
                javalite { }
            }
        }
    }
}

dependencies {
    implementation 'com.google.protobuf:protobuf-java:3.6.0'
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support:support-v4:28.0.0'
    implementation 'com.android.support:design:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

Обратите внимание на " javalite».Это приводит к созданию сгенерированных Java-файлов, которые используют MessageLite , но мне нужен полный Message класс.

Как мне изменить это, чтобы он не генерировал "lite"версия?

1 Ответ

0 голосов
/ 14 февраля 2019

Нашли решение:

1) Удалите это:

plugins {
    javalite {
        artifact = 'com.google.protobuf:protoc-gen-javalite:3.0.0'
    }
}

2) Удалите это:

task.plugins {
    javalite { }
}

3) Измените раздел task.builtins наthis:

task.builtins {
    java { }
}

Теперь он будет генерировать полнофункциональные протобуфы.

...