apk签名简介
所有的Android应用程序都要求开发人员用一个证书进行数字签名,Android系统不会安装没有进行签名的应用程序。
在应用程序开发期间,由于是以Debug
调试模式编译的,因此IDE(ADT)根据会自动用默认的密钥和证书来进行签名,而以Release
发布模式编译时,apk文件就不会得到自动签名,这样就需要进行手工签名。
apk签名的好处有:
- 应用程序升级
只有以同一个证书签名,系统才会允许安装升级的应用程序。
如果你采用了不同的证书,那么系统会要求你的应用程序采用不同的包名称,在这种情况下相当于安装了一个全新的应用程序。 - 应用程序模块化
Android 系统可以允许同一个证书签名的多个应用程序在一个进程里运行,系统实际把他们作为一个单个的应用程序,此时就可以把我们的应用程序以模块的方式进行部署,而用户可以独立的升级其中的一个模块。 - 数据或代码共享
Android提供了基于签名的权限机制,那么一个应用程序就可以为另一个以相同证书签名的应用程序公开自己的功能。
步骤
- 创建一个签名文件。签名文件是一个包含私钥的二进制文件。你必须保证你的签名文件放置在一个安全的地方。
- 创建一个私钥。密钥代表一个应用的标识。
- 在你项目的build.gradle中添加如下代码:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
在配置好build.gradle文件之后,我们就可以使用命令行或者是Android Studio来生成签名文件。(这里要说的是:使用Android Studio是对命令的封装。它们本质都是调用 grale的命令来执行打包过程。)
操作
使用Android Studio生成签名APK
在Android studio中。通过 Build –> Generate Signed Apk,进入到module选择对话框。选择一个Module。如下图:
。
点击 Next,进入到密钥选择界面。点击 Create new 按钮。如下图:
(注意:如果你是首次使用Android Studio来创建密钥,界面中的输入框都没有内容,因为我已经创建过一次,所以这里会有内容。)点击按钮之后,会进入到填写密钥信息界面。
填写完以后,会返回到上以页面,并且把信息会带过来,在上一张图片对应得对话框点击Next,进入到设置APK文件和导出哪种模式的APK的对话框。选择 realease,点击Finish按钮,就会在你设置的目录下面生成对应的APK。
使用命令行(MAC),生成签名APK。
在命令行,进入到项目(project,一定是project,而不是Module)对应的目录。先执行
chmod +x gradlew
改变gradle的权限。然后运行:
./gradlew assembleRelease
会看到在名命令行会出现打包进度。截图如下:
在微信开放平台,申请移动应用的时候:
https://open.weixin.qq.com/cgi-bin/appcreate?t=manage/createMobile&type=app&lang=zh_CN&token=60682ddfbd9106b1c4b1f9d70f56c98e5f728905
下一步后需要填写应用签名
这可难倒了我了..签名 keystore文件可没有这么简单.
"开发者可以使用签名工具直接从安装当前应用的手机中获取"
查找文档,根据这个页面提供的一个工具 签名生成工具
https://open.weixin.qq.com/cgi-bin/readtemplate?t=resource/app_download_android_tmpl&lang=zh_CN
可以一个字符串,类似于:
应用签名:049a9fde46bfc5087f3825582208b248
安装这个应用可以获取本手机已经安装的某个android软件,根据软件的包名,类似于: com.demo.AppX 来查找这个软件,以及获取这个软件的 应用签名。