Play Store rejecting apps built with latest Meteor (Android SDK 34)

Hi,

When I upload my .aab file to Google Play (built with Meteor 2.16), I get the following error:

Update your com.google.android.play:core:1.8.0 Maven dependency to an Android 14 compatible version! Your current com.google.android.play:core:1.8.0 library is incompatible with targetSdkVersion 34 (Android 14), which introduces a backwards-incompatible change to broadcast receivers. As a reminder, from August 31, 2024, Google Play requires all new app releases to target Android 14. Update to the latest library version dependency to avoid app crashes.

Here’s a screenshot:

The “Next” button is greyed out, so I cannot proceed with this .aab file.

When I roll back to Meteor 2.13 (Android SDK 33), it works fine - I can proceed:

The Meteor 2.16 (Android SDK 34) app works fine in the emulator and on my device, it’s just the Play Store that doesn’t want to accept it.

Worse still, it seems that from 31 August - 16 days away - the Play Store will only accept Android SDK 34 apps (“As a reminder, from August 31, 2024, Google Play requires all new app releases to target Android 14”).

So I don’t know how I will update my app after 31 August :grimacing:

Does anyone know how to fix or work around this?

It seems that support for SDK 34 in Meteor 2.16 was a bit of a hack: it uses cordova-android 12, which only supports up to SDK 33, as per Android Platform Guide - Apache Cordova

So we probably need a Meteor update to support cordova-android 13? Or otherwise we need to figure out how to update the “com.google.android.play:core:1.8.0 Maven dependency to an Android 14 compatible version”, as per the error message at the top of this post.

1 Like

This is the Meteor commit to update cordova-android from 10 to 12:

So I’m hoping that if I just change it to 13, it will work. I’ll probably try that tomorrow.

I have the same problem as you for 2 applications, and I can’t switch them to meteor 3 yet, I started but there is still a lot of work to do, I have 15 days left. and I have the message “com.google.android.play:core has reported core:1.7.3 as outdated.” if you find a solution I’m interested

Just to clarify: switching to Meteor 3 is not a solution since it also uses cordova-android 12.

I haven’t tested, but I expect it to generate the same errors.

It should be noted that google does an annual increase in the target SDK, which implies a constant effort for Meteor-Cordova in order to allow des/comanies deliver their apps in time.

Next year, people will likely face the same situation, then with SDK 35 and being on par with this should be a constant part of the Roadmap.

@hschmaiske

2 Likes

When running Meteor in dev mode for Cordova or building a native app, an Android project is generated, allowing you to update dependencies as needed. In dev mode it is located at .meteor/local/cordova-build/platforms/android. On build for production the android project artifacts at <build-output-directory>/android/project.

I recommend you open the project with Android Studio and locate where com.google.android.play:core:xxx is referenced, change it to com.google.android.play:core:1.10.3, build the project, and generate the store archives via Android Studio for later deployment to the store. IF you don’t have it installed, then you must add it instead within your build.gradle file. Could you try this?

Regarding the Meteor Cordova upgrade in Meteor core, we’ll prioritize it for the next 2 and 3 version, unless it’s urgent so we could serve it sooner. For now, let’s explore possible workarounds together.

Cordova is just a tool that generates Android/iOS projects for you prepared to run a web project, but you can then modify to suit your needs. A newer Cordova version prepares your project for recent updates, though you can also do this manually.

Let me know how it goes.

3 Likes

A side note, I am aware this only affects for the moment to new android apps being submitted, and any new update. Existing apps from Android 33 will still work. But really important to update them.

1 Like

I want to point out that cordova-android versions 12 and the current 13 are restricted to Node 16. While this hasn’t caused any breaking changes yet, it does trigger an annoying warning and might lead to issues in the future. Therefore, for Meteor 2 users, it might be wise to generate the project and update the Android project directly until you’re ready to migrate to Meteor 3, which will have direct compatibility.

When using Capacitor as the more modern web native solution, the common approach on use this tool is to generate your Android and iOS projects and include them in your git repository. This allows for post-update changes and enables Capacitor to handle some automation tasks for you as well. When integrating with Meteor, we’ll need to include the mobile projects in your git repository as static artifacts, as the new tool suggest us.

2 Likes

Hi Nacho,

I updated the Play core library in Android studio as you suggested, but I’m getting the same error:

Update your com.google.android.play:core:1.10.3 Maven dependency to an Android 14 compatible version! Your current com.google.android.play:core:1.10.3 library is incompatible with targetSdkVersion 34 (Android 14), which introduces a backwards-incompatible change to broadcast receivers. As a reminder, from August 31, 2024, Google Play requires all new app releases to target Android 14. Update to the latest library version dependency to avoid app crashes.

Screenshot:

There’s also a warning in Android Studio about it not working on the Play Store:

I read the following on PrĂ©sentation des bibliothèques Google Play Core  |  Android Developers :

Important: The Google Play Core Java and Kotlin library have been split into multiple separate libraries, one for each feature. Update to the new libraries to benefit from new product additions.

So it seems like com.google.android.play:core doesn’t exist in newer SDKs?

@graemian I don’t know if you use the cordova-in-app-update plugin, but for me by upgrading it to version cordova-in-app-update@2.0.3.
what is the list of your cordova plugins?

I just built an empty project and it uploads to Google Play without complaint - argh!!!

So it must be one of my plugins that depends on com.google.android.play:core. If remove or update it, my app should work too.

Sorry for false alarm everyone :see_no_evil:

FWIW I did actually try uploading an empty app before, but I forgot that I’d added my app’s dependencies to it.

I was surprised that even basic apps had issues on Android 34. The only thing I couldn’t confirm was the process of fully delivering a new app to the store.
When creating a new project with Meteor Cordova, com.google.android.play:core isn’t included by default. As another developer mentioned, this likely came from a Cordova plugin. Plugins need to stay up-to-date with changes, and as your app grows and you add more plugins, they require more attention.

Review your plugins, update them if newer versions are available, or contribute to their support for Android 34 if needed. And keep us updated on your research for a successful store deployment. This could provide insights for others using similar plugins.

Regardless, this doesn’t change the plan, we will deliver the official Cordova update in the next Meteor 3 release: Update Cordova dependency versions to the latest by StorytellerCZ · Pull Request #13239 · meteor/meteor · GitHub. In Meteor 2 in the 2.17 release when time comes to work on this release.

I don’t understand what you mean by this. My understanding is that the Cordova build process is supposed to run under Node 16, but if you use Meteor 2 the whole build process (including the Cordova part) will run under Node 14. This may cause problems.

If you use Android Studio to create your APK, you will still be using Cordova artifacts that were generated by a Cordova build run under Node 14. So you might still encounter issues?

Please could you clarify what is the safest way to build an Android SDK 34 APK using Meteor 2. Thanks!

My point here is that at some moment in the future for Meteor 2, it might be better to rely on the project artifacts generated by Cordova and keep a stable version in your repository of the android project files, rather than generating a new one each time you run the Meteor build command. This would allow you to iterate from that stable version when facing incompatibilities with newer Cordova versions, whether it’s Node scripts not compatible as not matching the right Node version or Cordova lagging behind an Android SDK update and requiring specific tweaks.

For now, this problem seems that doesn’t exist as discussed on this thread, so you can safely run the build command to generate the artifacts dynamically. However, as incompatibilities increase or if adjustments are needed post-build, adding the project artifacts to your repo could be a more practical approach.

Please could you clarify what is the safest way to build an Android SDK 34 APK using Meteor 2

In general, if you’ve successfully built and deployed a new app to the Android Store using Android SDK 34 without issues as you stated, it’s fine to continue using the existing method in Meteor for building Cordova apps. This means that you don’t need to tweak anything post-build.

For your app, and possibly others, the issue appears to be with a specific plugin that may have become outdated and needs updating. It doesn’t seem possible to resolve this with a post-build patch in your Android project.