我试图创建一个应该使用特定证书连接到HTTPS服务器的Android应用。
我在运行OSX El Capitan的Mac上使用Android Studio 1.4
我已成功将证书密钥解压缩到cert.pem文件,并使用以下命令将其转换为密钥库:
keytool -importcert -v -trustcacerts -file "cert.pem" -alias an_alias -keystore "server.bks" -provider org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath "bcprov-jdk16-146.jar" -storetype BKS
但是,当运行代码时,它会给我错误:
Error:Execution failed for task ':app:packageDebug'.
> class org.bouncycastle.asn1.ASN1Primitive overrides final method equals.(Ljava/lang/Object;)Z
我已经找到了关于这个错误的一些答案,但它们已经很老了,而且提议的解决方案,即从Library / Java / Extensions删除bcprov-jdk15on-146.jar,但我这样做了,它没有解决我的问题。
另外在另一个回答中,我发现了将此添加到build.gradle的建议:
Class klass = org.bouncycastle.asn1.bc.BCObjectIdentifiers.class;
URL location = klass.getResource('/'+klass.getName().replace('.', '/')+".class");
println location.toURI().toString();
建筑物给我这个,但我仍然对所发生的事情感到茫然:
jar:file:/Users/Me/Library/Java/Extensions/bcprov-jdk15on-146.jar!/org/bouncycastle/asn1/bc/BCObjectIdentifiers.class
有没有人知道如何解决这个问题?