Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2056|回复: 0
打印 上一主题 下一主题

Android Studio打包生成APK

[复制链接]

697

主题

1142

帖子

4086

积分

认证用户组

Rank: 5Rank: 5

积分
4086
跳转到指定楼层
楼主
发表于 2019-10-5 13:16:14 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 java 于 2019-10-5 14:05 编辑

导出签名发布版apk直接点“Build APK(s)”生成的是使用默认的debug.keystore签名的Debug版apk(生成在app\build\outputs\apk\debug目录下),真正发布软件时我们需要生成自己密钥签名的release版apk。
菜单栏----Build----Generate Signed Bundle / APK...

选择 APK  
Build a signed APK that you can deploy to a device
点 Next
密钥文件点"Create New"
Key store path:密钥库文件的地址  /media/ht-st-500/linux_ntfs_partition/github/chunhuitech/chxf.key.store.jks
        Password/Confirm:密钥库的密码 chunhui
        Key:
            Alias:密钥名称
            Password/Confirm:密钥密码
            Validity(years):密钥有效时间
            First and Last Name:密钥颁发者姓名
            Organizational Unit:密钥颁发组织
            City or Locality:城市
            Country Code(XX):国家



出现如下错误
Key was created with errors:
Picked up _JAVA_OPTIONS:   -Dawt.useSystemAAFontSettings=gasp
解决:
   
方法1:找到/etc/profile文件,在JDK环境变量之前添加如下:
unset _JAVA_OPTIONS
然后 source /etc/profile 不好使
【2】注销用户,问题解决。
原理:

我发现其实这个问题的主要原因就是环境变量里面拥有一条名为_JAVA_OPTIONS 的环境变量,但是在终端不管怎么删除,最终的结果都仅仅会作用于当前终端,再打开其他终端或者软件时,还是有问题。但是在任何的相关文件中都没有找到记录,只时我想到:可不可以在系统加载的时候就直接禁掉这个环境变量呢,于是乎我就/etc/profile文件中添加了如上的内容,问题解决。


方法2 ok主要原因是:系统原有的OpenJDK设置干扰了手动安装的JDK。干扰的文件是:/etc/profile.d/java-awt-font-gasp.sh
解决的办法是:
一、将OpenJDK的相关设置Copy到你的Jdk下的Jre中
sudo cp -p /etc/java-7-openjdk/properties /opt/Java/jdk1.8.0_66/jre/lib/
如果只是为了解决上面的问题,也可以不Copy,但为了保险起见……
二、将文件备份
sudo cp -p /etc/profile.d/java-awt-font-gasp.sh ~/.local/share/init.d-bak
三、删除文件
sudo rm /etc/profile.d/java-awt-font-gasp.sh
四、注销退出或是重启,解决问题




  • 之后,生成一个新的密钥文件之后会自动返回选择密钥文件的对话框,此时只需要输入刚才申请的时候使用的密码就可以了,接下来就是选择生成apk文件时的一些信息,可以自己选择,但是一般建议使用默认的设置就可以。



  • Android Studio 最后Signature Version (签名版本选择) ,在打正式包的时候发现多了个签名版本选择:

从图中可以看到多了签名版本的选择,因为刚开始默认勾选的v2(Full APK Signature),没多想一路下一步下去,
结果在测试机上(5.0.1)一直都安装失败,想着和那个选择签名版本有关系,那就查查吧。
问题描述(v1和v2)
Android 7.0中引入了APK Signature Scheme v2,v1呢是jar Signature来自JDK
V1:应该是通过ZIP条目进行验证,这样APK 签署后可进行许多修改 - 可以移动甚至重新压缩文件。
V2:验证压缩文件的所有字节,而不是单个 ZIP 条目,因此,在签名后无法再更改(包括 zipalign)。正因如此,现在在编译过程中,我们将压缩、调整和签署合并成一步完成。好处显而易见,更安全而且新的签名可缩短在设备上进行验证的时间(不需要费时地解压缩然后验证),从而加快应用安装速度。

解决方案

v1和v2的签名使用
只勾选v1签名并不会影响什么,但是在7.0上不会使用更安全的验证方式
只勾选V2签名7.0以下会直接安装完显示未安装,7.0以上则使用了V2的方式验证
同时勾选V1和V2则所有机型都没问题

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|firemail ( 粤ICP备15085507号-1 )

GMT+8, 2024-11-22 23:20 , Processed in 0.061265 second(s), 22 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表