前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android Studio2.3打包apk

Android Studio2.3打包apk

作者头像
贺biubiu
发布2019-06-10 22:54:14
8600
发布2019-06-10 22:54:14
举报
文章被收录于专栏:HLQ_StruggleHLQ_Struggle

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-12-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 贺biubiu 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档