maven: https://mvnrepository.com/artifact/com.google.protobuf/protobuf-gradle-plugin
github: GitHub - google/protobuf-gradle-plugin: Protobuf Plugin for Gradle
随着gradle升级原来使用7.0以下版本集成probuffer时使用
classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.8'
implementation 'com.google.protobuf:protobuf-java:3.5.1'
具体7.0+以下如何集成百度可以看到很多,然后升级到7.0+后由于整个配置文件结构修改了,以及grandle版本升级后与classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.8' 并不兼容,只能到官网项目中瞅瞅
https://github.com/google/protobuf-gradle-plugin/blob/master/examples/exampleProject/build.gradle
看到插件版本 id('com.google.protobuf') version '0.8.19'
artifact = 'com.google.protobuf:protoc:3.6.1'
implementation 'com.google.protobuf:protobuf-java:3.6.1'
把自己基于7.0+的项目配置文件修改
gradle 插件 7.4.2
gradle version 7.5
project:build.gradle
plugins {
id 'com.android.application' version '7.4.2' apply false
id 'com.android.library' version '7.4.2' apply false
id 'com.google.protobuf' version '0.8.19' apply false
}
module: build.gradle
plugins {
id 'com.android.application'
id 'com.google.protobuf'
// id('com.google.protobuf') version '0.8.19'
}
protobuf {
protoc {
artifact = 'com.google.protobuf:protoc:3.6.1' // 也可以配置本地编译器路径
}
generateProtoTasks {
all().each { task ->
task.builtins {
remove java
}
task.builtins {
java {}// 生产java源码
}
}
}
}
android {
namespace 'com.example.myapplication'
compileSdk 33
defaultConfig {
applicationId "com.example.myapplication"
minSdk 26
targetSdk 33
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
sourceSets {
main {
proto {
//指定proto文件位置,你的proto文件放置在此文件夹中
srcDir 'src/main/proto'
}
}
}
}
dependencies {
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.9.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
implementation 'com.google.protobuf:protobuf-java:3.6.1'
}
配置公用属性:
1.项目根目录创建config.gradle
ext {
ndk = [
ndkVersion: '23.1.7779620'
]
sdk = [
compile : 31,
min : 26,
target : 31,
buildTools: '31.0.0'
]
app = [
versionCode: 1,
versionName: '1.0'
]
deps = [
appcompat : 'androidx.appcompat:appcompat:1.4.1',
]
}
2.全局应用config.gradle
在项目根目录build.gradle
plugins {
id 'com.android.application' version '7.4.2' apply false
id 'com.android.library' version '7.4.2' apply false
}
apply from: "config.gradle"
3.module 共同的配置信息common.gradle
android {
compileSdkVersion rootProject.ext.sdk.compile
defaultConfig {
minSdkVersion rootProject.ext.sdk.min
targetSdkVersion rootProject.ext.sdk.target
versionCode rootProject.ext.app.versionCode
versionName rootProject.ext.app.versionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles "consumer-rules.pro"
}
compileOptions {
sourceCompatibility rootProject.ext.java.version
targetCompatibility rootProject.ext.java.version
}
/*kotlinOptions {
jvmTarget = rootProject.ext.java.jvm
}*/
buildFeatures {
dataBinding true
viewBinding true
}
signingConfigs {
release {
storeFile file(keystore.storeFile)
storePassword keystore.storePassword
keyAlias keystore.keyAlias
keyPassword keystore.keyPassword
}
}
buildTypes {
debug {
buildConfigField "boolean", "isDebug", "true"
signingConfig signingConfigs.release
}
release {
signingConfig signingConfigs.release
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
configurations { implementation.exclude group: 'org.jetbrains', module: 'annotations' }
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
implementation "${rootProject.ext.deps.annotations}"
}
4.module 应用公用配置build.gradle 中加入
apply from: "../../common.gradle"