Android app packaging and release build.gradle configuration

Configuration description: Configure in the build.gradle(:app) file

Contains the following parts:

  1. plugins: introduced tools
  2. android: The main configuration is in this
  3. dependencies: dependencies
  4. android.applicationVariants.all: package output path and name

Look at the android configuration:

Signature configuration:

signingConfigs {
        release {
            storeFile file("签名路径.jks")
            storePassword "密码"
            keyAlias "签名别名"
            keyPassword "密码"
        }
    }

debug and release configuration

buildTypes {
        debug {
//          signingConfig signingConfigs.adDebug
            signingConfig signingConfigs.release
            minifyEnabled true
            zipAlignEnabled true
            proguardFile('proguard-android.txt')
            proguardFile('proguard-rules.pro')
            manifestPlaceholders = [AD_LOG:false]
        }
        release {
            signingConfig signingConfigs.release
            minifyEnabled true
            zipAlignEnabled true
            proguardFile('proguard-android.txt')
            proguardFile('proguard-rules.pro')
            manifestPlaceholders = [AD_LOG:false]
        }
    }

Output channel

productFlavors {
        渠道名称1 {
            versionCode 100100
            versionName "0.1.0"
            buildConfigField("String", "CHANNEL", "\"unknown\"")
        }
        渠道名称2 {
            versionCode 1
            versionName "1.1"
            buildConfigField("String", "CHANNEL", "\"hw_cn\"")
        }
    }

View channels

 Package selection channel

Output package name, the following configuration is the same asandroid

static def releaseTime() {
    return new Date().format("yyyyMMdd.kkmm", TimeZone.getTimeZone("GMT+8"))
}

android.applicationVariants.all { variant ->
    println('============')
    println(variant.name)

    variant.outputs.each { output ->
        def file = output.outputFile
        output.outputFileName = file.name.replace(".apk", "-描述信息-${variant.versionName}-${variant.versionCode}-${releaseTime()}.apk")
        println(output.outputFileName)

    }
}

Complete build.gradle file

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


android {
    compileSdk 33

    defaultConfig {
        applicationId "your id"
        minSdk 21
        targetSdk 33
        versionCode 1
        versionName "1.0"
        flavorDimensions "version"

        ndk {
            abiFilters 'armeabi-v7a', 'arm64-v8a'
        }

        packagingOptions {
            doNotStrip "*/armeabi-v7a/*.so"
            doNotStrip "*/x86/*.so"
            doNotStrip "*/arm64-v8a/*.so"
            doNotStrip "*/x86_64/*.so"
            doNotStrip "armeabi.so"
        }

        viewBinding {
            enabled = true
        }

    }

    signingConfigs {
        release {
            storeFile file("xxxx.jks")
            storePassword "密码"
            keyAlias "别名"
            keyPassword "密码"
        }
    }
    buildTypes {
        debug {
//          signingConfig signingConfigs.adDebug
            signingConfig signingConfigs.release
            minifyEnabled true
            zipAlignEnabled true
            proguardFile('proguard-android.txt')
            proguardFile('proguard-rules.pro')
            manifestPlaceholders = [AD_LOG:false]
        }
        release {
            signingConfig signingConfigs.release
            minifyEnabled true
            zipAlignEnabled true
            proguardFile('proguard-android.txt')
            proguardFile('proguard-rules.pro')
            manifestPlaceholders = [AD_LOG:false]
        }
    }
    productFlavors {
        渠道1 {
            versionCode 100100
            versionName "0.1.0"
            buildConfigField("String", "CHANNEL", "\"unknown\"")
        }
        渠道2 {
            versionCode 1
            versionName "1.1"
            buildConfigField("String", "CHANNEL", "\"hw_cn\"")
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = '1.8'
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
//    implementation fileTree(dir: './libs/ad', include: ['*.jar', '*.aar'])
    implementation fileTree(dir: './libs/ks_content', include: ['*.jar', '*.aar'])
//    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    implementation 'androidx.core:core-ktx:1.6.0'
    implementation 'androidx.appcompat:appcompat:1.3.1'
    implementation 'com.google.android.material:material:1.4.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.2'
    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0'
    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0'

}

static def releaseTime() {
    return new Date().format("yyyyMMdd.kkmm", TimeZone.getTimeZone("GMT+8"))
}

android.applicationVariants.all { variant ->
    println('============')
    println(variant.name)

    variant.outputs.each { output ->
        def file = output.outputFile
        output.outputFileName = file.name.replace(".apk", "-描述-${variant.versionName}-${variant.versionCode}-${releaseTime()}.apk")
        println(output.outputFileName)

    }
}

Guess you like

Origin blog.csdn.net/Steve_XiaoHai/article/details/132449440