当前位置:   article > 正文

Android Gradle实现一键签名打包_gradle打包apk

gradle打包apk

手动打包签名

  1. Build—>Generate Singned Bundle or APK—>APK Next

  2. 选择你的密钥,填入key和两个密码,Next

  3. 选择Build Variants,签名版本(V1必选,V2可选),Finish

AS就会开始帮我们打包,打包成功后,右下角会有提示:

APK(s) generated successfully for module 'app' with 1 build variant: 
Build variant 'xiaomiRelease': locate or analyze the APK.
  • 1
  • 2

点击locate,就可以直接访问文件夹找到打包签名完毕后的APK。

自动打包签名

AS设置签名

可以如下图使用 AS设置签名,点击apply后自动在Gradle中生成代码。
也可以自己复制添加签名代码。
在这里插入图片描述

android {

    ...

    signingConfigs {
        sing {
            storeFile file('your.jks')
            storePassword 'storePassword'
            keyAlias = 'keyAlias'
            keyPassword 'keyPassword'
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.sing
        }
        debug {
            signingConfig signingConfigs.sing
        }
    }

    ...

 }   
  • 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
一键打包

如果我们的app配置了多渠道。我们可以:
Gradle—>app—>build—>assemble+渠道名—>双击Run
即可自动打包对于渠道的APK。
也可以如下图,一键Run打包所有渠道的APK,简单省事。
在这里插入图片描述

自定义出输出路径,apk文件名

注意:

  1. 文件名中不能出现/字符,否则会被分割成文件名。
  2. 文件名中不能包含一些特殊字符如冒号(中文英文冒号都不行),编译会报错。
android {
	...
applicationVariants.all { variant ->
        //release包才执行
        if (variant.name != "release") return
        variant.outputs.all() { output ->
            def outputFile = output.outputFile
            if (outputFile != null && outputFile.name.endsWith('.apk')) {
                //打包时间 yyyy-MM-dd HH:mm
                def formattedDate = new Date().format('MM-dd_HH.mm')
                // 自定义文件名
                outputFileName = "App-${variant.flavorName}-${variant.buildType.name}_v${defaultConfig.versionName}(${formattedDate}).apk"
                // 自定义输出路径
                variant.getPackageApplication().outputDirectory = new File(rootDir.absolutePath + "/app/apks")
            }
        }
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
Gradle 7.0+

API ‘variant.getPackageApplication()’ is obsolete and has been replaced with ‘variant.getPackageApplicationProvider()’.

//把getPackageApplication()改成getPackageApplicationProvider().get()即可.
// 自定义输出路径
variant.getPackageApplicationProvider().get().outputDirectory = new File(rootDir.absolutePath + "/app/apks")
  • 1
  • 2
  • 3

参考

Android Studio 配置多渠道一键打包,自动签名

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/622784
推荐阅读
相关标签
  

闽ICP备14008679号