Я знаю решение: просто удалить старое приложение, а затем установить новое, но это не так. у меня нет другого способа просто получить мое обновление в рабочем состоянии? Есть ли потенциальные места, где мои пакеты могут конфликтовать, и которые я мог бы просто сопоставить, чтобы упростить процесс обновления?
Я пытался искать повсюду в своем проекте и конвейерах любые идентификаторы или процессы, которые могут судя по таким форумам, как:
- Пространство имен Android
Хранилище ключей, с помощью которого я подписываю свое приложение в конвейерах
Однако есть некоторые вещи, которые изменились и которые можно считать серьезными, но я не знаю, изменится ли это считайте это совершенно другим пакетом, например:
[*]Обновление моего flutter, gradle и всех других пакетов до последней версии
< li>Добавление новых версий
[*]Большая часть изображений была заменена
[*]Название моего APK изменено с app-release.apk на app-prod-release .apk из-за особенностей
[*]И обновление конвейеров новыми задачами и новым способом создания моего apk с вариантами и файлами конфигурации, как показано ниже:
Старый конвейер:
Код: Выделить всё
trigger:
branches:
include:
- dev
- main
- release/*
stages:
- stage: AndroidStage
pool:
vmImage: 'ubuntu-latest'
dependsOn: []
displayName: Android
jobs:
- job: AndroidJob
displayName: Android
steps:
- task: FlutterInstall@0
displayName: "Install Flutter SDK"
inputs:
mode: 'auto'
channel: 'stable'
version: 'latest'
- task: FlutterCommand@0
displayName: "Run Flutter diagnostics"
inputs:
projectDirectory: '.'
arguments: 'doctor -v'
- task: FlutterBuild@0
displayName: "Build application"
inputs:
target: 'apk'
projectDirectory: '$(Build.SourcesDirectory)'
- task: AndroidSigning@3
displayName: 'Signing and aligning APK file(s) **/*.apk'
inputs:
apkFiles: '**/*.apk'
apksign: true
apksignerKeystoreFile: pinnies-v2-release.keystore
apksignerKeystorePassword: $(keystorePass)
apksignerKeystoreAlias: $(keystoreAlias)
apksignerKeyPassword: $(keystorePass)
- task: CopyFiles@2
inputs:
contents: '**/*.apk'
targetFolder: '$(build.artifactStagingDirectory)'
OverWrite: true
- task: PublishBuildArtifacts@1
condition: ne(variables['Build.Reason'], 'PullRequest')
inputs:
artifactName: 'drop'
- script: |
version=$(grep "version:" pubspec.yaml | awk '{print $2}' | cut -d'+' -f1)
echo "##vso[task.setvariable variable=AppVersion]$version"
displayName: 'Extract App Version'
- script: |
if [ "$(Build.SourceBranch)" == "refs/heads/main" ]; then
echo '$url = "$(teamsUrl)"' > $(Build.ArtifactStagingDirectory)/send_teams.ps1
else
echo '$url = "$(teamsGradUrl)"' > $(Build.ArtifactStagingDirectory)/send_teams.ps1
fi
echo '$jsonPayload = @{' >> $(Build.ArtifactStagingDirectory)/send_teams.ps1
echo ' "version" = "$(AppVersion)"' >> $(Build.ArtifactStagingDirectory)/send_teams.ps1
if [ "$(Build.SourceBranch)" == "refs/heads/main" ]; then
echo ' "url" = "https://install.appcenter.ms/orgs/agilebridge/apps/pinnies-android/distribution_groups/public"' >> $(Build.ArtifactStagingDirectory)/send_teams.ps1
else
echo ' "url" = "https://install.appcenter.ms/orgs/AgileBridge/apps/Pinnies-Test-Android/releases/latest"' >> $(Build.ArtifactStagingDirectory)/send_teams.ps1
fi
echo '}' >> $(Build.ArtifactStagingDirectory)/send_teams.ps1
echo '$jsonBody = $jsonPayload | ConvertTo-Json' >> $(Build.ArtifactStagingDirectory)/send_teams.ps1
echo '$headers = @{ "Content-Type" = "application/json" }' >> $(Build.ArtifactStagingDirectory)/send_teams.ps1
echo '$response = Invoke-RestMethod -Uri $url -Method Post -Body $jsonBody -Headers $headers' >> $(Build.ArtifactStagingDirectory)/send_teams.ps1
echo '$response' >> $(Build.ArtifactStagingDirectory)/send_teams.ps1
displayName: 'Generate PowerShell Script'
- publish: $(Build.ArtifactStagingDirectory)/send_teams.ps1
artifact: SendTeams
Код: Выделить всё
trigger:
branches:
include:
- dev
- main
- release/*
stages:
- stage: AndroidStage
pool:
vmImage: 'ubuntu-latest'
dependsOn: []
displayName: Android
jobs:
- job: AndroidJob
displayName: Android
steps:
- bash: 'wget --no-check-certificate -c --header "Cookie: oraclelicense=accept-securebackup-cookie" https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz '
displayName: 'Bash Script'
- task: JavaToolInstaller@0
displayName: 'Use Java 21'
inputs:
versionSpec: 21
jdkArchitectureOption: x64
jdkSourceOption: LocalDirectory
jdkFile: '$(build.sourcesdirectory)/jdk-21_linux-x64_bin.tar.gz'
jdkDestinationDirectory: '$(agent.toolsDirectory)/jdk21'
- task: FlutterInstall@0
displayName: "Install Flutter SDK"
inputs:
mode: 'auto'
channel: 'stable'
version: 'latest'
- task: FlutterCommand@0
displayName: "Run Flutter diagnostics"
inputs:
projectDirectory: '.'
arguments: 'doctor -v'
- task: FlutterCommand@0
displayName: "Clean application"
inputs:
projectDirectory: '.'
flutterDirectory: '$(Build.SourcesDirectory)'
arguments: 'clean'
- script: |
if [[ "$(Build.SourceBranch)" == "refs/heads/dev" ]]; then
flavor="dev"
elif [[ "$(Build.SourceBranch)" == "refs/heads/main" ]]; then
flavor="prod"
else
flavor="uat"
fi
echo "Building with flavor: $flavor"
flutter build apk --flavor $flavor --dart-define-from-file=config/app_config_$flavor.json
displayName: "Build application with flavor"
- task: AndroidSigning@3
displayName: 'Signing and aligning APK file(s) **/*.apk'
inputs:
apkFiles: '**/*.apk'
apksign: true
apksignerKeystoreFile: pinnies-v2-release.keystore
apksignerKeystorePassword: $(keystorePass)
apksignerKeystoreAlias: $(keystoreAlias)
apksignerKeyPassword: $(keystorePass)
- task: CopyFiles@2
inputs:
contents: '**/*.apk'
targetFolder: '$(build.artifactStagingDirectory)'
OverWrite: true
- task: PublishBuildArtifacts@1
condition: ne(variables['Build.Reason'], 'PullRequest')
inputs:
artifactName: 'drop'
- script: |
version=$(grep "version:" pubspec.yaml | awk '{print $2}' | cut -d'+' -f1)
echo "##vso[task.setvariable variable=AppVersion]$version"
displayName: 'Extract App Version'
- script: |
if [ "$(Build.SourceBranch)" == "refs/heads/main" ]; then
echo '$url = "$(teamsUrl)"' > $(Build.ArtifactStagingDirectory)/send_teams.ps1
else
echo '$url = "$(teamsGradUrl)"' > $(Build.ArtifactStagingDirectory)/send_teams.ps1
fi
echo '$jsonPayload = @{' >> $(Build.ArtifactStagingDirectory)/send_teams.ps1
echo ' "version" = "$(AppVersion)"' >> $(Build.ArtifactStagingDirectory)/send_teams.ps1
if [ "$(Build.SourceBranch)" == "refs/heads/main" ]; then
echo ' "url" = "https://install.appcenter.ms/orgs/agilebridge/apps/pinnies-android/distribution_groups/public"' >> $(Build.ArtifactStagingDirectory)/send_teams.ps1
else
echo ' "url" = "https://install.appcenter.ms/orgs/AgileBridge/apps/Pinnies-Test-Android/releases/latest"' >> $(Build.ArtifactStagingDirectory)/send_teams.ps1
fi
echo '}' >> $(Build.ArtifactStagingDirectory)/send_teams.ps1
echo '$jsonBody = $jsonPayload | ConvertTo-Json' >> $(Build.ArtifactStagingDirectory)/send_teams.ps1
echo '$headers = @{ "Content-Type" = "application/json" }' >> $(Build.ArtifactStagingDirectory)/send_teams.ps1
echo '$response = Invoke-RestMethod -Uri $url -Method Post -Body $jsonBody -Headers $headers' >> $(Build.ArtifactStagingDirectory)/send_teams.ps1
echo '$response' >> $(Build.ArtifactStagingDirectory)/send_teams.ps1
displayName: 'Generate PowerShell Script'
- publish: $(Build.ArtifactStagingDirectory)/send_teams.ps1
artifact: SendTeams
Подробнее здесь: https://stackoverflow.com/questions/785 ... n-updating
Мобильная версия