为开源项目创建虚拟 Fabric Api 密钥
Posted
技术标签:
【中文标题】为开源项目创建虚拟 Fabric Api 密钥【英文标题】:Creating dummy Fabric Api keys for an open source project 【发布时间】:2017-12-19 05:06:40 【问题描述】:我正在开发一个开源项目(Kotlin、Toothpick、Clean Architecture - 现在是炒作主题,但这不是问题 :)。我正在使用 Fabric 的 Crashlytics,所以我将 API 和密钥隐藏到 fabric.properties
,根据 the official docs(和 here are some details)
问题是在不需要解决此属性文件中的合并冲突的情况下,向协作者提供一些虚拟密钥的最佳方法是什么?如果我在没有此文件的情况下发布项目,它将在构建时崩溃,因为 Fabric 找不到所需的密钥。
我看到的选项:
-
附加一个
fabric.properties
,其中包含不是来自实际应用仪表板的预定义 API 和密钥,因此,如果有人(有意或无意)阻止分析或其他原因,他们的数据将位于单独的仪表板中。
什么都不做,所以如果有人感兴趣,他们必须手动进行。
提供repo的真实密钥(我觉得不是个好主意,但如果你有其他经验,请分享)
也许,Fabric 有一些虚拟键只是为了在没有它们的情况下不会使构建失败(我还没有找到它们)?
还有别的吗?
【问题讨论】:
【参考方案1】:来自 Fabric 的 Mike。您可以采取的一种选择是禁用初始化 Fabric,除非存在键或者是否存在在构建时读取的值。最好的实现将取决于您的具体设置,因此抱歉有点含糊。
【讨论】:
“禁用初始化”是什么意思?我是否必须禁用 Fabric 插件才能使 fabricGenerateResources 任务失败?或者是否有可能以某种方式将其配置为不在 Application 类中调用 Fabric.with(...) ?现在,我们在应用程序的 onCreate 中初始化它,禁用调试: val crashlyticsKit = Crashlytics.Builder() .core(CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build()) .build() Fabric.with(this , crashlyticsKit) 您可能希望将其添加到任何构建配置 ext.enableCrashlytics = false,然后有这样的配置:Crashlytics crashlyticsKit = new Crashlytics.Builder() .core(new CrashlyticsCore.Builder() .disabled(BuildConfig.DEBUG).build()) .build(); Fabric.with(this, crashlyticsKit);或者,让构建时间资源生成并仅将 Fabric init 包装在对布尔标志的 if 检查中。以上是关于为开源项目创建虚拟 Fabric Api 密钥的主要内容,如果未能解决你的问题,请参考以下文章