在开发过程中,有时候在第三方集成时候,会遇到测试环境无法调试或调用失败的情况。例如第三方的分享和登录,需要软件签名之后才能成功调用第三方的接口。但是调试过程中频繁打包签名很麻烦,效率也很低。那么有什么方法,可以不用打包去签名呢?方法当然是有的,下面就介绍几种签名的方法。
1. 签名配置
(一)通过项目配置界面配置签名
1)点击 File —— Project Structure... 进入项目配置界面;
项目配置图
2)选择 app —— Singing —— Add 添加签名相关信息;
配置项目签名图
3)选择 Build Types —— Singing Config 创建签名配置,点击 OK
创建签名配置图
(二)通过 Gradle命令在 build.gradle 文件中配置签名
1)在项目app目录下的build.gradle里配置签名信息:
android {
signingConfigs {
debug {
keyAlias 'key'
keyPassword '123456'
storeFile file('E:/key/keys.jks')
storePassword '123456'
}
release {
keyAlias 'key'
keyPassword '123456'
storeFile file('E:/key/keys.jks')
storePassword '123456'
}
}
buildTypes {
debug {
debuggable true
zipAlignEnabled true
debuggable true
minifyEnabled false //是否混淆
shrinkResources false //是否去除无效的资源文件
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.debug
}
release {
zipAlignEnabled true
debuggable false
minifyEnabled true //是否混淆
shrinkResources true //是否去除无效的资源文件
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
...
}
(三)通过 Gradle命令在 local.properties 和 build.gradle 文件中配置签名
项目下的local.properties主要存储环境资源的相关信息。默认是被忽略的,不会添加到版本控制里面,对于里面的配置信息会相对安全不会泄露。
1)在项目根目录下local.properties里自定义配置:
# sdk、ndk路径
ndk.dir=E\:\\SDK\\ndk-bundle
sdk.dir=E\:\\SDK
# 签名文件
key.file=E\:\\key\\keys.jks
keyPassword=123456
keyAlias=key
storePassword=123456
2)在项目app目录下的build.gradle里读取local.properties字段信息:
android {
//加载资源
Properties properties = new Properties()
InputStream inputStream = project.rootProject.file('local.properties').newDataInputStream()
properties.load(inputStream)
//读取文件
def sdkDir = properties.getProperty('key.file')
//读取字段
def keyfile =file(sdkDir)
def key_keyAlias = properties.getProperty('keyAlias')
def key_keyPassword = properties.getProperty('keyPassword')
def key_storePassword = properties.getProperty('storePassword')
signingConfigs {
release {
storeFile keyfile
storePassword key_storePassword
keyAlias key_keyAlias
keyPassword key_keyPassword
}
debug{
storeFile keyfile
storePassword key_storePassword
keyAlias key_keyAlias
keyPassword key_keyPassword
}
}
buildTypes {
debug {
debuggable true
zipAlignEnabled true
debuggable true
minifyEnabled false //是否混淆
shrinkResources false //是否去除无效的资源文件
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
if (keyfile.exists()) {
signingConfig signingConfigs.debug
}
}
release {
zipAlignEnabled true
debuggable false
minifyEnabled true //是否混淆
shrinkResources true //是否去除无效的资源文件
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
if (keyfile.exists()) {
signingConfig signingConfigs.release
}
}
}
...
}
方法二 和 方法三 其实是一样的,只是写法不同,方法三 比 方法二 便利和安全。
2. 执行打包
3. 签名查看
查看应用签名方法,详细方法请移驾 —— 《Android查看应用签名方法》