本文转载自:http://blog.csdn.net/shineflowers/article/details/45042485
官方文档:https://developer.android.com/tools/publishing/app-signing.html

默认为debug mode,使用的签名文件在: $HOME/.android/debug.keystore
比如 C:\Users\chengcj1.android\debug.keystore
1.利用Gradle命令行进行签名

a. Release Mode 签名:
build.gradle:
[plain] view plaincopy

在CODE上查看代码片 派生到我的代码片

android {
signingConfigs {
releaseConfig {
keyAlias 'stone'
keyPassword 'mypwd'
storeFile file('/Users/stone/Documents/project_AS/myapplication/stone.keystore')
storePassword 'mypwd'
}
}
buildTypes {
release {
...
signingConfig signingConfigs.release
}
}

}

signingConfigs 即签名配置。 配置名releaseConfig{ //配置内容 }
在buildTypes中指定release时的signingConfigs对应的配置名

b. 执行gradle 命令, $ gradlew assembleRelease
编译并发布。 在build/outputs/apk/ 下能看到未签名的apk 和 已经签名的apk
如果未用签名文件,使用debug mode的debug签名。那就会生成一个debug签名的apk

c. 签名密码写在gradle中不安全:

[plain] view plaincopy

在CODE上查看代码片 派生到我的代码片

signingConfigs { //gradle assembleRelease
myConfig {
storeFile file("stone.keystore")
storePassword System.console().readLine("\nKeystore password: ")
keyAlias "stone"
keyPassword System.console().readLine("\nKey password: ")
}
}

这样在命令 执行 命令时,就会被要求输入密码

2. 使用Android Studio 签名打包

菜单 Build > Generate Signed APK

3. 使用Android Studio 自动签名打包
a. 打开Project Structure,打开方法如下:


b. 选中需要构建的moudle,打开Signing,添加config

执行完成后,会在build.gradle中自动加上 signingConfigs{ config {...} }的信息
c. 打开Build Types -> release

在signing Config中选择定义的配置
zip align enabled 默认为true, 用于启用优化Apk的操作
d. $ gradle build
会在build/outputs/apk/ 目录下输出 在build types中定义的编译类型。如:
myapplication-debug-unaligned.apk myapplication-debug.apk myapplication-release-unaligned.apk myapplication-release-unsigned.apk myapplication-release.apk

4. 使用Android SDK 和 JDK 的命令 签名打包APK
创建签名 keytool -genkey -v -keystore stone.keystore -alias stone -keyalg RSA -keysize 2048-validity 10000 生成签名文件 为apk签名 jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore stone.keystore unsigned.apk stone 不生成新文件 检测apk是否签名 jarsigner -verbose -certs -verify signed.apk 优化apk zipalign -f -v 4 signed_unaligned.apk signed_aligned.apk

更多相关文章

  1. 箭头函数的基础使用
  2. NPM 和webpack 的基础使用
  3. Python list sort方法的具体使用
  4. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  5. Android(安卓)JNI 获取应用程序签名
  6. Android(安卓)kernel 下载编译笔记
  7. 在linux下编译Android
  8. Android(安卓)利用canvas画各种图形(点、直线、弧、圆、椭圆、文
  9. Android下使用Socket连接网络电脑

随机推荐

  1. sqlserver服务器验证改为混合验证模式步
  2. c语言http请求解析表单内容
  3. SqlServer中用exec处理sql字符串中含有变
  4. 命令行启动mssqlserver服务的方法示例
  5. SQLServer用t-sql命令批量删除数据库中指
  6. sqlserver数据库移动数据库路径的脚本示
  7. t-sql清空表数据的两种方式示例(truncate
  8. MSSQLSERVER跨服务器连接(远程登录)的示
  9. t-sql/mssql用命令行导入数据脚本的SQL语
  10. mssql函数DATENAME使用示例讲解(取得当前