简体   繁体   中英

How can I set the Android build version in an Ionic app?

I have an Ionic app (v5/angular) which I'm building for Android. I'm trying to set config.xml widget properties such as version and android-versionCode , but my config.xml is overwritten each time I build the app. Based on extensive googling, I think there should be some way to set up my package.json so that it sets the widget properties in my config.xml , but I'm struggling to figure out how to do that.

My build script is: ng build && npx cap copy

Generated config.xml :

<?xml version='1.0' encoding='utf-8'?>
<widget version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
  <access origin="*" />
  
  
</widget>

Desired config.xml :

<?xml version='1.0' encoding='utf-8'?>
<widget
  version="2.0.0"
  android-versionCode="2"
  xmlns="http://www.w3.org/ns/widgets"
  xmlns:cdv="http://cordova.apache.org/ns/1.0">

  <access origin="*" />

</widget>

My ionic.config.json :

{
  "name": "tutorial",
  "integrations": {
    "capacitor": {}
  },
  "type": "angular"
}

My capacitor.config.json :

{
  "appId": "com.me.app",
  "appName": "Tutorial",
  "bundledWebRuntime": false,
  "npmClient": "npm",
  "webDir": "www",
  "plugins": {
    "SplashScreen": {
      "launchShowDuration": 0
    }
  },
  "cordova": {}
}

My package.json :

{
  "name": "tutorial",
  "version": "0.0.1",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "build-mobile": "ng build && npx cap copy",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },
  "private": true,
  "dependencies": {
    "@angular-devkit/build-angular": "^0.803.24",
    "@angular/common": "~8.2.14",
    "@angular/core": "~8.2.14",
    "@angular/forms": "~8.2.14",
    "@angular/platform-browser": "~8.2.14",
    "@angular/platform-browser-dynamic": "~8.2.14",
    "@angular/router": "~8.2.14",
    "@capacitor/android": "^2.4.0",
    "@capacitor/core": "2.4.0",
    "@capacitor/ios": "^2.4.0",
    "@ionic-native/core": "^5.0.0",
    "@ionic-native/geolocation": "^5.23.0",
    "@ionic-native/splash-screen": "^5.0.0",
    "@ionic-native/status-bar": "^5.0.0",
    "@ionic/angular": "^5.0.0",
    "@ionic/storage": "2.2.0",
    "@microsoft/applicationinsights-web": "^2.5.6",
    "@okta/okta-auth-js": "^3.0.0",
    "@types/lodash": "^4.14.149",
    "angular-oauth2-oidc": "^9.0.1",
    "core-js": "^2.5.4",
    "lodash": "^4.17.15",
    "rxjs": "~6.5.1",
    "tslib": "^1.9.0",
    "zone.js": "~0.9.1"
  },
  "devDependencies": {
    "@angular/cli": "~8.3.23",
    "@angular/compiler": "~8.2.14",
    "@angular/compiler-cli": "~8.2.14",
    "@angular/language-service": "~8.2.14",
    "@capacitor/cli": "2.4.0",
    "@ionic/angular-toolkit": "^2.1.1",
    "@types/node": "~8.9.4",
    "ts-node": "~7.0.0",
    "tslint": "~5.15.0",
    "typescript": "~3.4.3"
  },
  "description": "An Ionic project"
}

As far as I can tell, the generated config.xml isn't actually used with a Capacitor build and the version and build number are actually set in build.gradle :

apply plugin: 'com.android.application'

android {
    compileSdkVersion rootProject.ext.compileSdkVersion
    defaultConfig {
        applicationId "com.me.app"
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
        versionCode 2
        versionName "2.0.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

...

I'll offer what might be new information to help scenarios like this. The latest Ionic extension for VS Code has an option to easily update the version for your app. Once you use that it'll update a few locations for both iOS and Android automatically.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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