注: 给我们自己开发的app签名,就代表自己的版权,以后要进行升级也必须使用相同的签名才可以.签名代表着自己的身份(即keystore),多个app可以使用同一个签名
方式1:通过Android Studio进行签名:
选中app这个module,选择菜单栏"Build-Generate signed apk":
会弹出如下界面:
上图中,如果是第一次使用,选择create ,创建一个新的签名,如果之前有过签名文件,可以选择choose,选择你之前的签名文件即可.点击create 会出现以下界面:
点击next出现以下内容,默认已经填写别名及密码
继续点击next
如果你Android studio 是3.0版本以上的,会有这两个选项,全部勾选上
点击finish就打包完成了, 然后根据你apk输出的路径,就可以找到你打包生成的apk了
方式2:通过命令行的方式进行签名:
(1)首先加载key store
我们先删除上面第一种方式签名打包的apk文件, 下面使用命令行进行签名打包
打开Project Stucture图形化界面,按照顺序点击
上图中,选中module,然后切换到singning标签栏,填写完信息后,点击ok 接着如下操作:
上图中,切换到Build Types标签,将Signing config选择为"release",即将刚刚生成的release签名信息配置进去。
操作完成之后,我们可以看到app这个module的build.gradle文件多出了如下红框部分的代码:
然后 Clean Project
(2)生成 release版本的apk
紧接着在命令行Terminal输入如下命令:(AS已经将命令行Terminal集成到了软件当中)
gradlew assembleRelease
如果运行成功,效果如下:
生成的apk和你调试时生成debug包 在同一个路径下,只是包名一个是debug一个是release,如下
3、为什么要使用gradlew命令而不是gradle命令
在工程目录下有一个gradle文件夹,在gradle/wrapper目录下有一个gradle-wrapper.properties文件,打开它:
上图代表着工程所依赖的gradle的版本信息。上图的红线表示,如果我们的工程中没有gradle,软件会根据这个url去下载gradle,终于知道为啥第一次打开AS时会这么慢了吧?
如果我们执行了gradlew命令,实际上是执行上面的gradle wrapper,然后找到我们已经下载好的gradle 4.1。如果现在有很多个工程,但是每个工程的gradle版本都不一样,我就必须要将每个版本的gradle都要配置到环境变量当中,而执行了gradlew命令,就会避免这个麻烦。