diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7d1f7d8ea38..521eafb3d3d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -104,7 +104,18 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Compile release sources if: ${{ matrix.variant == 'release' }} - run: ./gradlew bundleGplayRelease -PallWarningsAsErrors=true $CI_GRADLE_ARG_PROPERTIES + run: | + ./gradlew assembleGplayRelease -PallWarningsAsErrors=true $CI_GRADLE_ARG_PROPERTIES + ./gradlew bundleGplayRelease -PallWarningsAsErrors=true $CI_GRADLE_ARG_PROPERTIES + - name: Run aapt dump + if: ${{ matrix.variant == 'release' }} + run: | + $ANDROID_HOME/build-tools/37.0.0/aapt dump badging \ + ./app/build/outputs/apk/gplay/release/app-gplay-universal-release.apk \ + > /tmp/currentAaptDump.txt + - name: Check manifest has not changed + if: ${{ matrix.variant == 'release' }} + run: diff /tmp/currentAaptDump.txt ./tools/manifest/gplay/release/aaptDump.txt - name: Compile nightly sources if: ${{ matrix.variant == 'nightly' }} run: ./gradlew compileGplayNightlySources -PallWarningsAsErrors=true $CI_GRADLE_ARG_PROPERTIES diff --git a/.github/workflows/sync-localazy.yml b/.github/workflows/sync-localazy.yml index d52100ad9fc..6bd5c842836 100644 --- a/.github/workflows/sync-localazy.yml +++ b/.github/workflows/sync-localazy.yml @@ -39,6 +39,7 @@ jobs: ./tools/localazy/downloadStrings.sh --all ./tools/localazy/importSupportedLocalesFromLocalazy.py ./tools/test/generateAllScreenshots.py + ./tools/manifest/aaptDump.sh - name: Create Pull Request for Strings uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8.1.1 with: diff --git a/tools/manifest/aaptDump.sh b/tools/manifest/aaptDump.sh new file mode 100755 index 00000000000..ac66b92593a --- /dev/null +++ b/tools/manifest/aaptDump.sh @@ -0,0 +1,13 @@ +#! /bin/bash + +# Copyright (c) 2026 Element Creations Ltd. +# +# SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial. +# Please see LICENSE files in the repository root for full details. + +# Assemble Gplay Release +./gradlew assembleGplayRelease + +# Dump information +$ANDROID_HOME/build-tools/37.0.0/aapt dump badging ./app/build/outputs/apk/gplay/release/app-gplay-universal-release.apk \ + > ./tools/manifest/gplay/release/aaptDump.txt diff --git a/tools/manifest/gplay/release/aaptDump.txt b/tools/manifest/gplay/release/aaptDump.txt new file mode 100644 index 00000000000..7764f0d76bf --- /dev/null +++ b/tools/manifest/gplay/release/aaptDump.txt @@ -0,0 +1,96 @@ +package: name='io.element.android.x' versionCode='202607000' versionName='26.07.0' platformBuildVersionName='17' platformBuildVersionCode='37' compileSdkVersion='37' compileSdkVersionCodename='17' +sdkVersion:'24' +targetSdkVersion:'37' +uses-permission: name='android.permission.REQUEST_INSTALL_PACKAGES' +uses-permission: name='android.permission.POST_NOTIFICATIONS' +uses-permission: name='android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS' +uses-permission: name='android.permission.RECORD_AUDIO' +uses-permission: name='android.permission.ACCESS_COARSE_LOCATION' +uses-permission: name='android.permission.ACCESS_FINE_LOCATION' +uses-permission: name='android.permission.FOREGROUND_SERVICE' +uses-permission: name='android.permission.FOREGROUND_SERVICE_LOCATION' +uses-permission: name='android.permission.CAMERA' +uses-permission: name='android.permission.MODIFY_AUDIO_SETTINGS' +uses-permission: name='android.permission.WAKE_LOCK' +uses-permission: name='android.permission.FOREGROUND_SERVICE_MICROPHONE' +uses-permission: name='android.permission.USE_FULL_SCREEN_INTENT' +uses-permission: name='android.permission.ACCESS_NETWORK_STATE' +uses-permission: name='android.permission.INTERNET' +uses-permission: name='android.permission.VIBRATE' +uses-permission: name='android.permission.ACCESS_WIFI_STATE' +uses-permission: name='android.permission.USE_BIOMETRIC' +uses-permission: name='android.permission.USE_FINGERPRINT' +uses-permission: name='com.google.android.c2dm.permission.RECEIVE' +uses-permission: name='android.permission.RECEIVE_BOOT_COMPLETED' +uses-permission: name='io.element.android.x.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION' +application-label:'Element X' +application-label-be:'Element X' +application-label-bg:'Element X' +application-label-ca:'Element X' +application-label-cs:'Element X' +application-label-cy:'Element X' +application-label-da:'Element X' +application-label-de:'Element X' +application-label-el:'Element X' +application-label-en-US:'Element X' +application-label-es:'Element X' +application-label-et:'Element X' +application-label-eu:'Element X' +application-label-fa:'Element X' +application-label-fi:'Element X' +application-label-fr:'Element X' +application-label-hr:'Element X' +application-label-hu:'Element X' +application-label-in:'Element X' +application-label-it:'Element X' +application-label-ja:'Element X' +application-label-ka:'Element X' +application-label-ko:'Element X' +application-label-lt:'Element X' +application-label-nb:'Element X' +application-label-nl:'Element X' +application-label-pl:'Element X' +application-label-pt:'Element X' +application-label-pt-BR:'Element X' +application-label-ro:'Element X' +application-label-ru:'Element X' +application-label-sk:'Element X' +application-label-sv:'Element X' +application-label-tr:'Element X' +application-label-uk:'Element X' +application-label-ur:'Element X' +application-label-uz:'Element X' +application-label-vi:'Element X' +application-label-zh:'Element X' +application-label-zh-CN:'Element X' +application-label-zh-TW:'Element X' +application-icon-120:'res/BW.xml' +application-icon-160:'res/BW.xml' +application-icon-240:'res/BW.xml' +application-icon-320:'res/BW.xml' +application-icon-480:'res/BW.xml' +application-icon-640:'res/BW.xml' +application-icon-65534:'res/BW.xml' +application-icon-65535:'res/BW.xml' +application: label='Element X' icon='res/BW.xml' +launchable-activity: name='io.element.android.x.MainActivity' label='' icon='' +uses-library-not-required:'androidx.window.extensions' +uses-library-not-required:'androidx.window.sidecar' +feature-group: label='' + uses-feature-not-required: name='android.hardware.camera' + uses-feature-not-required: name='android.hardware.microphone' + uses-feature-not-required: name='android.hardware.vulkan.version' version='4194307' + uses-feature-not-required: name='android.hardware.wifi' + uses-feature: name='android.hardware.faketouch' + uses-implied-feature: name='android.hardware.faketouch' reason='default feature for all apps' + uses-feature: name='android.hardware.location' + uses-implied-feature: name='android.hardware.location' reason='requested android.permission.ACCESS_COARSE_LOCATION permission, and requested android.permission.ACCESS_FINE_LOCATION permission' +main +other-activities +other-receivers +other-services +supports-screens: 'small' 'normal' 'large' 'xlarge' +supports-any-density: 'true' +locales: '--_--' 'be' 'bg' 'ca' 'cs' 'cy' 'da' 'de' 'el' 'en-US' 'es' 'et' 'eu' 'fa' 'fi' 'fr' 'hr' 'hu' 'in' 'it' 'ja' 'ka' 'ko' 'lt' 'nb' 'nl' 'pl' 'pt' 'pt-BR' 'ro' 'ru' 'sk' 'sv' 'tr' 'uk' 'ur' 'uz' 'vi' 'zh' 'zh-CN' 'zh-TW' +densities: '120' '160' '240' '320' '480' '640' '65534' '65535' +native-code: 'arm64-v8a' 'armeabi-v7a' 'x86' 'x86_64' diff --git a/tools/release/release.sh b/tools/release/release.sh index 0934e6c7140..83ccc6d2582 100755 --- a/tools/release/release.sh +++ b/tools/release/release.sh @@ -151,12 +151,20 @@ sed "s/private const val versionMonth = .*/private const val versionMonth = ${ve sed "s/private const val versionReleaseNumber = .*/private const val versionReleaseNumber = ${versionReleaseNumber}/" ${versionsFileBak} > ${versionsFile} rm ${versionsFileBak} +printf -v versionReleaseNumber2Digits "%02d" "${versionReleaseNumber}" +versionCode="20${versionYear}${versionMonth}${versionReleaseNumber2Digits}0" + +# Update the file aaptDump.txt with the new version +aaptDumpFile="./tools/manifest/gplay/release/aaptDump.txt" +sed "s/versionCode='[0-9]*'/versionCode='${versionCode}'/" ${aaptDumpFile} > ${aaptDumpFile}.bak +sed "s/versionName='[0-9]*\.[0-9]*\.[0-9]*'/versionName='${version}'/" ${aaptDumpFile}.bak > ${aaptDumpFile} +rm ${aaptDumpFile}.bak + git commit -a -m "Setting version for the release ${version}" printf "\n================================================================================\n" printf "Creating fastlane file...\n" -printf -v versionReleaseNumber2Digits "%02d" "${versionReleaseNumber}" -fastlaneFile="20${versionYear}${versionMonth}${versionReleaseNumber2Digits}0.txt" +fastlaneFile="${versionCode}.txt" fastlanePathFile="./fastlane/metadata/android/en-US/changelogs/${fastlaneFile}" printf "Main changes in this version: bug fixes and improvements.\nFull changelog: https://github.com/element-hq/element-x-android/releases" > "${fastlanePathFile}"