15 最后一步---将应用发布到360应用商店

15.1 生成正式签名的APK文件
并不是所有的APK文件都能成功安装到手机上,Android系统要求只有签名后的APK文件才可以安装。
以前练习时,Android Studio使用了一个默认的keystore文件帮我们自动进行了签名。我们所有通过Android Studio来运行的程序都是使用了这个debug.keystore文件来进行签名的。
15.1.1 使用Android Studio生成
点击Android Studio导航栏上的Build--->Generate SignedAPK。
在Validity一栏中填写keystore文件的有效时长,单位是年,一般建议时间可以填的长一些。




15.1.2 使用Gradle生成
上一小节中我们使用了Android Studio提供的可视化工具来生成带有正式签名的APK文件。Android Studio其实还提供了另外一种方式---使用Gradle生成。
编辑app/build.gradle文件,在android闭包中添加如下内容:
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "com.mengweather.android"
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
signingConfigs {
config {
storeFile file('E:/Key/Weather.jks')
storePassword '123456'
keyAlias 'Meng'
keyPassword '123456'
}
}**
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
在android闭包中添加了一个signingConfigs闭包,然后在signingConfigs闭包中又添加了一个config闭包。接着在config闭包中配置keystore文件的各种信息,storeFile用于指定keystore文件的位置,storePassword用于指定密码,keyAlias用于指定别名,keyPassword用于指定别名密码。
将签名信息都配置好了之后,接下来只需要在生成正式版APK的时候去应用这个配置就可以了。编辑app/build.gradle文件。
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
**signingConfig signingConfigs.config**
}
}
我们在buildTypes下面的release闭包中应用了刚才添加的签名配置,这样当生成正式版APK文件的时候就会使用我们刚才配置的签名信息来进行签名了。
那么我们如何才能生成APK文件呢?Android Studio中内置了很多的Gradle Tasks,其中就包括了生成APK文件的Task。
Gradle--->项目名--->:app--->Tasks--->build.

assembleDebug用于生成测试版的APK文件,assembleRelease用于生成正式版的APK文件,assemble用于同时生成测试版和正式版的APK文件。在生成APK文件之前,先要双击clean这个Task来清理一下当前项目,然后双击assembleRelease。
目前keystore文件的所有信息都是以明文的形式直接配置在build.gradle中的,这样就不太安全。
Android Studio项目的根目录下有一个gradle.properties文件,它是专门用来配置全局键值对数据的,我们在gradle.properties文件中添加如下内容:
KEY_PATH=E:/Key/Weather.jks
KEY_PASS=123456
ALIAS_NAME=Meng
ALIAS_PASS=123456
这里将keystore文件的各种信息以键值对的形式进行了配置,然后我们在build.gradle中去读取这些数据就可以了。
编译build.gradle文件
signingConfigs {
config {
storeFile file(KEY_PATH)
storePassword KEY_PASS
keyAlias ALIAS_NAME
keyPassword ALIAS_PASS
}
}
这里只需要将原来的明文配置改成相应的键值。