首页 > 解决方案 > 如何在 Android 项目中使用的 Flutter 模块上集成 protobuff?

问题描述

我尝试将 Flutter 插件集成到原生应用程序 Android 和 iOS。它工作得很好,但我想使用 protobuf 通过定义的数据模型向使用 MethodChannel 的颤振插件传递数据。

我的问题是关于数据模型在 Android App 上的集成,我不能使用生成的 kotlin 文件,我不明白如何将它用于 Android App。

在 Flutter 插件项目中,我使用了这个包:

我已经定义了一个这样的原型文件示例:

ROOT_FLUTTER_PROJECT/protos/message_example.proto

syntax = "proto3";

option java_package = "com.example.android_test";

message testMessageData {
  string test = 1;
}

我使用这个命令来生成飞镖模型:

protoc --dart_out=./lib ./protos/message_example.proto

然后我生成了 Kotlin 文件以移动到 Android App 中:

protoc --kotlin_out=./lib ./protos/message_example.proto

在我的安卓项目中,

ROOT_ANDROID_PROJECT/build.gradle :

buildscript {
    ...
    dependencies {
        ...
        classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.17'
    }
}

ROOT_ANDROID_PROJECT/app/build.gradle :

...
apply plugin: 'com.google.protobuf'
...
protobuf {
    // Configure the protoc executable
    protoc {
        // Download from repositories
        artifact = 'com.google.protobuf:protoc:3.9.2'
    }
    plugins {
        javalite {
            // The codegen for lite comes as a separate artifact
            artifact = 'com.google.protobuf:protoc-gen-javalite:3.0.0'
        }
    }
    generateProtoTasks {
        all().each { task ->
            task.plugins {
                javalite { }
            }
        }
    }
}

dependencies {
    ...
    implementation 'com.google.protobuf:protobuf-lite:3.0.1'
    ...
}

在我的 Android 应用程序中,我无法使用生成的对象。您有任何示例或解决方案吗?

在哪里可以将生成的 kotlin 文件移动到 Android App 中?

标签: flutterkotlindartprotocol-buffersproto

解决方案


推荐阅读