【发布时间】:2018-01-23 08:02:42
【问题描述】:
我在我的项目中使用人行横道作为 webview,现在我想出于某些目的覆盖替换类。
原班
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;
}
}
现在我要做的是通过复制包名和类名来替换它。
org.xwalk.core.internal
imports....
class SslUtil {
public static boolean shouldDenyRequest(int error) {
//I'll do my custom handling of error
return false;
}
}
当我刚刚使用 Android Studio 运行时,这是可能的,因为 IDE 会询问我应该使用什么 SslUtil。但是由于文件重复,我将无法生成签名的 APK
(org.xwalk.core.internal.SslUtil)
现在有没有一种方法可以从我的依赖项中排除这个特定文件并使用我创建的文件?还是不可能?
【问题讨论】:
-
没有从编译库中删除该类,我认为您在这里没有很多选择。顺便说一句,请注意,如果您的计划是放宽 SSL 验证(使无效连接变为有效),您的应用可能无法在 Play 商店和其他应用分发渠道上分发。
-
@CommonsWare 是的,我知道这一点,我只是想尝试一下。关于 SSL 验证,我已经使用 API >= 24 (android:networkSecurityConfig) 对其进行了修复,但是 API
-
一种选择是在 Gradle 项目中滥用
buildSrc。它的类加载器具有优先权,因此可以通过将库中的类放入正确的包中来完全替换它。