What causes this Android APK Upload error: “Non-upgradable APK”

前端 未结 6 901
醉梦人生
醉梦人生 2020-12-31 00:31

I have an Android APK in the Google Play store with an Target SDK of 23.

I have released a new version (same target SDK) and Google shows me this error:

If I

6条回答
  •  一向
    一向 (楼主)
    2020-12-31 00:38

    I ran into a similar problem but was able to solve it with the following Node script used as part of my continuous deployment pipeline.

    Note:

    This reads from a VERSION.md file that contains the current app version.

    It may also be run with the --version argument to only update the current version in config.xml without setting the build versions.

    #!/usr/bin/env node
    
    var fs = require('fs');
    var xml2js = require('xml2js');
    const cliArgs = require('command-line-args');
    const options = cliArgs([
        {name: 'version', type: Boolean}
    ]); 
    
    // Read config.xml
    var xml = fs.readFileSync('config.xml', 'utf8');
    
    // Parse XML to JS Obj
    xml2js.parseString(xml, function (err, result) {
        if(err) {
            return console.log(err);
        }
    
        // Get JS Obj
        var obj = result;
        const version = fs.readFileSync('VERSION.md', 'utf8');
    
        if (options.version){
            // Write current version
            obj['widget']['$']['version'] = version;
        } else {
            // Increment build numbers (separately for iOS and Android)
            obj['widget']['$']['ios-CFBundleVersion'] = version;
            // remove all periods to create an integer for Android
            const [major, minor, patch] = version.split('.')
            obj['widget']['$']['android-versionCode'] = major+pad_number(minor)+pad_number(patch);
        }
    
        // Build XML from JS Obj
        var builder = new xml2js.Builder();
        var xml = builder.buildObject(obj);
    
        // Write config.xml
        fs.writeFile('config.xml', xml, function(err) {
            if(err) {
                return console.log(err);
            }
            
            console.log('Build number successfully incremented');
        });
    
    });
    
    /**
     * Pad a number with prepending zeros if less than 10
     * @see [Javascript function to pad a string](https://stackoverflow.com/questions/2686855/is-there-a-javascript-function-that-can-pad-a-string-to-get-to-a-determined-leng)
     */
    function pad_number(orig) {
        return ("00"+orig).slice(-2);
    }
    

提交回复
热议问题