gpt4 book ai didi

java - 是否可以仅针对特定风格包含并初始化 HockeyApp SDK?

转载 作者:行者123 更新时间:2023-12-02 04:48:18 26 4
gpt4 key购买 nike

我有一个具有多种风格的 Android 应用程序,每种风格都适用于不同的环境。我希望指定 HockeyApp SDK 在哪一种风格上导入并初始化(或者至少能够在除一种风格之外的所有风格中使用它)。

目前我在 build.gradle 文件中有这一行:

dependencies {
...
implementation 'net.hockeyapp.android:HockeySDK:5.1.0'
...
}

在主 Application.java 文件中,导入并初始化 HockeyApp SDK:

import net.hockeyapp.android.CrashManager;

@Override
public void onCreate(){
super.onCreate();

CrashManager.register(this);
...
}

当前的解决方法是每次我需要为我不想包含 HockeyApp SDK 的风格构建和/或生成 .apk 文件时注释这些行。当然有更好的方法来处理这个问题。

我尝试创建不同的 Application.java 文件并将它们放入 app/src/{flavor} 中(遵循不同风格的不同资源的相同逻辑),但我无法构建应用程序,因为 Application 类的每个引用都是“风格独立的”,例如。每个导入 Appplication 类的类都只包含以下行:

导入{package}.Application;

反过来想,如果我在 build.gradle 上指定每种风格的特定实现,例如。

{flavor1}Implementation 'net.hockeyapp.android:HockeySDK:5.1.0'
{flavor2}Implementation 'net.hockeyapp.android:HockeySDK:5.1.0'

然后我无法构建其他风格,因为它们不存在包引用。

我希望我能够解释我的问题。如果您需要有关当前应用程序实现的进一步说明或详细信息,我很乐意提供。

提前致谢。

最佳答案

一种始终有效但并不理想的解决方案是在访问 HockeyApp API 时使用反射并捕获异常。

另一个解决方案是添加一个 compileOnly 依赖项,该依赖项将针对所有风格,但实际的implementation 依赖项仅针对某些风格,然后 try/catch 所有 HockeyApp 调用的 catch 子句中都包含 LinkageError,这样当运行时缺少 HockeyApp SDK 时应用程序就不会崩溃。

类似于:

compileOnly 'net.hockeyapp.android:HockeySDK:5.1.0' // all flavours
{flavor1}Implementation 'net.hockeyapp.android:HockeySDK:5.1.0' // only flavor1 has HockeyApp available at runtime and in binaries.
try {
CrashManager.register(this);
} catch (LinkageError e) {

// HockeyApp not available in this flavor.
}

关于java - 是否可以仅针对特定风格包含并初始化 HockeyApp SDK?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56464955/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com