Как сгенерировать файл класса с помощью Proto DataStore 1.1.1 protobufPlugin 0.9.4 com.google.protobuf:protobuf-kotlin-lAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Как сгенерировать файл класса с помощью Proto DataStore 1.1.1 protobufPlugin 0.9.4 com.google.protobuf:protobuf-kotlin-l

Сообщение Anonymous »

Я создал HelloDataStore в Android Studio Koala с Gradle 8.7. Я новичок в изучении Proto DataStore. Я проверил кодовую лабораторию на наличие прототипа DataStore, но не смог. Затем я проверил приложение nia (теперь в Android) и обнаружил использование protoc и protobuf-kotlin-lite 4.26.1. Я следовал инструкциям codelabs для настройки моего проекта HelloDataStore, но, похоже, не могу сгенерировать файл класса, потому что я определил user_prefs.proto, подробности которого приведены ниже.
Объектный файл UserPreferencesSerializer cat НЕ разрешает UserPrefs и строит/генерирует / не имеют исходной папки. HelloDataStore ветка github здесь, если вам интересно.
libs.versions.toml
protobufPlugin = "0.9.4"
#protobufPlugin = "0.9.0"
#protobufPlugin = "0.9.1"
protobuf = "4.26.1"
#protobuf = "3.21.12"
#protobuf = "3.17.3"

// ...
protobuf-kotlin-lite = { group = "com.google.protobuf", name = "protobuf-kotlin-lite", version.ref = "protobuf" }
protobuf-java-lite = { group = "com.google.protobuf", name = "protobuf-javalite", version.ref = "protobuf" }
protobuf-protoc = { group = "com.google.protobuf", name = "protoc", version.ref = "protobuf" }

[plugins]
android-application = { id = "com.android.application", version.ref = "agp" }
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
protobuf = { id = "com.google.protobuf", version.ref = "protobufPlugin" }

build.gradle.kts(:app)
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.protobuf)
}

android {
namespace = "com.wecanteen105.hellodatastore"
compileSdk = 35

defaultConfig {
applicationId = "com.wecanteen105.hellodatastore"
minSdk = 26
targetSdk = 35
versionCode = 1
versionName = "1.0"

testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}

buildTypes {
release {
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
buildFeatures {
viewBinding = true
}
}

// Setup protobuf configuration, generating lite Java and Kotlin classes
protobuf {
protoc {
// artifact = libs.protobuf.protoc.get().toString()
// artifact = "com.google.protobuf:protoc:3.19.4"
artifact = "com.google.protobuf:protoc:3.21.9"
}
generateProtoTasks {
all().forEach { task ->
task.builtins {
create("java") {
option("lite")
}
create("kotlin") {
option("lite")
}
}
}
}
}

//androidComponents.beforeVariants {
// android.sourceSets.register(it.name) {
// val buildDir = layout.buildDirectory.get().asFile
// java.srcDir(buildDir.resolve("generated/source/proto/${it.name}/java"))
// kotlin.srcDir(buildDir.resolve("generated/source/proto/${it.name}/kotlin"))
// }
//}

dependencies {

implementation(libs.androidx.core.ktx)
implementation(libs.androidx.appcompat)
implementation(libs.material)
implementation(libs.androidx.activity)
implementation(libs.androidx.constraintlayout)

implementation(libs.androidx.recyclerview)

implementation(libs.kotlinx.coroutines.core)
implementation(libs.kotlinx.coroutines.android)

implementation(libs.androidx.lifecycle.runtime.ktx)
implementation(libs.androidx.lifecycle.livedata.ktx)
implementation(libs.androidx.lifecycle.viewModel.ktx)
implementation(libs.androidx.lifecycle.viewModel.savedstate)

implementation(libs.androidx.datastore.pref)
implementation(libs.androidx.datastore)
// implementation(libs.protobuf.java.lite)
implementation(libs.protobuf.kotlin.lite)

testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
}

user_prefs.proto
syntax = "proto3";

option java_package = "com.wecanteen105.hellodatastore";
option java_multiple_files = true;

message UserPrefs {
// filter for showing / hiding completed tasks
bool show_completed = 1;
}

Сериализатор пользовательских настроек
object UserPreferencesSerializer:Serializer


Подробнее здесь: https://stackoverflow.com/questions/791 ... -9-4-com-g
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»