Java 服务器和 Android 共享的 .jar 中的 Firestore 自定义对象
Firestore custom objects in .jar shared by Java server and Android
我正在使用 Firestore,在我的项目中,我有一个 Java 服务器和一个 Android 应用程序,它们当前共享一个公共数据模型库/.jar。问题是我不知道如何在数据模型 类 中使用任何 Firestore 注释,如 @Exclude 或 @ServerTimestamp,因为数据模型库需要依赖两个相互冲突的包(一个用于 Android Firestore 的风味,一种用于 Java 风味):
compile 'com.google.firebase:firebase-firestore:11.8.0'
和
compile 'com.google.firebase:firebase-admin:5.8.0'
我可以做一些 Gradle 魔术来确保数据模型仅依赖于最低限度(注释定义)吗?
如果是这样,我可以添加如下内容:
private @com.google.firebase.database.Exclude @com.google.cloud.firestore.annotation.Exclude String sentBy;
现在我收到以下错误:
All gms/firebase libraries must use the exact same version specification (mixing versions can lead to runtime crashes). Found versions 5.8.0, 11.8.0. Examples include com.google.firebase:firebase-admin:5.8.0 and com.google.android.gms:play-services-appinvites:11.8.0
知道了!完全透明……这有点像 hack,但它确实有效。本质上,您提供的数据模型库足以独立编译,然后在各自的 Android 和服务器项目中引入完整的 Firestore 依赖项。
在您的 数据模型 库中:
a) 制作完全模拟您需要的注释的包。将注解类的内容复制到Exclude、ServerTimestamp等
即可
b) 然后确保 NOT 在 Gradle/POM.
中有任何 Firestore 依赖项
c) 使用 Android 和服务器注释标记 类、字段和方法。
在您的 Android 项目中,包括您的数据模型 library/project,但 排除 虚拟 Android 注释你的数据模型编译依据。使用您的 Android 应用所依赖的 Firestore 库,所有这些依赖项都将由该库中的真实 类 满足。
在您的 server 项目中执行相同的操作,但 排除 您的数据模型编译所针对的虚拟服务器注释。
结果:所有项目都应该编译,字段应该被排除,等等,正如 Firestore 所期望的那样,您不必保留 [=67= 的 2 个版本]数据模型。
注意:如果注释 类 被更改,您将必须更新您的注释 类。然而,这似乎很少发生,并且是一个很好的权衡,因为不必保留所有 Java 数据模型的 2 个副本。
我正在使用 Firestore,在我的项目中,我有一个 Java 服务器和一个 Android 应用程序,它们当前共享一个公共数据模型库/.jar。问题是我不知道如何在数据模型 类 中使用任何 Firestore 注释,如 @Exclude 或 @ServerTimestamp,因为数据模型库需要依赖两个相互冲突的包(一个用于 Android Firestore 的风味,一种用于 Java 风味):
compile 'com.google.firebase:firebase-firestore:11.8.0'
和
compile 'com.google.firebase:firebase-admin:5.8.0'
我可以做一些 Gradle 魔术来确保数据模型仅依赖于最低限度(注释定义)吗?
如果是这样,我可以添加如下内容:
private @com.google.firebase.database.Exclude @com.google.cloud.firestore.annotation.Exclude String sentBy;
现在我收到以下错误:
All gms/firebase libraries must use the exact same version specification (mixing versions can lead to runtime crashes). Found versions 5.8.0, 11.8.0. Examples include com.google.firebase:firebase-admin:5.8.0 and com.google.android.gms:play-services-appinvites:11.8.0
知道了!完全透明……这有点像 hack,但它确实有效。本质上,您提供的数据模型库足以独立编译,然后在各自的 Android 和服务器项目中引入完整的 Firestore 依赖项。
在您的 数据模型 库中:
a) 制作完全模拟您需要的注释的包。将注解类的内容复制到Exclude、ServerTimestamp等
即可
b) 然后确保 NOT 在 Gradle/POM.
中有任何 Firestore 依赖项
c) 使用 Android 和服务器注释标记 类、字段和方法。
在您的 Android 项目中,包括您的数据模型 library/project,但 排除 虚拟 Android 注释你的数据模型编译依据。使用您的 Android 应用所依赖的 Firestore 库,所有这些依赖项都将由该库中的真实 类 满足。
在您的 server 项目中执行相同的操作,但 排除 您的数据模型编译所针对的虚拟服务器注释。
结果:所有项目都应该编译,字段应该被排除,等等,正如 Firestore 所期望的那样,您不必保留 [=67= 的 2 个版本]数据模型。
注意:如果注释 类 被更改,您将必须更新您的注释 类。然而,这似乎很少发生,并且是一个很好的权衡,因为不必保留所有 Java 数据模型的 2 个副本。