首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >是否可以仅针对特定风格包含和初始化HockeyApp SDK?

是否可以仅针对特定风格包含和初始化HockeyApp SDK?
EN

Stack Overflow用户
提问于 2019-06-06 00:59:49
回答 1查看 114关注 0票数 0

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

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

代码语言:javascript
复制
dependencies {
...
        implementation 'net.hockeyapp.android:HockeySDK:5.1.0'
...
}

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

代码语言:javascript
复制
import net.hockeyapp.android.CrashManager;

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

        CrashManager.register(this);
...
}

目前的解决方法是在每次我需要构建和/或生成用于HockeyApp开发工具包的.apk文件时注释这些行。当然,还有更好的方法来处理这个问题。

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

import {package}.Application;

反过来说,如果我为每种口味指定了build.gradle的具体实现,例如。

代码语言:javascript
复制
{flavor1}Implementation 'net.hockeyapp.android:HockeySDK:5.1.0'
{flavor2}Implementation 'net.hockeyapp.android:HockeySDK:5.1.0'

那么我就无法构建其他的风格,因为它们的包引用不存在。

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

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2019-06-06 06:17:13

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

另一个解决方案是添加一个compileOnly依赖,它将在所有风格上,但实际的implementation依赖只在一些风格上,然后try/ catch在catch子句中使用LinkageError 所有HockeyApp调用,这样应用程序就不会在运行时缺少HockeyApp SDK时崩溃。

类似于:

代码语言:javascript
复制
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.
代码语言:javascript
复制
try {
   CrashManager.register(this);
} catch (LinkageError e) {

   // HockeyApp not available in this flavor.
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56464955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档