diff --git a/.github/workflows/android-ci.yml b/.github/workflows/android-ci.yml index 8bdcd1638..85cef8241 100644 --- a/.github/workflows/android-ci.yml +++ b/.github/workflows/android-ci.yml @@ -167,14 +167,14 @@ jobs: - name: Build Benchmark, copy to platform/android run: | - ./gradlew assembleDrawableRelease assembleDrawableReleaseAndroidTest -PtestBuildType=release - cp MapLibreAndroidTestApp/build/outputs/apk/drawable/release/MapLibreAndroidTestApp-drawable-release.apk . - cp MapLibreAndroidTestApp/build/outputs/apk/androidTest/drawable/release/MapLibreAndroidTestApp-drawable-release-androidTest.apk . + ./gradlew assembleOpenglRelease assembleOpenglReleaseAndroidTest -PtestBuildType=release + cp MapLibreAndroidTestApp/build/outputs/apk/opengl/release/MapLibreAndroidTestApp-opengl-release.apk . + cp MapLibreAndroidTestApp/build/outputs/apk/androidTest/opengl/release/MapLibreAndroidTestApp-opengl-release-androidTest.apk . # https://developer.android.com/guide/practices/page-sizes - name: Check alignment of .apk run: | - unzip -o MapLibreAndroidTestApp/build/outputs/apk/drawable/release/MapLibreAndroidTestApp-drawable-release.apk -d /tmp/my_apk_out + unzip -o MapLibreAndroidTestApp/build/outputs/apk/opengl/release/MapLibreAndroidTestApp-opengl-release.apk -d /tmp/my_apk_out scripts/check-alignment.sh /tmp/my_apk_out - name: Create artifact for benchmark APKs @@ -183,17 +183,17 @@ jobs: if-no-files-found: error name: benchmarkAPKs path: | - platform/android/MapLibreAndroidTestApp-drawable-release.apk - platform/android/MapLibreAndroidTestApp-drawable-release-androidTest.apk + platform/android/MapLibreAndroidTestApp-opengl-release.apk + platform/android/MapLibreAndroidTestApp-opengl-release-androidTest.apk - if: github.event_name == 'pull_request' uses: ./.github/actions/save-pr-number - name: Build Instrumentation Tests, copy to platform/android run: | - ./gradlew assembleDrawableDebug assembleDrawableDebugAndroidTest -PtestBuildType=debug - cp MapLibreAndroidTestApp/build/outputs/apk/drawable/debug/MapLibreAndroidTestApp-drawable-debug.apk InstrumentationTestApp.apk - cp MapLibreAndroidTestApp/build/outputs/apk/androidTest/drawable/debug/MapLibreAndroidTestApp-drawable-debug-androidTest.apk InstrumentationTests.apk + ./gradlew assembleOpenglDebug assembleOpenglDebugAndroidTest -PtestBuildType=debug + cp MapLibreAndroidTestApp/build/outputs/apk/opengl/debug/MapLibreAndroidTestApp-opengl-debug.apk InstrumentationTestApp.apk + cp MapLibreAndroidTestApp/build/outputs/apk/androidTest/opengl/debug/MapLibreAndroidTestApp-opengl-debug-androidTest.apk InstrumentationTests.apk - name: Upload android-ui-test uses: actions/upload-artifact@v4 diff --git a/.github/workflows/android-release.yml b/.github/workflows/android-release.yml index ee4e96c2e..a85f971e8 100644 --- a/.github/workflows/android-release.yml +++ b/.github/workflows/android-release.yml @@ -4,48 +4,23 @@ on: workflow_dispatch: jobs: - build: - runs-on: MapLibre_Native_Ubuntu_24_04_x84_16_core + android-create-release: + runs-on: ubuntu-24.04 + outputs: + version_tag: ${{ steps.prepare_release.outputs.version_tag }} + upload_url: ${{ steps.create_release.outputs.upload_url }} defaults: run: working-directory: platform/android - env: - JOBS: 8 - BUILDTYPE: Release - IS_LOCAL_DEVELOPMENT: false steps: - uses: actions/checkout@v4 - with: - submodules: recursive - fetch-depth: 0 - - - uses: actions/setup-java@v4 - with: - distribution: "temurin" - java-version: "17" - - - name: Get CMake and Ninja - uses: lukka/get-cmake@latest - with: - cmakeVersion: 3.24.1 - ninjaVersion: latest - - - name: npm install - run: npm install --ignore-scripts - - - name: Android nitpick - run: make run-android-nitpick - name: Validate and set version working-directory: . run: .github/scripts/validate-version.sh platform/android/VERSION - - name: Build package - run: | - RENDERER=vulkan make apackage - BUILDTYPE=Debug RENDERER=vulkan make apackage - RENDERER=drawable make apackage - BUILDTYPE=Debug RENDERER=drawable make apackage + - name: npm install + run: npm install --ignore-scripts # create github release - name: Prepare release @@ -85,70 +60,74 @@ jobs: draft: false prerelease: ${{ env.prerelease }} - - name: Upload aar (OpenGL) - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + android-build-and-upload-release: + needs: android-create-release + runs-on: ubuntu-24.04 + defaults: + run: + working-directory: platform/android + env: + JOBS: 8 + IS_LOCAL_DEVELOPMENT: false + strategy: + matrix: + RENDERER: + - vulkan + - opengl + BUILDTYPE: + - Release + - Debug + steps: + - uses: actions/checkout@v4 with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: platform/android/MapLibreAndroid/build/outputs/aar/MapLibreAndroid-drawable-release.aar - asset_name: MapLibreAndroid-release.aar - asset_content_type: application/zip + submodules: recursive + fetch-depth: 0 - - name: Upload aar (OpenGL, Debug) - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - uses: actions/setup-java@v4 with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: platform/android/MapLibreAndroid/build/outputs/aar/MapLibreAndroid-drawable-debug.aar - asset_name: MapLibreAndroid-debug.aar - asset_content_type: application/zip + distribution: "temurin" + java-version: "17" - - name: Upload aar (Vulkan) - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Get CMake and Ninja + uses: lukka/get-cmake@latest with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: platform/android/MapLibreAndroid/build/outputs/aar/MapLibreAndroid-vulkan-release.aar - asset_name: MapLibreAndroid-release-vulkan.aar - asset_content_type: application/zip + cmakeVersion: 3.24.1 + ninjaVersion: latest - - name: Upload aar (Vulkan, Debug) - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: platform/android/MapLibreAndroid/build/outputs/aar/MapLibreAndroid-vulkan-debug.aar - asset_name: MapLibreAndroid-debug-vulkan.aar - asset_content_type: application/zip + - name: npm install + run: npm install --ignore-scripts - - name: Upload debug symbols (OpenGL) - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: platform/android/build/debug-symbols-opengl.tar.gz - asset_name: debug-symbols-maplibre-android-opengl-${{ steps.prepare_release.outputs.version_tag }}.tar.gz - asset_content_type: application/gzip + - name: Android nitpick + run: make run-android-nitpick - - name: Upload debug symbols (Vulkan) - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: platform/android/build/debug-symbols-vulkan.tar.gz - asset_name: debug-symbols-maplibre-android-vulkan-${{ steps.prepare_release.outputs.version_tag }}.tar.gz - asset_content_type: application/gzip + - name: Build package + run: RENDERER=${{ matrix.RENDERER }} BUILDTYPE=${{ matrix.BUILDTYPE }} make apackage - - name: Clean release + - name: Save buildtype to GITHUB_ENV run: | - rm -f ${{ steps.prepare_release.outputs.release_notes }} - shell: bash + buildtype=${{ matrix.BUILDTYPE }} + # lowercase + echo buildtype=${buildtype,,} > "$GITHUB_ENV" + + - name: Upload aar (${{ matrix.RENDERER }}, ${{ matrix.BUILDTYPE }}) + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ needs.android-create-release.outputs.upload_url }} + asset_path: platform/android/MapLibreAndroid/build/outputs/aar/MapLibreAndroid-${{ matrix.RENDERER }}-${{ env.buildtype }}.aar + asset_name: MapLibreAndroid-${{ matrix.RENDERER }}-${{ env.buildtype }}-${{ needs.android-create-release.outputs.version_tag }}.aar + asset_content_type: application/zip + + - name: Upload debug symbols (${{ matrix.RENDERER }}, ${{ matrix.BUILDTYPE }}) + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ needs.android-create-release.outputs.upload_url }} + asset_path: platform/android/build/debug-symbols-${{ matrix.RENDERER }}-${{ env.buildtype }}.tar.gz + asset_name: debug-symbols-maplibre-android-${{ matrix.RENDERER }}-${{ needs.android-create-release.outputs.version_tag }}.tar.gz + asset_content_type: application/gzip - name: Prepare MavenCentral release env: @@ -158,7 +137,14 @@ jobs: shell: bash - name: Publish to MavenCentral - run: make run-android-publish + run: | + renderer=${{ matrix.RENDERER }} + if [ "$renderer" = "opengl" ]; then + ./gradlew :MapLibreAndroid:publishOpengl${{ env.buildtype }}PublicationToSonatypeRepository closeAndReleaseSonatypeStagingRepository + ./gradlew :MapLibreAndroid:publishDefault${{ env.buildtype }}PublicationToSonatypeRepository closeAndReleaseSonatypeStagingRepository + else + ./gradlew :MapLibreAndroid:publishVulkan${{ env.buildtype }}PublicationToSonatypeRepository closeAndReleaseSonatypeStagingRepository + fi env: OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }} OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }} diff --git a/platform/android/CHANGELOG.md b/platform/android/CHANGELOG.md index cfa963c2f..effa4a9c2 100644 --- a/platform/android/CHANGELOG.md +++ b/platform/android/CHANGELOG.md @@ -1,11 +1,16 @@ # Changelog MapLibre Native for Android -## main +## 11.10.0 ### ✨ Features and improvements +- Add action journal ([#3409](https://github.com/maplibre/maplibre-native/pull/3409)). Documentation: https://maplibre.org/maplibre-native/android/examples/observability/action-journal/ +- Pattern layout performance improvement ([#3495](https://github.com/maplibre/maplibre-native/pull/3495)). + ### 🐞 Bug fixes +- Improve weak pointer use ([#3510](https://github.com/maplibre/maplibre-native/pull/3510)). + ## 11.9.0 ### ✨ Features and improvements diff --git a/platform/android/Makefile b/platform/android/Makefile index 553f6fd81..750376868 100644 --- a/platform/android/Makefile +++ b/platform/android/Makefile @@ -1,5 +1,5 @@ export BUILDTYPE ?= Debug -export RENDERER ?= drawable +export RENDERER ?= opengl export IS_LOCAL_DEVELOPMENT ?= true export TARGET_BRANCH ?= main @@ -14,10 +14,10 @@ else $(error BUILDTYPE must be Debug, Sanitize, Release or RelWithDebInfo) endif -ifeq ($(RENDERER), drawable) +ifeq ($(RENDERER), opengl) else ifeq ($(RENDERER), vulkan) else - $(error RENDERER must be 'drawable' (OpenGL) or 'vulkan') + $(error RENDERER must be 'opengl' or 'vulkan') endif buildtype := $(shell echo "$(BUILDTYPE)" | tr "[A-Z]" "[a-z]") @@ -218,11 +218,11 @@ run-android-ui-test-%: run-android-ui-test-arm-v7-% # Run Java Unit tests on the JVM of the development machine executing this .PHONY: run-android-unit-test run-android-unit-test: - $(MLN_ANDROID_GRADLE) -Pmaplibre.abis=none :MapLibreAndroid:testDrawableDebugUnitTest --info + $(MLN_ANDROID_GRADLE) -Pmaplibre.abis=none :MapLibreAndroid:testOpenglDebugUnitTest --info run-android-unit-test-%: - $(MLN_ANDROID_GRADLE) -Pmaplibre.abis=none :MapLibreAndroid:testDrawableDebugUnitTest --info --tests "$*" + $(MLN_ANDROID_GRADLE) -Pmaplibre.abis=none :MapLibreAndroid:testOpenglDebugUnitTest --info --tests "$*" -DEBUG_TAR_FILE_NAME := $(if $(findstring drawable,$(RENDERER)),debug-symbols-opengl.tar.gz,debug-symbols-$(RENDERER).tar.gz) +DEBUG_TAR_FILE_NAME := $(if $(findstring opengl,$(RENDERER)),debug-symbols-opengl-$(MLN_ANDROID_APK_SUFFIX).tar.gz,debug-symbols-$(RENDERER)-$(MLN_ANDROID_APK_SUFFIX).tar.gz) # Builds a release package and .tar.gz with debug symbols of the Android SDK .PHONY: apackage @@ -280,7 +280,7 @@ android-lint-test-app: # Generates LICENSE.md file based on all Android project dependencies .PHONY: android-license android-license: - $(MLN_ANDROID_GRADLE) -Pmaplibre.abis=none :MapLibreAndroid:licenseDrawableReleaseReport + $(MLN_ANDROID_GRADLE) -Pmaplibre.abis=none :MapLibreAndroid:licenseOpenglReleaseReport python3 scripts/generate-license.py # Symbolicate ndk stack traces for the arm-v7 abi diff --git a/platform/android/MapLibreAndroid/build.gradle.kts b/platform/android/MapLibreAndroid/build.gradle.kts index 6cd320d4e..acd5a37dd 100644 --- a/platform/android/MapLibreAndroid/build.gradle.kts +++ b/platform/android/MapLibreAndroid/build.gradle.kts @@ -74,7 +74,7 @@ android { flavorDimensions += "renderer" productFlavors { - create("drawable") { + create("opengl") { dimension = "renderer" } create("vulkan") { @@ -88,7 +88,7 @@ android { } sourceSets { - getByName("drawable") { + getByName("opengl") { java.srcDirs("src/opengl/java/") } } diff --git a/platform/android/MapLibreAndroidTestApp/build.gradle.kts b/platform/android/MapLibreAndroidTestApp/build.gradle.kts index c41fd48fd..a3e8e1996 100644 --- a/platform/android/MapLibreAndroidTestApp/build.gradle.kts +++ b/platform/android/MapLibreAndroidTestApp/build.gradle.kts @@ -62,10 +62,7 @@ android { flavorDimensions += "renderer" productFlavors { - create("legacy") { - dimension = "renderer" - } - create("drawable") { + create("opengl") { dimension = "renderer" } create("vulkan") { diff --git a/platform/android/VERSION b/platform/android/VERSION index ba9aff72c..933dbb1df 100644 --- a/platform/android/VERSION +++ b/platform/android/VERSION @@ -1 +1 @@ -11.9.0 +11.10.0 diff --git a/platform/android/buildSrc/src/main/kotlin/maplibre.gradle-publish.gradle.kts b/platform/android/buildSrc/src/main/kotlin/maplibre.gradle-publish.gradle.kts index 0395df46d..7d0b157f5 100644 --- a/platform/android/buildSrc/src/main/kotlin/maplibre.gradle-publish.gradle.kts +++ b/platform/android/buildSrc/src/main/kotlin/maplibre.gradle-publish.gradle.kts @@ -98,15 +98,15 @@ tasks { } afterEvaluate { - configureMavenPublication("drawable", "opengl", "", "") - configureMavenPublication("drawable", "opengldebug", "-debug", " (Debug)", "Debug") - configureMavenPublication("vulkan", "vulkan", "-vulkan", "(Vulkan)") + configureMavenPublication("opengl", "defaultrelease", "", "") + configureMavenPublication("opengl", "defaultdebug", "-debug", " (Debug)", "Debug") + configureMavenPublication("vulkan", "vulkanrelease", "-vulkan", "(Vulkan)") configureMavenPublication("vulkan", "vulkandebug", "-vulkan-debug", "(Vulkan, Debug)", "Debug") // Right now this is the same as the first, but in the future we might release a major version // which defaults to Vulkan (or has support for multiple backends). We will keep using only // OpenGL ES with this artifact ID if that happens. - configureMavenPublication("drawable", "opengl2", "-opengl", " (OpenGL ES)") - configureMavenPublication("drawable", "opengl2debug", "-opengl-debug", " (OpenGL ES, Debug)", "Debug") + configureMavenPublication("opengl", "openglrelease", "-opengl", " (OpenGL ES)") + configureMavenPublication("opengl", "opengldebug", "-opengl-debug", " (OpenGL ES, Debug)", "Debug") }