codepush update's appVersion is incorrect. It's always the same as the current app's version

谁都会走 提交于 2019-12-11 06:34:10

问题


I am trying to get codepush working for my react-native app on Android. For better understanding and control, i am manually checking for updates. Here's my code:

// Check for Codepush app update every time app is opened.
console.log('Checking for codepush update !');
codePush.checkForUpdate(CODEPUSH_DEPLOYMENT_KEY, (update) => {console.log('handleBinaryVersionMismatchCallback: ', update)})
    .then((update) => {
        console.log('Code push remote package: ', update);
        if (update != null) {
            let desc = update['description'];
            let newVersion = update['appVersion'];
            let currentVersion = RNDeviceInfo.getVersion();
            console.log('current version: ', currentVersion);

            let currentSemVer = currentVersion.split('.');
            let newSemVersion = newVersion.split('.');
            let curV = parseFloat(currentSemVer[1] + '.' + currentSemVer[2]);
            let newV = parseFloat(newSemVersion[1] + '.' + newSemVersion[2]);
            console.log('currentSemVer:', currentSemVer);
            console.log('newSemVersion:', newSemVersion);
            console.log('curV:', curV);
            console.log('newV:', newV);

            if (currentVersion === newVersion) {
                console.log('Exact same version. Ignoring codepush');
                return;
            }
            if (newSemVersion[0] !== currentSemVer[0]) {
                console.log('Major version mismatch. Ignoring codepush');
                return;
            }
            if (newV < curV) {
                console.log('Older version. Ignoring codepush');
                return;
            }

            codePush.sync({
                updateDialog: true,
                installMode: codePush.InstallMode.IMMEDIATE,
            });
        }
    });

To release a new update, i update the android/app/build.gradle file like this:

android {
    compileSdkVersion rootProject.ext.compileSdkVersion
    buildToolsVersion rootProject.ext.buildToolsVersion

    defaultConfig {
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
        versionCode 8
        versionName "2.2.6"

and

appcenter codepush release-react -a <appname> -t ">=2.0.0 <=2.2.9" -d Production --description 'Trying to get codepush working'

In logcat, i can see that its getting the update, however, the appVersion of the update is the same as the app that was installed from playstore. Have tried multiple releases on codepush, the label increments, but the appVersion does not.

10-07 10:14:51.798 7668-7701/? I/ReactNativeJS: 'Code push remote package: ', { deploymentKey: '<key>',
      description: 'Trying to get codepush working',
      label: 'v8',
      appVersion: '2.2.5',
      isMandatory: false,
      packageHash: '<>',
      packageSize: 616685,
      downloadUrl: '<>',
      download: [Function],
      isPending: false,
      failedInstall: false }
    'current version: ', '2.2.5'
    'currentSemVer:', [ '2', '2', '5' ]
    'newSemVersion:', [ '2', '2', '5' ]
10-07 10:14:51.799 7668-7701/? I/ReactNativeJS: 'curV:', 2.5
    'newV:', 2.5
    Exact same version. Ignoring codepush

Is my understanding incorrect that appVersion should be the update's app version from the build.gradle file ?

来源:https://stackoverflow.com/questions/52685589/codepush-updates-appversion-is-incorrect-its-always-the-same-as-the-current-a

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!