本文章记录在项目中遇到的各种小BUG,温故而知新!
----------------------------------------------------------------------------------------------------------
在写调用项目APP时候demo 的onActivityResult会立即执行,百思不得其姐!
情况:第三方APP调用本Trust_APP,写了Action,但是在发现第三方APP一点击按钮时候,onActivityResult会立即执行
答案:有可能是在这些跳转的Activity 的加载模式(launchMode)有关,应该设置默认模式,但我的Activity们模式就是默认模式,后来发现在执行跳转的时候设置了mIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 注释掉就OK
-----------------------------------------------------------------------------------
17-2-9 更新
因为程序会在 启动安装时候出现短暂的白屏,所以在网上寻找办法 有人说在 styles中设置windowIsTranslucent true会实现,设置后,的确解决了短暂白屏效果,但是发现 Activity 退出的样式也变了!小意思 没关,但是在发现时候PopupWindow 时候,因为有两个Activity切换 PopWindow 没弹出来,致死不明白咋回事!so将windowIsTranslucent true 注释掉 该死的windowIsTranslucent true 坑了 好久 !
------------------------------------------------------------------------------------------
17-2-21更新
Android 解析证书
public static PublicKey getPublicKeyByCert(byte[] derCert) throws Exception {
//从证书取得的公钥
CertificateFactory certificatefactory=CertificateFactory.getInstance("X.509");
ByteArrayInputStream bIns = new ByteArrayInputStream(derCert);
X509Certificate Cert = (X509Certificate)certificatefactory.generateCertificate(bIns);
int version= Cert.getVersion();// 版本
BigInteger serialNumber= Cert.getSerialNumber();
Principal issuer=Cert.getIssuerDN();
String issuerName=issuer.getName();// 颁发者
Principal pp=Cert.getSubjectDN();
String name=pp.getName();// 使用者
String sigAlgName=Cert.getSigAlgName();// 签名算法
Date before= Cert.getNotBefore();// 有效期
Date after= Cert.getNotAfter();// 截止期
return Cert.getPublicKey();// 公钥
}
证书一般是Base64格式,入参转换成byte[] 即可。
------------------------------------------------------------------------------------------
19-11-13 更新
公司 在做一个电信项目时候需要提供纯jar包供Server端调用,在最后一步进行混淆jar后,导入测试工程一直报“java.lang.VerifyError: Expecting a stackmap frame at branch target 11” 校验错误,使用混淆之前的包时候可以正常使用,混淆文件也没有问题,后来怀疑是版本的问题,混淆工具及编译工具统一使用1.8版本,还是不行,后来无意间看到一片文章
https://blog.youkuaiyun.com/qianyedoufulao/article/details/102620040,上面有解释:
JVM 加载class文件时会做字节码校验(bytecode verification).如果你的class文件是由java源文件编译出来的,那么基本上不用担心bytecode verification. 如果class文件有asm,cglib等动态生成出来的或者由其他编译的,那么JVM在校验bytecode 时就会可能失败,失败的原因是可能生成的bytecode有bug,也可能是新版本的JVM加入了新的校验条件导致原来可以通过校验的bytecode 现在不成功了.在我自己例子中:使用jdk1.7打包的SDK,使用jdk1.8做Robolectric 测试就发生了java.lang.VerifyError
而对于使用者而已,我们-noverify就是关闭bytecode verification,关键是在混淆文件中删除- dontpreverify。去掉找回果然好了,去掉了预校验。