code: private boolean isCorrectVersion(ApplicationInfo app) {
      for (String key : keysToConsiderInThePlistToHaveEquality) {
        Object value = app.getProperty(key);
        Object exp = ipa.getMetadata().opt(key);
        if (value instanceof String) {
          if (!value.equals(exp)) {
            log.fine("for key " + key + ",device has" + value + ",but needed " + exp
                     + ".the app will need to be reinstalled.");
            return false;
          }
        }
      }
      return true;
    }
docs: TODO freynaud should be more strict than that and check all magic keys.