专栏首页HLQ_StruggleAndroid Studio2.3打包apk

Android Studio2.3打包apk

LZ-Says:写代码写得突然蒙比了,来来回回折腾了小2个月,乱啊~

前言

话说从Eclipse转化到Android Studio后,一直都没打个包,发个版本,今天想提交测试打个版本,丫的一看,和Eclipse不一样了。在此记录下,顺便拓展下其他小知识点,方便你我他。

进入主题 AS打包步骤如下

1.选择 Build –> Generate Signed APK…

2.选择密钥存放地址,密码,别名,密码

2.1 因为我们是首次打包,所以需要创建keystore,Android Studio中叫做jks(如果之前已经有keystore或者jks,可忽略此步)

3.获取项目对应的jks文件后next,选择apk存放地址以及项目打包版本(正式版 or 测试版),选择V1,点击Finish。

户外小拓展

1. Android为什么要进行打包,签名?

apk,实际就是一个zip包,大家可以修改后缀解压后查看,LZ解压的如下:

所有的Android应用程序都要求用一个证书进行数字签名,Android系统不会安装没有进行签名的App。平时我们的程序可以在模拟器上安装并运行,是因为在应用程序开发期间是以Debug状态进行编译的,因此ADT会自动用默认的密钥和证书来进行签名,而在以发布模式编译时,apk文件就不会得到自动签名,这样就需要进行手工签名。手工签名的签名文件当然是公司/开发者自己造的

给apk签名可以带来以下好处(其实签名是必须的):

1.应用程序升级:如果你希望使用你造的App的用户无缝升级到最新版本,那么你造的app就必须用同一个证书进行签名。这是由于傲娇的Android系统只有识别出你造的App是以同一个证书签名的,才会允许安装升级的应用程序。如果你不小心采用了不同的证书,那么系统会要求你的应用程序采用不同的包名,在这种情况下手机相当于安装了一个全新的应用程序。如果想升级应用程序,签名证书要相同,包名称要相同,Android就是如此傲娇 !

2.应用程序模块化: Android系统可以允许多个应用程序在一个进程里运行,但前提是他们都是用同一个证书签名的。实际上,系统把他们作为一个应用程序对待的,此时你可以把应用程序以模块的方式进行部署,而用户可以独立的升级其中的一个模块。这就是模块化,又叫插件化!

3.代码或者数据共享: Android提供了基于签名的权限机制,那么一个应用程序就可以为另一个以相同证书签名的应用程序公开自己的功能。以同一个证书对多个应用程序进行签名,利用基于签名的权限检查,你就可以在应用程序间以安全的方式共享代码和数据了 。

2. keystore简介

java的密钥库、用来进行通信加密用的、比如数字签名。keystore就是用来保存密钥对的,比如公钥和私钥。

3. jks简介

JAVA的keytools证书工具支持的证书私钥格式

4. signature version v1 v2

通过查看谷歌官方资料和各位同仁见解,我们可以知道如下几点:

1.Android 7.0 引入一项新的应用签名方案 APK Signature Scheme v2,它能提供更快的应用安装时间和更多针对未授权 APK 文件更改的保护。在默认情况下,Android Studio 2.2 和 Android Plugin for Gradle 2.2 会使用 APK Signature Scheme v2 和传统签名方案来签署应用;

ps:在这里我们可以知道这个东西是谷歌针对Android7.0推出的新的签名方案,也就是说,当you的app需要兼容7.0时,才会遇到这个东西。貌似市面上主流的依旧是android 5.0 and 6.0,虽然有了8.0的苗头,但是目前身边人还未使用7.0,暂时先不考虑了

经过同仁测试,使用v1的时候在5.0和7.0均未发现问题,当使用v2包的话,5.0就中枪了,提示“找不到签名证书”。

各位注意!!!

LZ理解

个人感觉keystore和jks差不多,都是属于一个容器。而这个容器里面存储着标识(敏感信息),我们一般通过这个标识,去对我们的应用进行标识加密)。

使用Android Studio打包的时候,你可以使用eclipse中的keystore,也可以使用jks。

感谢如下奉献

http://blog.csdn.net/fyh2003/article/details/6911967;

https://developer.android.google.cn/about/versions/nougat/android-7.0.html#apk_signature_v2;

http://blog.csdn.net/ling9400/article/details/65630954

本文分享自微信公众号 - 贺利权(hlq_struggle),作者:HLQ_Struggle

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-12-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 记录一次 Windows Android Studio 异常

    脑子想了半天,没遇到过这个问题呀,说的什么鬼证书的事儿。我从 Windows 切换到 Mac OS,Android Studio 倒是一直没出现过这个鬼鬼。

    HLQ_Struggle
  • 一个key玩转第三方服务(微信支付、某某地图)

    之前LZ写项目的时候,多少都会使用一些第三方,主要为地图相关,无论从百度地图还是高德地图来讲,都需要一个SHA1+包名去配置key,而这个key,就是使用地图的...

    HLQ_Struggle
  • 2018 年 8 月面试路:6 天 21 家公司

    LZ 是一枚 96 年 Android 鼠,曾经自认为 I Love Android,enmmm,Android 不爱我。

    HLQ_Struggle
  • [安全 】JWT初学者入门指南

    首先,什么是JSON Web令牌,或JWT(发音为“jot”)?简而言之,JWT是用于令牌认证的安全且值得信赖的标准。JWT允许您使用签名对信息(称为声明)进行...

    首席架构师智库
  • 智能音箱中喇叭腔体的参数测量

    最近一直忙碌于喇叭腔体的测试, 只有平衡好 喇叭 / 腔体 / 功放三者之间的关系, 才能保证好的效果.

    程序手艺人
  • 给你的博客文章加入”展开/收缩功能‘’

    Youngxj
  • 在未来10到20年之间 这些行业一定会飞速发展

    在接下来的10-20年间,我们的产业、经济、生活方式都会在科技的驱动下发生快速、根本的转变。这些转变将空前地将人类社会推离现有的模式,其影响力甚至不亚于人类社会...

    企鹅号小编
  • RTSP协议视频平台EasyNVR接入视频综合管理平台EasyNVS可以自由修改配置吗?

    我们知道EasyNVS是一个视频综合管理平台,能够将不同网络下的EasyNVR进行统一的接入和管理。新版的EasyNVS在原有的基础上,除了能够接入EasyNV...

    EasyNVR
  • Tomcat, Jre 证书相关

    lpe234
  • IOS签名机制详解

    背景 在开发手Q需要真机调试的时候经常有同事抱怨签名报错的问题,一方面是手Q工程非常庞大、有很多Target每个都需要签名,另一方面IOS签名本身就非常繁琐复杂...

    MelonTeam

扫码关注云+社区

领取腾讯云代金券