Android studio为apk签名
签名是什么
在日常生活中,我们的签名是为了身份的确认,对于计算机领域而言,起到的作用也是一样的。
为什么要给apk签名
如果你有过一段时间的android开发经验,你应该不难看出,在不同的文件夹下,我们能够创建一样名称的android项目,这就有可能导致我们的包名一样,都为com.example.xxx,那么我们在发布我们的android版本时,一但你的手机上有这个包名就会被检查为软件重装(一般情况下装不上,除非你打开了开发者模式,并且做过调试),这样就容易被恶意软件覆盖,为了安全性和唯一性,apk签名就是必然的了,现在的安卓手机在没做过开发者调试的情况下,基本不会让你装未签名的软件
同时签名也是开发者的身份标识,当交易中抵赖等事情发生,签名可以防止抵赖的发生
怎样去给apk签名
这里有好多种方法,我使用比较广泛的一种,使用Android Studio自带的签名打包工具,当然也可以使用命令行方式,具体参考这些文章
CSDN:(18条消息) Android命令行签名打包apk_zhangphil的博客-CSDN博客_android 命令行签名apk
博客园:Android 命令行打包和签名 - 我的小人生 - 博客园 (cnblogs.com)
稀土掘金:Android 命令行构建和签署APK - 掘金 (juejin.cn)
我的方法:AndroidStudio软件签名打包
打开AndroidStudio -> 点击顶部工具栏中的Build ->选择Generate Signed Bundle/APK ->选择APK next->创建一个新的签名文件(create new)或导入已有的签名文件(choose existing...),也可以选择记住密码,下次就不用自己输签名密码 了 next->选择release版本,勾选v1和v2,点击Finish就构建完成了
完成后点击OK,点击next
点击Finish即可完成构建
同时你可以在你项目文件夹的app中找到release文件夹
里面就有打包完成的apk啦,可以发到手机上运行了
apk的debug版本和release版本有什么不同
细心的小伙伴可能发现了,在我们构建完成那个页面还有个debug版本,那么debug版本和release版本有什么区别呢
1、releas版本与debug版本的applicationId不一样
为了客户端上两个版本共存,通常debug设置不同applicationId,这会导致需要填写applicationId申请的第三方平台使用不正常,比如小米推送和微信分享等。
2、混淆问题
这个坑我是多次涉入。
(1)使用Gson或者FastGson 转换Json字符后提供给某些类使用,比如Adapter。Release版本发现列表不能正常显示,结果是因为混淆的时候没有keep相关的Entity类。
(2) 使用反射,利用类名调起类时,注意keep该类,防止混淆。