Android gradle自動打包

1.添加jks相關(guān)配置

圖片.png

圖片.png

test.properties

KEYSTORE_FILE=../key/test.jks
KEYSTORE_PASSWORD= 123456
KEY_ALIAS=a
KEY_PASSWORD=123456

注意這里使用的相對路徑

build.gradle

//加載簽名配置的文件
Properties props = new Properties()
props.load(new FileInputStream(file("../key/test.properties")))
android {
    compileSdkVersion 30
    buildToolsVersion "30.0.3"

    defaultConfig {
        applicationId "com.sevenday.mytest"
        minSdkVersion 21
        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'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = '1.8'
    }

    signingConfigs {
        release {
            keyAlias props['KEY_ALIAS']
            keyPassword props['KEY_PASSWORD']
            storePassword props['KEYSTORE_PASSWORD']
            v1SigningEnabled true
            v2SigningEnabled true
            storeFile file(props['KEYSTORE_FILE'])
        }
    }

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


        }
    }

}

2.打包方式

默認方式

按照第一步配置就可以打包了
1.使用工具欄中build方式


圖片.png

2.直接使用gradle中task的build任務(wù)


圖片.png

結(jié)果:在默認文件夾中生成apk


圖片.png

修改包名

在默認方式中,我們一般會添加修改包名的方式


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


            applicationVariants.all { variant  ->
                if (variant.buildType.name.equals('release')) {
                    variant.outputs.all { output ->
                        def buildName = "Downloader"
                        def type = variant.buildType.name
                        def releaseApkName = buildName + '_' + type + "_" + versionName  + '.apk'
                        outputFileName = releaseApkName

                    }
                }
            }


        }
圖片.png

修改包名,修改保存路徑

圖片.png

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


            applicationVariants.all { variant  ->
                if (variant.buildType.name.equals('release')) {
                    variant.outputs.all { output ->
                        def buildName = "Downloader"
                        def type = variant.buildType.name
                        def releaseApkName = buildName + '_' + type + "_" + versionName  + '.apk'
                        outputFileName = releaseApkName
                        variant.packageApplication.outputDirectory = new File("./apk")
                    }
                }
            }


        }

使用task任務(wù)移動apk

圖片.png
/// **********************移動文件*************************
build {
    doLast {
        def outFileDir = "../out";
        FileTree tree = fileTree(dir: './build/outputs/apk/')
        tree.include '**/app-*.apk'
        tree.exclude '**/output.json'
        // 遍歷文件樹
        println "projectDir=$projectDir rootDir=$rootDir buildDir=$buildDir"
        tree.each {File file ->
            if (file.name.startsWith("app-")&&file.name.endsWith(".apk")) {
                println file.absolutePath
//                def fileName=""
//                def fileName=outFileDir + "/vspn_v${android.defaultConfig.versionName}_v${android.defaultConfig.versionCode}_${releaseTime}_Build${buildSerialNumber}"
                def fileName=outFileDir + "/test_v${android.defaultConfig.versionName}_v${android.defaultConfig.versionCode}"

                if (file.name.contains("debug")){
                    fileName+="_debug"
                }
                fileName+=".apk"
                //file.renameTo(fileName)
                copy {
                    from file
                    into outFileDir
                    rename {
                        String srcFileName ->fileName
                    }
                }
            }
        }
        println("=====================build.doLast success.=========================")
    }
}
圖片.png

只是移動打包好的apk文件,并改名

參考:
gradle 指定導(dǎo)出包的名字和路徑

安卓Gradle腳本實現(xiàn)自動打包后復(fù)制一份APK文件,并修改APK名稱,到指定目錄作備份

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容