Android上的Fabric/Crashlytics - 如何使用相同的包名称拥有两个不同的crashlytics项目?

luk*_*kle 10 android gradle crashlytics twitter-fabric

我正在开发一个Android应用程序,我想在Crashlytics/Fabric(调试和发布)中有两个不同的项目.

我知道这可以通过两个不同的包名来实现,但在我的情况下,这两种构建类型的包名必须相同.

是否有可能有两个具有相同包名称的碰撞项目?

小智 18

你好,我几个月前也有同样的问题,我自己解决了.希望我的回答能帮到你.

您需要为组织crashlyticsApiKey中的每个项目提供2个不同的组织.

然后在您的build.gradle文件上定义manifestPlaceHolders

debug {
        manifestPlaceholders = [crashlyticsApiKey: 'your_api_key_for_debug_project_here']
    }

release {
        manifestPlaceholders = [crashlyticsApiKey: 'your_api_key_for_release_project_here']
    }
Run Code Online (Sandbox Code Playgroud)

然后,您将此变量放在AndroidManifest.xml文件的元数据中

<meta-data
        android:name="io.fabric.ApiKey"
        android:value="${crashlyticsApiKey}" />
Run Code Online (Sandbox Code Playgroud)

这就是全部,现在构建您的项目以进行重新调试和调试,您将看到您的应用程序将注册2个不同的结构帐户与相同的包nam


Ste*_*ack 11

还有一个选项,您无需创建多个组织.您可以使用Fabric.BuilderappIdentifier(java.lang.String appIdentifier).

唯一要做的就是从文档中替换Crashlytics初始化

Fabric.with(this, new Crashlytics());
Run Code Online (Sandbox Code Playgroud)

用这样的东西:

final String trackingId = BuildConfig.APPLICATION_ID + ".tv";
Fabric fabric = new Fabric.Builder(this).kits(new Crashlytics()).appIdentifier(trackingId).build();
Fabric.with(fabric);
Run Code Online (Sandbox Code Playgroud)

第二个片段使用项目APPLICATION_ID(包名称)并向其添加".tv".

注意:当您以这种方式跟踪崩溃时,Crashlytics不会自行创建项目.手动创建项目(或者已经从具有相同包名称的另一个App创建项目)非常重要.