AS Gradle 7.0+ 使用probuffer

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"
相关推荐
coder_pig5 天前
🤡 公司Android老项目升级踩坑小记
android·flutter·gradle
Code0cean8 天前
Gradle快速入门学习
gradle
penngo17 天前
Maven/Gradle常用命令
java·gradle·maven
尘云逸22 天前
将开发的软件安装到手机:环境配置、android studio设置、命令行操作
android·react native·adb·智能手机·gradle·android studio·android-studio
尚学教辅学习资料1 个月前
SpringBoot3.x入门到精通系列:1.2 开发环境搭建
spring boot·gradle·maven·intellij idea·jdk17·开发环境
真夜1 个月前
关于rn下载gradle依赖速度慢的问题
react native·gradle·android studio
小墙程序员1 个月前
一文了解 AGP8 的使用
android·gradle
南玖yy1 个月前
Linux 桌面市场份额突破 5%:开源生态的里程碑与未来启示
linux·运维·服务器·汇编·科技·开源·gradle
yzpyzp1 个月前
目前市面上arm64-v8a、armeabi-v7a设备的市占率有多少?为什么x86架构的手机越来越少?
android·gradle·cpu·ndk
yzpyzp1 个月前
ndk { setAbiFilters([‘armeabi-v7a‘, “arm64-v8a“]) }
android·gradle·ndk