diff --git a/.github/workflows/check-pr-title.yml b/.github/workflows/check-pr-title.yml deleted file mode 100644 index 1842f5bf3..000000000 --- a/.github/workflows/check-pr-title.yml +++ /dev/null @@ -1,22 +0,0 @@ -# NOTE: This is a common file that is overwritten by realm/ci-actions sync service -# and should only be modified in that repository. - -name: "Check PR Title" -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review, labeled, unlabeled, converted_to_draft, edited] - -jobs: - check-pr-title: - name: Check PR Title - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - submodules: false - - name: Enforce PR title - uses: realm/ci-actions/title-checker@main - with: - regex: R[A-Z]{2,6}-[0-9]{1,6} - error-hint: Invalid PR title. Make sure it's prefixed with the JIRA ticket the PR addresses or add the no-jira-ticket label. - ignore-labels: 'no-jira-ticket' \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 58ee653a7..f9d1d7f87 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,9 +27,9 @@ jobs: name: Build MacOS uses: ./.github/workflows/build-native.yml with: - runner: macos-latest - binary: macos - build: '["macos"]' + runner: macos-latest + binary: macos + build: '["macos"]' build-linux: name: Build Linux @@ -220,14 +220,14 @@ jobs: sudo udevadm control --reload-rules sudo udevadm trigger --name-match=kvm - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v3 - - name: Setup Java uses: actions/setup-java@v4 with: distribution: "temurin" - java-version: 11 + java-version: 21 + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 - name: Fetch artifacts uses: actions/download-artifact@v4 @@ -251,7 +251,7 @@ jobs: path: | ~/.android/avd/* ~/.android/adb* - key: avd-33-x86_64 + key: avd-31-x86_64_2 - name: Create Android Emulator and generate snapshot for caching if: ${{ steps.avd-cache.outputs.cache-hit != 'true' }} @@ -262,9 +262,8 @@ jobs: emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none api-level: 31 arch: x86_64 - ndk: 25.2.9519653 - cmake: 3.10.2.4988404 script: echo "Generated Emulator snapshot for caching." + ndk: 27.0.12077973 - name: Run tests on Android Emulator uses: reactivecircus/android-emulator-runner@v2 @@ -274,9 +273,8 @@ jobs: emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none api-level: 31 arch: x86_64 - ndk: 25.2.9519653 - cmake: 3.10.2.4988404 script: cd packages/realm/tests && flutter test integration_test/all_tests.dart --file-reporter=json:test-results.json --suppress-analytics + ndk: 27.0.12077973 - name: Publish Test Report uses: dorny/test-reporter@v1.8.0 diff --git a/CHANGELOG.md b/CHANGELOG.md index d350afe78..af725a1eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,18 @@ ### Internal * Using Core 20.0.1. +## 3.4.2 (2025-01-02) + +### Fixed +* For the Android platform, changed compileSdkVersion into 31 from 28 to fix the fatal `android:attr/lStar not found` error when using Flutter 3.24. +* Fix breakage of `PseudoType` after Flutter 3.27.1. (Issue [#1813](https://github.com/realm/realm-dart/issues/1813)) + +### Compatibility +* Realm Studio: 15.0.0 or later. + +### Internal +* Using Core 14.11.0. + ## 3.4.1 (2024-08-14) ### Fixed diff --git a/README.md b/README.md index 22650094e..69cd0d18c 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,10 @@ +> [!WARNING] +> We announced the deprecation of Atlas Device Sync + Realm SDKs in September 2024. For more information please see: +> - [SDK Deprecation](https://www.mongodb.com/docs/atlas/device-sdks/deprecation) +> - [Device Sync Deprecation](https://www.mongodb.com/docs/atlas/app-services/sync/device-sync-deprecation) +> +> For a version of `realm-dart` without sync features, install version 20 or see the `community` branch. + realm by MongoDB diff --git a/packages/CHANGELOG.ejson.md b/packages/CHANGELOG.ejson.md index 03e24fd6d..28c062efd 100644 --- a/packages/CHANGELOG.ejson.md +++ b/packages/CHANGELOG.ejson.md @@ -1,3 +1,7 @@ +## 0.4.1 + +- Avoid name conflict on `LinkCode`. + ## 0.4.0 - `fromEJson` now accepts a `defaultValue` argument that is returned if diff --git a/packages/ejson_lint/lib/src/lints/mismatched_getter_type.dart b/packages/ejson_lint/lib/src/lints/mismatched_getter_type.dart index 053806ce0..2712b49e1 100644 --- a/packages/ejson_lint/lib/src/lints/mismatched_getter_type.dart +++ b/packages/ejson_lint/lib/src/lints/mismatched_getter_type.dart @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 import 'package:analyzer/dart/element/element.dart'; -import 'package:analyzer/error/error.dart'; +import 'package:analyzer/error/error.dart' as error; import 'package:analyzer/error/listener.dart'; import 'package:custom_lint_builder/custom_lint_builder.dart'; import 'package:ejson_analyzer/ejson_analyzer.dart'; @@ -13,7 +13,7 @@ class MismatchedGetterType extends DartLintRule { code: const LintCode( name: 'mismatched_getter_type', problemMessage: 'Type of getter does not match type of constructor parameter', - errorSeverity: ErrorSeverity.ERROR, + errorSeverity: error.ErrorSeverity.ERROR, ), ); diff --git a/packages/ejson_lint/lib/src/lints/missing_getter.dart b/packages/ejson_lint/lib/src/lints/missing_getter.dart index a9ac929f4..0b26c85b9 100644 --- a/packages/ejson_lint/lib/src/lints/missing_getter.dart +++ b/packages/ejson_lint/lib/src/lints/missing_getter.dart @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 import 'package:analyzer/dart/element/element.dart'; -import 'package:analyzer/error/error.dart'; +import 'package:analyzer/error/error.dart' as error; import 'package:analyzer/error/listener.dart'; import 'package:custom_lint_builder/custom_lint_builder.dart'; import 'package:ejson_analyzer/ejson_analyzer.dart'; @@ -13,7 +13,7 @@ class MissingGetter extends DartLintRule { code: const LintCode( name: 'missing_getter', problemMessage: 'Missing getter for constructor parameter', - errorSeverity: ErrorSeverity.ERROR, + errorSeverity: error.ErrorSeverity.ERROR, ), ); diff --git a/packages/ejson_lint/lib/src/lints/too_many_annotated_constructors.dart b/packages/ejson_lint/lib/src/lints/too_many_annotated_constructors.dart index 7dfc7575b..4749825a3 100644 --- a/packages/ejson_lint/lib/src/lints/too_many_annotated_constructors.dart +++ b/packages/ejson_lint/lib/src/lints/too_many_annotated_constructors.dart @@ -1,7 +1,7 @@ // Copyright 2024 MongoDB, Inc. // SPDX-License-Identifier: Apache-2.0 -import 'package:analyzer/error/error.dart'; +import 'package:analyzer/error/error.dart' as error; import 'package:analyzer/error/listener.dart'; import 'package:custom_lint_builder/custom_lint_builder.dart'; import 'package:ejson_analyzer/ejson_analyzer.dart'; @@ -21,7 +21,7 @@ class TooManyAnnotatedConstructors extends DartLintRule { code: const LintCode( name: 'too_many_annotated_constructors', problemMessage: 'Only one constructor can be annotated', - errorSeverity: ErrorSeverity.ERROR, + errorSeverity: error.ErrorSeverity.ERROR, ), ); diff --git a/packages/realm/android/build.gradle b/packages/realm/android/build.gradle index afa01ec47..ec40d28d8 100644 --- a/packages/realm/android/build.gradle +++ b/packages/realm/android/build.gradle @@ -28,7 +28,7 @@ android { namespace 'io.realm' } - compileSdkVersion 28 + compileSdkVersion 31 defaultConfig { minSdkVersion 16 diff --git a/packages/realm/tests/android/gradle/wrapper/gradle-wrapper.properties b/packages/realm/tests/android/gradle/wrapper/gradle-wrapper.properties index 3c472b99c..348c409ea 100644 --- a/packages/realm/tests/android/gradle/wrapper/gradle-wrapper.properties +++ b/packages/realm/tests/android/gradle/wrapper/gradle-wrapper.properties @@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-all.zip diff --git a/packages/realm/tests/android/settings.gradle b/packages/realm/tests/android/settings.gradle index 7cd712855..0b11d083a 100644 --- a/packages/realm/tests/android/settings.gradle +++ b/packages/realm/tests/android/settings.gradle @@ -23,7 +23,7 @@ pluginManagement { plugins { id "dev.flutter.flutter-plugin-loader" version "1.0.0" - id "com.android.application" version "7.3.0" apply false + id "com.android.application" version '8.7.0' apply false } include ":app" diff --git a/packages/realm_generator/lib/src/expanded_context_span.dart b/packages/realm_generator/lib/src/expanded_context_span.dart index 16e7b9348..184e5616b 100644 --- a/packages/realm_generator/lib/src/expanded_context_span.dart +++ b/packages/realm_generator/lib/src/expanded_context_span.dart @@ -3,7 +3,7 @@ import 'package:source_span/source_span.dart'; -class ExpandedContextSpan with SourceSpanMixin implements FileSpan { +class ExpandedContextSpan extends SourceSpanMixin implements FileSpan { final FileSpan _span, _contextSpan; ExpandedContextSpan(this._span, Iterable contextSpans) : _contextSpan = contextSpans.fold(_span, (acc, c) => acc.expand(c)); diff --git a/packages/realm_generator/lib/src/pseudo_type.dart b/packages/realm_generator/lib/src/pseudo_type.dart index 61e5a8160..0a4edcbcf 100644 --- a/packages/realm_generator/lib/src/pseudo_type.dart +++ b/packages/realm_generator/lib/src/pseudo_type.dart @@ -20,13 +20,8 @@ class PseudoType extends TypeImpl { PseudoType(this._name, {this.nullabilitySuffix = NullabilitySuffix.none}); - Never get _never => throw UnimplementedError(); - - @override - R accept(TypeVisitor visitor) => _never; - @override - R acceptWithArgument(TypeVisitorWithArgument visitor, A argument) => _never; + R acceptWithArgument(TypeVisitorWithArgument visitor, A argument) => throw UnimplementedError(); @override void appendTo(ElementDisplayStringBuilder builder) { @@ -46,17 +41,14 @@ class PseudoType extends TypeImpl { im.invoke(writeNullability, [nullabilitySuffix]); // #_writeNullability won't work } - @override - String? get name => _never; - @override PseudoType withNullability(NullabilitySuffix nullabilitySuffix) { return PseudoType(_name, nullabilitySuffix: nullabilitySuffix); } @override - Element? get element2 => _never; + Element? get element => null; @override - Element? get element => null; + Never noSuchMethod(Invocation invocation) => throw UnimplementedError(); }