美文网首页
Android 生成签名文件

Android 生成签名文件

作者: Ello_Orld | 来源:发表于2021-03-21 13:28 被阅读0次
  1. 安装java环境
  2. 终端进入项目App目录,输入

keytool -genkey -v -keystore release-key.keystore -alias alias_name -keyalg RSA -validity 100000 

回车,按提示输入密码及一些信息,全部输入完成后,会在App目录生成一个key文件
但是这时候控制台warning:

Warning:
JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore release-key.keystore -destkeystore release-key.keystore -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。

按照其提示进行迁移
输入

keytool -importkeystore -srckeystore release-key.keystore -destkeystore release-key.keystore -deststoretype pkcs12

再次按照提示输入完成后,会重新生成一个key文件,原来的key进行了.old命名,可以删除掉。

配置build.gradle,方便打包:

signingConfigs {
        debug {
            略
        }

        release {
            keyAlias 'alias_name'
            keyPassword 'xxxxxxx'
            storeFile file("release-key.keystore")
            storePassword 'xxxxxxx'
            v1SigningEnabled true
            v2SigningEnabled true
        }
    }

指定输出名和输出目录

 applicationVariants.all {
        variant ->
            variant.outputs.all {
                //只处理生产版本
                if (buildType.name == 'release') {
                    def createTime = new Date().format("YYYY-MM-dd", TimeZone.getTimeZone("GMT+08:00"))
                    // app包名称
                    outputFileName = "AppName_V" + variant.versionName + "_" + createTime + "_" + buildType.name + ".apk"
                    ////指定release输出到指定文件夹
                                        variant.packageApplicationProvider.get().outputDirectory = new File("./apk")

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

打包时,


image.png

双击assemble即可在apk目录生成打包的apk文件

完整build.gradle

plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'kotlin-kapt'
}

android {
    compileSdkVersion 30
    buildToolsVersion "30.0.2"

    buildFeatures {
        dataBinding = true
        viewBinding = true
    }

    signingConfigs {
        debug {
            keyAlias 'alias_name'
            keyPassword 'xxxxxxx'
            storeFile file("release-key.keystore")
            storePassword 'xxxxxxxx'
            v1SigningEnabled true
            v2SigningEnabled true
        }

        release {
            keyAlias 'alias_name'
            keyPassword 'xxxxxxxx'
            storeFile file("release-key.keystore")
            storePassword 'xxxxxxxx'
            v1SigningEnabled true
            v2SigningEnabled true
        }
    }

    //release版本输出包名自动追加版本号和版本名称
    applicationVariants.all {
        variant ->
            variant.outputs.all {
                //只处理生产版本
                if (buildType.name == 'release') {
                    def createTime = new Date().format("YYYY-MM-dd", TimeZone.getTimeZone("GMT+08:00"))
                    // app包名称
                    outputFileName = "XXXX_V" + variant.versionName + "_" + createTime + "_" + buildType.name + ".apk"
                    ////指定release输出到指定文件夹
                                        variant.packageApplicationProvider.get().outputDirectory = new File("./apk")

                }
            }
    }

    defaultConfig {
        applicationId "com.dxl.xxx"
        minSdkVersion 22
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = '1.8'
    }
}

dependencies {

    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    implementation 'androidx.core:core-ktx:1.3.2'
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'com.google.android.material:material:1.2.1'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}

相关文章

网友评论

      本文标题:Android 生成签名文件

      本文链接:https://www.haomeiwen.com/subject/wfbncltx.html