Android Studio 项目打包成apk时 Signature Version 的选择

在第一次进行apk打包时,点击Build->Generate Signed APK,选择好之后按Next后,有一个Signature Versions的选项。


图1 生成APK前的最后一步

在完全不了解的情况下,我想着肯定越高级的越好用,于是只给V2前打了勾。之后出现的问题是,在Android7.0的设备上可以安装并运行,在Android5.1上却报出“安装包已损坏”的错误。

因而在此对该知识点做下记录。

Signature Version安卓项目打包时的两种签名方式:

V1(Jar Signature): 传统通用方式。来自JDK。

V2(Full APK Signature): Android 7.0 引入的新方式。安装更快、验证方式更安全。不适用于旧安卓版本,且不强制。完整信息可参考—— https://developer.android.google.cn/about/versions/nougat/android-7.0.html#apk_signature_v2 

所以为了追求更完美的发挥,应将两个勾同时勾上。若不勾选V1,则旧安卓版本无法安装;若不勾选V2,则对于Android7.0设备就舍弃了更快更安全的方式。



另外,这次开发中有涉及到对Double取精度的语句。网上查资料后我选择了DecimalFormat。但是在智能提示中我选择了android.icu.text.DecimalFormat,刚写完就报错,显示该语句需要 API Level 24 以上,而我的最低需求只有15。

于是我初生牛犊不怕虎地在 app\build.gradle 把最低需求一改,继续写了下去。

然后实际运行时在 Android5.1 闪退了。

于是我仔细观察后发现原来还有 java.text.DecimalFormat 这种通用的语句,只不过可能因为是 Android 开发所以就被挤到智能提示的后面去了。这种就能在各种安卓版本上完美运行了。

还有很多对象都是类似的情况,比如 BigDecimal、NumberFormat、SimleDateFormat 等等。以前也遇到过,但是由于不需要在真机运行,所以都是改一改最低需求然后继续。本以为就是个很简单的小程序,在虚拟机上跑的很完美。没想到在实际运行的时候会出这么多问题。但毕竟这是第一次嘛。并且我期待着,能够遇到并且解决更多的问题。这是提升自己水平的最快方法啦。


狠下心写的第一篇博客,值得纪念~我希望自己能坚持下去!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,288评论 25 708
  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    passiontim阅读 15,556评论 2 45
  • 转载请注明出处://www.greatytc.com/p/691d8392643e本文出自Shawpoo的...
    Shawpoo的阅读 901评论 0 1
  • 已不记得有多久没有写日记了,没有用简书写下我所想的。停了那么久我已为不会在想着写,原来还是放不下,虽说已停了那么久...
    馨之芬芳阅读 183评论 1 1
  • 5月28日,今天是球球的第99天。闹。 昨天球球吃多,吐了,感觉每次吐完都会非常的闹。不好好吃饭,不好好睡觉,也不...
    曦宝阅读 252评论 0 0