问题标签 [square-wire]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 在 Android Studio 中使用 Gradle 添加 Wire 依赖项的最佳方法
我正在为我的 Android 应用程序使用 Square 的Wire 库,并使用带有 Gradle 的 Android Studio。
我最初将其添加wire-runtime-1.2.0.jar
到libs
模块中的文件夹中,然后在我的build.gradle
文件中将依赖项添加到 Gradle,如下所示:
那工作得很好。
我是 Gradle 和 Android Studio 的新手,但根据我依赖 Google Support 和 Play Services 库的方式,我认为我可以wire-runtime-1.2.0.jar
从我的存储库中删除该库并声明这样的依赖项(行来自Maven 存储库):
但是如果我这样做,那么我会遇到这个错误:
有没有办法在不直接导入 JAR 文件的情况下设置这种依赖关系?或者这只适用于您可以通过 SDK 管理器安装的库?
android-studio - Android Studio 内联编译器显示红色错误,但使用 gradle 编译工作正常
根据这个问题,我在 Android Studio 中设置了我的项目以使用Square Wire 库。
Build
->Compile Project
工作正常。
但是,如果我打开我生成的协议缓冲区文件之一,则无法识别 Square 包。
另一个症状是从 SquareMessage
类继承的方法在编辑器中显示为“无法解析方法”编译错误,即使它们构建和运行良好。
build.gradle
除了在我的项目中为我的模块添加依赖项之外,我还需要做更多的事情吗?
java - java.lang.IllegalArgumentException:没有值的 WireType
使用com.squareup.wire wire-runtime
.
代码:
错误信息:
注意:此代码在 99% 的设备上运行正常。但有时会得到这个错误,概率是1/100000。有谁知道 ?
android - Proguard for Wire + Retrofit NoSuchMethodException
我的大脑被炸了。我搜索了 SO 寻求帮助,但似乎带有此异常的 Proguard 问题特定于相关应用程序。我一直在尝试使用 Proguard 来混淆/缩小我的应用程序,当我在 Generated APK 表单中运行它时,我的应用程序要么崩溃,要么让我遇到:
堆栈跟踪:
我的应用使用了来自 Square 的 Retrofit (2.1.0) 和 Wire。然后,当我的应用程序崩溃时,我正在检查mapping.txt
文件以查看导致问题的类(我相信是com.company.project.a
,对吗?)
无论如何,这是我的 proguard 文件(带有模糊的类名 fyi):
如果我能得到一些帮助,那就太棒了,如果我应该提供更多信息,请告诉我。
编辑:在标记答案的评论中回答的问题(供将来参考)
android - 使用 Square 的 Wire 时出现 D8 异常
在 Android 项目中添加 Square 的Wire库以支持 Protobuf 后,我在编译期间收到以下 D8 异常:
D8:程序类型已经存在:com.google.protobuf.DescriptorProto$ExtensionRange$ProtoAdapter_ExtensionRange
电线依赖:implementation 'com.squareup.wire:wire-runtime:2.2.0'
GradledependencyInsight
在我的项目中揭示了另一个依赖项,即传递引入com.google.protobuf.nano:protobuf-javanano:3.1.0
. 所以我添加了一个排除:
但这并没有解决问题。
是什么让 D8 悲伤,我怎样才能让它再次快乐?
更新
有问题的设置是:有 3 个模块A
, B
, C
. A
取决于B
和C
。B
并且C
都托管在内部 maven 服务器上,它们都依赖于wire-runtime
以下 POM 条目:
我试过 Wire 版本 2.2 和 2.3.0。A
当只依赖B
或只依赖时,一切都是桃色的,但是当同时依赖和C
时,D8 会变得悲伤。A
B
C
那么你如何依赖于传递依赖于 Wire 的多个模块呢?
retrofit - 如何用方线进行序列化
当我尝试序列化结果时出现 NullPointerException:java.lang.NullPointerException: Attempt to invoke virtual method 'byte[] com.squareup.wire.ProtoAdapter.encode(java.lang.Object)' on an null object reference
在 ObjectOutputStream 之前尝试使用 BufferedOutputStream
尝试搜索相同的错误
用于序列化的代码:
“结果”是使用线编译器自动生成的类。
result.toString() 返回一个字符串(所以真的不是空的)
如果整个“结果”要保存为纯文本,它将生成一个 5MB 的文件。
改造实例:
square-wire - 无法解析 x 导入
我得到了(使用:api'com.squareup.wire:wire-runtime:3.0.2')
我的理解是我不需要在 gradle 中定义任何东西来寻找进口?
但是当它说searching 0 proto paths
,它让我想知道......
我的毕业典礼是:
wire { kotlin { android = true } }
文件结构是
我的导入行person.proto
是:import "testing/tastes/tastes.proto";
我将非常感谢任何帮助:)
android-gradle-plugin - 使用带有线的 protobuf 导入(即 google/protobuf/timestamp.proto)
我正在尝试使用正方形的Wire生成文件。我可以很好地运行他们的示例,但是一旦我添加
import "google/protobuf/timestamp.proto";
到他们的 .proto 文件以检查线如何处理时间戳,编译器就会出现以下异常:
Exception in thread "main" java.io.FileNotFoundException: Failed to locate google/protobuf/timestamp.proto in [src/main/proto]
我的路径中有 protoc($PATH=...usr/local/bin
,protoc
位于其中。timestamp.proto
位于 下方/usr/local/include/google/protobuf
)。我希望线编译器使用我系统中的 protoc,因此能够使用它的包含。
尝试使用 gradle 插件运行线并使用预编译的 jar 来获得相同的结果。
更新: 还尝试在 android studio 项目中使用 gradle 插件到相同的程度。
android - 如何在 Kotlin 中为 Android 应用程序生成 protobuf?
任何人都可以帮助我了解如何在 Kotlin 中生成 protobuf?我听说过gRPC
, wire
, KotlinPoet
, 但我不明白有什么区别,我应该使用哪个样本,任何简单的文件请填写免费与我分享?任何人都可以提供一个示例链接,该链接显示如何为 Kotlin 生成 Protobuf 示例?