Android:覆盖库依赖项中的某个类

Aar*_*ron 8 android gradle crosswalk

我在项目中使用人行横道作为网络视图,现在我想出于某些目的覆盖替换类。

原班

org.xwalk.core.internal

imports....

class SslUtil {

    public static boolean shouldDenyRequest(int error) {
        switch(error) {
            case NetError.ERR_CERT_COMMON_NAME_INVALID:
            case NetError.ERR_CERT_DATE_INVALID:
            case NetError.ERR_CERT_AUTHORITY_INVALID:
            case NetError.ERR_CERT_WEAK_SIGNATURE_ALGORITHM:
            case NetError.ERR_CERT_WEAK_KEY:
            case NetError.ERR_CERT_NAME_CONSTRAINT_VIOLATION:
            case NetError.ERR_CERT_VALIDITY_TOO_LONG:
            case NetError.ERR_CERT_CONTAINS_ERRORS:
            case NetError.ERR_CERT_REVOKED:
            case NetError.ERR_CERT_INVALID:
            case NetError.ERR_SSL_WEAK_SERVER_EPHEMERAL_DH_KEY:
            case NetError.ERR_SSL_PINNED_KEY_NOT_IN_CERT_CHAIN:
            return true;
        default:
            break;
        }
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我想做的是通过复制包名称和类 nam 来替换它。

org.xwalk.core.internal

imports....

class SslUtil {

    public static boolean shouldDenyRequest(int error) {
        //I'll do my custom handling of error
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我刚刚使用 Android Studio 运行时,这是可能的,因为 IDE 会询问我应该使用什么 SslUtil。但是,由于重复的文件,我将无法生成签名的 APK

(org.xwalk.core.internal.SslUtil)

现在有没有一种方法可以让我从我的依赖项中排除这个特定文件并使用我创建的文件?或者说这是不可能的?

Kap*_*l G -3

如果您要重写一个类,为什么您希望它与该类位于同一个包中。由于这是您个人的首要任务,因此请将其放在您的包裹中。

your.own.package.here

imports....

class SslUtilNew extends SslUtil {

    public static boolean shouldDenyRequest(int error) {
        // Call Super if you want to otherwise use your own method
        //I'll do my custom handling of error
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后当你想使用它时,将其与你的包一起导入。您仍然可以继续使用其他旧的类方法,并且只使用您重写的新方法。