Android Studio 配置 proto

环境

Android Studio Koala | 2024.1.1

distributionUrl=https://services.gradle.org/distributions/gradle-8.7-bin.zip

  • 下载protobuf相关plugin

  • protobuf配置

java 复制代码
<!-- /gradle/libs.versions.toml -->

[versions]
agp = "8.5.0"
junit = "4.13.2"
junitVersion = "1.2.1"
espressoCore = "3.6.1"
appcompat = "1.7.0"
material = "1.12.0"
proto = "0.9.3"

[libraries]
appcompat_appcompat-x-0-0 = { module = "androidx.appcompat_appcompat:1.0.0" }
junit = { group = "junit", name = "junit", version.ref = "junit" }
ext-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" }
espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" }
appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" }
material = { group = "com.google.android.material", name = "material", version.ref = "material" }

[plugins]
android-application = { id = "com.android.application", version.ref = "agp" }
android-library = { id = "com.android.library", version.ref = "agp" }
google-protobuf = { id = "com.google.protobuf", version.ref = "proto" }
java 复制代码
<!-- /***Module/build.gradle -->

plugins {
    alias(libs.plugins.android.library)
    alias(libs.plugins.google.protobuf)
}

android {
    namespace 'com.android.settings.intelligence'
    compileSdk 34

    defaultConfig {
        minSdk 30

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        consumerProguardFiles "consumer-rules.pro"
    }

    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 {
                srcDir 'src/main/proto'
            }
        }
    }
}

dependencies {
    implementation libs.appcompat
    implementation libs.material
    implementation 'com.google.protobuf:protobuf-java:3.22.3'
    api 'androidx.legacy:legacy-support-v4:1.0.0'
    api 'androidx.preference:preference:1.2.1'
    api 'androidx.cardview:cardview:1.0.0'
    api 'androidx.recyclerview:recyclerview:1.3.2'
}

protobuf {
    protoc {
        artifact = 'com.google.protobuf:protoc:3.19.2'
    }
    generateProtoTasks {
        all().each { task ->
            task.builtins {
                remove java
            }
            task.builtins {
                java {}// 生产java源码
            }
        }
    }
}
java 复制代码
<!-- /src/main/proto/settings_intelligence_log.proto -->

syntax = "proto2";

option java_outer_classname = "SettingsIntelligenceLogProto";

package com.android.settings.intelligence;

// Wrapper for SettingsIntelligence event.
// Next index: 3
message SettingsIntelligenceEvent {

    // Event type for this log.
    enum EventType {
        // Do not use
        UNUSED = 0;

        // Gets suggestion list
        GET_SUGGESTION = 1;

        // Dismisses a suggestion
        DISMISS_SUGGESTION = 2;

        // Launches a suggestion
        LAUNCH_SUGGESTION = 3;

        // Opens search page
        OPEN_SEARCH_PAGE = 4;

        // Leaves search page
        LEAVE_SEARCH_PAGE = 5;

        // User sends a query to settings search
        PERFORM_SEARCH = 6;

        // Clicks a search result
        CLICK_SEARCH_RESULT = 7;

        // Clicks a saved query
        CLICK_SAVED_QUERY = 8;

        // Search service indexes database
        INDEX_SEARCH = 9;

        // Displays the no result image in search
        SHOW_SEARCH_NO_RESULT = 10;

        // Displays some result in search
        SHOW_SEARCH_RESULT = 11;

        // Leaves search page without entering any query
        LEAVE_SEARCH_WITHOUT_QUERY = 12;

        // Queries search data during a search session
        SEARCH_QUERY_DATABASE = 13;

        // Queries installed app list during a search session
        SEARCH_QUERY_INSTALLED_APPS = 14;

        // Queries input device list (keyboards, game controller etc) during
        // a search session
        SEARCH_QUERY_INPUT_DEVICES = 15;

        // Queries accessiblity service list during a search session
        SEARCH_QUERY_ACCESSIBILITY_SERVICES = 16;
    }

    message SearchResultMetadata {
        // The id of the search result row in this event, this is an internally
        // generated key and does not associate with any user data.
        optional string search_result_key = 1;

        // The rank of the search result row in this event.
        optional int32 search_result_rank = 2;

        // The number of results in this query.
        optional int32 result_count = 3;

        // The length of query word.
        optional int32 search_query_length = 4;
    }

    // The type of suggestion event.
    optional EventType event_type = 1;

    // The name/id of the suggestion in this event.
    repeated string suggestion_ids = 2;

    // Data about search results in this event.
    optional SearchResultMetadata search_result_metadata = 3;

    // Latency for the current event.
    optional int64 latency_millis = 4;
}
  • 同步重新构建后生成的目录

Settings\SettingsIntelligence\build\generated\source\proto\debug\java\com\android\settings\intelligence\SettingsIntelligenceLogProto.java

详细代码可参考 https://github.com/Shigq-droid/Settings_Android13/tree/master/SettingsIntelligence.

相关推荐
qq_314009831 小时前
VSCode+Continue实现AI辅助编程
ide·人工智能·vscode·编辑器
一张假钞4 小时前
Visual Studio Code修改terminal字体
ide·windows·vscode
人生无根蒂,飘如陌上尘4 小时前
pycharm踩坑(1)
ide·python·pycharm
顾鸟4 小时前
VScode 插件开发 国际化帮助工具
ide·vscode·编辑器
雪芽蓝域zzs4 小时前
IDEA工具下载、配置和Tomcat配置
android·tomcat·intellij-idea
xueqianliying4 小时前
Android 定位 获取当前位置 (Kotlin)
android
闲暇部落4 小时前
多线程详解——Kotlin多线程几种实现方式
android·kotlin·多线程
cuber膜拜5 小时前
jupyter使用 Token 认证登录
ide·python·jupyter
m0_748235958 小时前
CentOS 7使用RPM安装MySQL
android·mysql·centos
ac-er888812 小时前
Yii框架中的队列:如何实现异步操作
android·开发语言·php