android 签名打包(studio签名或者jarsign工具签名和signapk工具签名)

1、方式1:通过Android Studio进行签名:

选中app这个module,选择菜单栏"Build-Generate signed apk":

android 签名打包(studio签名或者jarsign工具签名和signapk工具签名)

弹出如下界面:

android 签名打包(studio签名或者jarsign工具签名和signapk工具签名)

上图中,如果你是第一次使用签名,就单击红框部分创建一个新的签名;如果你之前有过签名的文件,就选择蓝框部分进行导入即可。那我就先选择红框部分吧:

android 签名打包(studio签名或者jarsign工具签名和signapk工具签名)

android 签名打包(studio签名或者jarsign工具签名和signapk工具签名)

android 签名打包(studio签名或者jarsign工具签名和signapk工具签名)

android 签名打包(studio签名或者jarsign工具签名和signapk工具签名)

上图中,点击"finish"之后,可以看到Android Studio的最下方显示:Gradle正在执行assembleRelease这样一个任务,如下图所示:

android 签名打包(studio签名或者jarsign工具签名和signapk工具签名)

生成签名好的apk之后,会弹出提示:

android 签名打包(studio签名或者jarsign工具签名和signapk工具签名)

android 签名打包(studio签名或者jarsign工具签名和signapk工具签名)

 

 

2、方式2:通过命令行的方式进行签名:

(1)加载Key Store:

我们先删掉上面的通过第一种方式所签名的apk文件。接下来进行第二种方式来签名,即命令行的方式。

打开Project Stucture图形化界面:

android 签名打包(studio签名或者jarsign工具签名和signapk工具签名)

android 签名打包(studio签名或者jarsign工具签名和signapk工具签名)

上图中,选中app这个module,然后切换到singning标签栏,紧接着点击添加,然后生成release签名信息,紧接着点击"OK"。接着做如下操作:

android 签名打包(studio签名或者jarsign工具签名和signapk工具签名)

上图中,切换到Build Types标签,将Signing config选择为"release",即将刚刚生成的release签名信息配置进去。

操作完成之后,我们可以看到app这个module的build.gradle文件多出了如下红框部分的代码:

android 签名打包(studio签名或者jarsign工具签名和signapk工具签名)

然后执行菜单栏的"build-clean Project":

android 签名打包(studio签名或者jarsign工具签名和signapk工具签名)

(2)生成realease版本的apk:

紧接着在命令行Terminal输入如下命令:(AS已经将命令行Terminal集成到了软件当中)

gradlew assembleRelease

如果运行成功,效果如下:

android 签名打包(studio签名或者jarsign工具签名和signapk工具签名)

生成的签名好的apk在如下位置:

android 签名打包(studio签名或者jarsign工具签名和signapk工具签名)

 

3、为什么要使用gradlew命令而不是gradle命令:

在HelloWorld工程目录下有一个gradle文件夹,在gradle/wrapper目录下有一个gradle-wrapper.properties文件,打开它:

android 签名打包(studio签名或者jarsign工具签名和signapk工具签名)

上图代表着HelloWorld这个工程所依赖的gradle的版本信息。上图的红线表示,如果我们的工程中没有gradle,软件会根据这个url去下载gradle,终于知道为啥第一次打开AS时会这么慢了吧?

如果我们执行了gradlew命令,实际上是执行上面的gradle wrapper,然后找到我们已经下载好的gradle 2.2.1。如果现在有很多个工程,但是每个工程的gradle版本都不一样,我就必须要将每个版本的gradle都要配置到环境变量当中,而执行了gradlew命令,就会避免这个麻烦。