Android Gradle Protobufs:如何编译完整的 protobuf 而不是 "lite" 版本?
Android Gradle Protobufs: How to compile the full protobuf and not the "lite" version?
我能找到的每个配置 build.gradle 来编译 protobufs 的例子都使用 "lite" 版本,看起来像这样:
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”。这会生成使用 MessageLite 的 java 文件,但我需要完整的 Message class.
如何更改它以使其不生成 "lite" 版本?
找到解决方案:
1) 删除这个:
plugins {
javalite {
artifact = 'com.google.protobuf:protoc-gen-javalite:3.0.0'
}
}
2) 删除这个:
task.plugins {
javalite { }
}
3) 将 task.builtins 部分更改为:
task.builtins {
java { }
}
它现在将生成全功能原型增益。
我能找到的每个配置 build.gradle 来编译 protobufs 的例子都使用 "lite" 版本,看起来像这样:
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”。这会生成使用 MessageLite 的 java 文件,但我需要完整的 Message class.
如何更改它以使其不生成 "lite" 版本?
找到解决方案:
1) 删除这个:
plugins {
javalite {
artifact = 'com.google.protobuf:protoc-gen-javalite:3.0.0'
}
}
2) 删除这个:
task.plugins {
javalite { }
}
3) 将 task.builtins 部分更改为:
task.builtins {
java { }
}
它现在将生成全功能原型增益。