简体   繁体   English

发布版本的不同版本代码

[英]Different version code for release version

I have a multi module Android project and my version code is 010007 but when I build for release with proguard and minify resources on I get APK with version code 4103(visible in outputs.json file generated by proguard). 我有一个多模块Android项目,我的版本代码为010007,但是当我使用proguard进行发行并最小化资源时,我会收到APK,版本代码为4103(在proguard生成的outputs.json文件中可见)。 This version code is still incremental meaning when my version code was 010006 in outputs.json version code was 4102. 当我的输出版本号是010006时,这个版本号仍然是递增的.json版本号是4102。

This is my output.json: 这是我的output.json:

[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":4103},"path":"ui-android-release.apk","properties":{"packageId":"com.example","split":"","minSdkVersion":"17"}}]

This is my dependencies.gradle which I use in project level gradle file: 这是我在项目级别gradle文件中使用的dependencies.gradle:

ext {
    // android
    applicationId = "com.example"
    compileSdkVersion = 26
    minSdkVersion = 17
    targetSdkVersion = 26
    versionCode = 010007
    versionName = "1.0.7"
    buildToolsVersion = "27.0.3"
    ...

And this is build.gradle of my ui-android module(and is similar to all modules): 这是我的ui-android模块的build.gradle(并且类似于所有模块):

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'

android {

    compileSdkVersion rootProject.compileSdkVersion
    buildToolsVersion rootProject.buildToolsVersion

    defaultConfig {
        applicationId rootProject.applicationId
        minSdkVersion rootProject.minSdkVersion
        targetSdkVersion rootProject.targetSdkVersion
        versionCode rootProject.versionCode
        versionName rootProject.versionName
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

    signingConfigs {
        release {
            storeFile file(RELEASE_STORE_FILE)
            storePassword RELEASE_STORE_PASSWORD
            keyAlias RELEASE_KEY_ALIAS
            keyPassword RELEASE_KEY_PASSWORD
        }
    }

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

configurations.all {
    resolutionStrategy {
        force "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    }
}

dependencies {
    rootProject.uiAndroidDependencies.each {
        add(it.configuration, it.dependency, it.options)
    }
}

Leading 0 in your versioncode is creating confusion. 版本代码前导0会造成混乱。 In Groovy programming language this specifies octal (base-8) number . 在Groovy编程语言中,这指定八进制数(以8为底的数字) And indeed, 10007 in octal is equal to 4103 in decimal. 实际上,八进制的10007等于十进制的4103。 You probably want to remove leading 0. 您可能要删除前导0。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM