第十一篇 Android Studio配置gradle实现一键打包以及自定义apk的文件名

时间:2024-04-07 10:01:05
传统的打包方式,是通过Build-->>generate signed APK,选择正式签名文件进行打包。但这样做的缺陷是,如果切换过工程,执行generate signed APK的时候又需要重新选择签名文件、填写密码等,比较麻烦。


解决办法:通过配置gradle,来一键打包。


解决步骤:


1.进入Project Structure,或者直接按快捷键Ctrl+Alt+Shift+S,选择需要自动打包配置的app,选择Siging,新增并填写信息。然后选择Build Types-->>release-->>Signing Config,选择刚才配置的签名信息,最后点击ok,如下图:


第十一篇 Android Studio配置gradle实现一键打包以及自定义apk的文件名

第十一篇 Android Studio配置gradle实现一键打包以及自定义apk的文件名

执行成功后,会在gradle生成如下图:


第十一篇 Android Studio配置gradle实现一键打包以及自定义apk的文件名


2.隐藏gradle中签名信息,在电脑硬盘中任意位置新建一个keystore.properties文件,并添加如下信息(具体签名信息根据自己的进行修改):

第十一篇 Android Studio配置gradle实现一键打包以及自定义apk的文件名



新建keystore.properties后,修改gradle配置,如下:

第十一篇 Android Studio配置gradle实现一键打包以及自定义apk的文件名



apply plugin: 'com.android.application'


// Create a variable called keystorePropertiesFile, and initialize it to your
// keystore.properties file, in the rootProject folder.
def keystorePropertiesFile = rootProject.file("E://keystore.properties")


// Initialize a new Properties() object called keystoreProperties.
def keystoreProperties = new Properties()


// Load your keystore.properties file into the keystoreProperties object.
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))


android {
   signingConfigs {
        config {
            keyAlias keystoreProperties['keyAlias']
            keyPassword keystoreProperties['keyPassword']
            storeFile file(keystoreProperties['storeFile'])
            storePassword keystoreProperties['storePassword']
        }
    }


    ...
}


注意:1.rootProject.file("E://keystore.properties"),这里是使用绝对路径,而且配置是"//"不是"\\".
      如果keystore.properties是在当前工程下,则直接用rootProject.file("keystore.properties").如果keystore.properties是在appworkspace目录下,则使用rootProject.file("../keystore.properties").
      绝对路径写法,如:rootProject.file("E://android/appworkspace/keystore.properties")


      2.签名文件信息不要写错,否则会报keyToolException.




3.选择Build-->>Select Build Variants,选择相应的model,然后选择Build Variant为release,如下图:


第十一篇 Android Studio配置gradle实现一键打包以及自定义apk的文件名



注意:这里如果工程需要dubug调试工程app,打包apk到模拟器,则需要切换Build Variant为debug.


4.最后选择相应的model,即app,然后点击Build-->>Build APK,生成apk即可。


注意:apk最终生成在outputs目录下,不一定是android studio提示Show in Explorer的路径。



配置gradle实现自定义apk的文件名:


apply plugin: 'com.android.application'


def releaseTime() {
    String date =new Date().format("yyyyMMdd", TimeZone.getTimeZone("UTC"))
    return date.substring(2)
}

...

android{

...

   //指定打包后apk文件名称
    android.applicationVariants.all { variant ->
        variant.outputs.each { output ->
            def outputFile = output.outputFile
            if (outputFile != null && outputFile.name.endsWith('.apk')) {
                if (variant.buildType.name.equals('release')) {
                    //这里修改apk文件名
                    def fileName = "APPNAME-APP_FJ-${defaultConfig.versionName}-BETA-${releaseTime() }.apk"
                    output.outputFile = new File(outputFile.parent, fileName)
                }


            }
        }
    }

}