【发布时间】:2016-04-27 10:22:13
【问题描述】:
我正在开发一个 Android 应用程序,我想在 Crashlytics / Fabric 中拥有两个不同的项目(调试和发布)。
我知道这可以通过使用两个不同的包名来实现,但就我而言,这两种构建类型的包名必须相同。
是否有可能有两个具有相同包名的 crashlytics 项目?
【问题讨论】:
标签: android gradle crashlytics twitter-fabric
我正在开发一个 Android 应用程序,我想在 Crashlytics / Fabric 中拥有两个不同的项目(调试和发布)。
我知道这可以通过使用两个不同的包名来实现,但就我而言,这两种构建类型的包名必须相同。
是否有可能有两个具有相同包名的 crashlytics 项目?
【问题讨论】:
标签: android gradle crashlytics twitter-fabric
您好,几个月前我也有同样的问题,我自己解决了。希望我的回答对你有所帮助。
对于您在 fabric 上的每个项目,您需要 2 个具有不同 crashlyticsApiKey 的组织。
然后在您的build.gradle 文件中定义manifestPlaceHolders
debug {
manifestPlaceholders = [crashlyticsApiKey: 'your_api_key_for_debug_project_here']
}
release {
manifestPlaceholders = [crashlyticsApiKey: 'your_api_key_for_release_project_here']
}
然后你将把这个变量放在你的AndroidManifest.xml文件中的元数据上
<meta-data
android:name="io.fabric.ApiKey"
android:value="${crashlyticsApiKey}" />
就是这样,现在为发布和调试构建您的项目,您将看到您的应用将注册 2 个具有相同包名的不同结构帐户
【讨论】:
apiSecret 密钥保存在fabric.properties,如果有两个不同的组织,如何处理?我也有 2 个 :(
还有一个选项,您不需要创建多个组织。您可以将Fabric.Builder 与appIdentifier(java.lang.String appIdentifier) 一起使用。
唯一要做的就是从文档中替换 Crashlytics 初始化
Fabric.with(this, new Crashlytics());
类似这样的:
final String trackingId = BuildConfig.APPLICATION_ID + ".tv";
Fabric fabric = new Fabric.Builder(this).kits(new Crashlytics()).appIdentifier(trackingId).build();
Fabric.with(fabric);
第二个 sn-p 使用项目APPLICATION_ID(包名)并向其添加“.tv”。
注意:当您以这种方式跟踪崩溃时,Crashlytics 不会自行创建项目。手动创建项目很重要(或者已经从另一个具有相同包名的应用程序创建项目)。
【讨论】: