一、前瞻:
由于技术能力问题,部门下有个Eclipse的老项目,需要签名,第一时间想的是否能够转AS,因为在最新版本 的AS是支持Signature scheme V2,也这样做了,转后因为sharepreference中的方法有些废弃,导致奔溃几次,但是Eclipse运行正常,调试还是能用
最无奈的还是项目中有JNI,起初想的是在Eclipse中编译直接导so包,后来还是发现加载包失败,各种尝试后,发现Eclipse中的JNI方法名和AS的命名还是有点区别的,如果要这样做,只能将so库所含的Java源码单独提一个库,这可要了我的老命,直接放弃
我只想加个Signature scheme V2签名,没必要那么麻烦还直接提库,我是干不出来这么麻烦的事,一个懒惰的程序员才是个好程序员,二话不说,手动添加Signature scheme V2签名吧
V1和V2区别
1.只设置v1签名并不会影响什么,但是在7.0上不会使用更安全的验证方式
2.只设置V2签名7.0以下会直接安装完显示未安装,7.0以上则使用了V2的方式验证 只要将签名设置为V2即可解决
3.同时设置V1和V2则所有机型都没问题
二、手动添加Signature scheme V2签名:
1.查看APK当前的签名信息
提出Eclipse编译后的APK
运行cmd进到sdk->build-tools->26.0.2->lib目录下,我的版本是26.0.2,运行下面代码
//D:\AndroidProject\MCUVideoPlayer\bin\old.apk需要查看的APK路径
java -jar apksigner.jar verify -v D:\AndroidProject\MCUVideoPlayer\bin\old.apk
整体代码 如图:
我们可以看到,此时的v1签名已经签好了,不懂的可以自行百度怎么v1签名,Signature scheme V2 还没签名
2.进行Signature scheme V2签名
继续在lib执行以下代码
java -jar apksigner.jar sign --ks 你的jks地址 --ks-key-alias 你的Alias名字 --ks-pass pass:密码 --key-pass pass:密码 --out 输出的新APK地址 被签名的地址
整体代码图片
3.验证是否签名成功
执行1.查看APK当前的签名信息代码可查看
如图可看到Verified using v2 scheme (APK Singnature Scheme V2) :true
是True,即签名成功